2015-01-05 17 views
8

Tôi đã thiết lập hai máy chủ để chạy cả Cassandra bằng cách làm theo tài liệu trong trang web DataStax. thiết lập hiện tại của tôi là để cóCassandra hai nút với dự phòng

1 nút hạt (cấu hình trong cả yamls)

Khi chạy, cả hai nút là lên (khi kiểm tra qua nodetool) và cả hai dường như đã dữ liệu lặp lại một cách chính xác nhưng Tôi đã nhận thấy rằng khi tôi đưa xuống nút hạt giống, nút kia không cho phép các kết nối máy khách (không thông qua API của họ hoặc bằng cách kết nối với cqlsh), đó là một vấn đề.

Yêu cầu của tôi là có hai máy chủ là bản sao hoàn hảo của nhau và trong trường hợp một máy chủ tạm thời ngừng hoạt động (do lỗi không gian đĩa), máy chủ khác có thể tiếp nhận yêu cầu cho đến khi máy chủ bị hỏng quay lại Trực tuyến.

Với requriement này, tôi có câu hỏi sau:

  1. Tôi có cần phải cài đặt cả hai nút như nút "hạt giống"?
  2. Làm cách nào để đảm bảo mọi thứ được sao chép trên cả hai máy chủ? Điều này xảy ra tự động hay có một số thiết lập ở đâu đó tôi cần phải thiết lập?

Nhiều cảm ơn trước,

Trả lời

16

Cassandra không làm sao chép master-slave. Không có chủ trong cassandra. Thay vào đó, dữ liệu được phân phối trên cụm. Cơ chế phân phối phụ thuộc vào một số thứ.

Dữ liệu được lưu trữ trên các nút trong phân vùng. Hãy nhớ rằng cassandra là một cửa hàng hàng được phân đoạn? Đó là nơi các phân vùng đến. Dữ liệu được lưu trữ trong các phân vùng. Tất cả các hàng cho một phân vùng được lưu trữ cùng nhau trong một nút duy nhất (và bản sao). Có bao nhiêu bản sao phụ thuộc vào yếu tố nhân bản của bảng. Nếu hệ số nhân bản là 3 cho một bảng, mỗi phân vùng cho bảng đó (và như vậy, tất cả các hàng trong phân vùng đó) được lưu trữ trong hai bản sao bổ sung. Nó giống như nói - "Tôi muốn 3 bản sao của dữ liệu này".

Trong khi viết, khách hàng có thể chỉ định mức độ nhất quán (CL). Đây là số lượng các nút phải thừa nhận để viết thành công. Khách hàng cũng có thể chỉ định một CL để đọc. Các vấn đề Cassandra đọc các yêu cầu tới n = các nút CL và nhận giá trị gần đây nhất là kết quả truy vấn.

Bằng cách điều chỉnh đọc và ghi CL, bạn kiểm soát tính nhất quán. Nếu đọc CL + Write CL> Nhân tố nhân rộng (RF), bạn sẽ có được sự nhất quán hoàn toàn.

Về mặt khả năng chịu lỗi, bạn có thể chỉnh sửa CL và RF thành những gì bạn cần. Ví dụ, nếu bạn có RF = 3, Đọc CL = 2, Viết CL = 2, sau đó bạn có đầy đủ nhất quán, và bạn có thể chịu đựng được một nút đi xuống. Đối với RF = 5, Đọc CL = 3, Viết CL = 3, bạn có cùng, nhưng có thể chịu được 2 nút đi xuống.

Cụm hai nút, không thực sự là một ý tưởng hay. Bạn có thể đặt RF = 2 (tất cả dữ liệu được nhân bản), viết CL = 2 và đọc CL = 1. Tuy nhiên, điều này có nghĩa là nếu nút bị hỏng, bạn chỉ có thể đọc nhưng không viết. Bạn có thể thiết lập đọc CL = 2 và viết CL = 1, trong trường hợp đó, nếu một nút đi xuống, bạn có thể viết nhưng không đọc. Thực tế, bạn nên sử dụng ít nhất 5 nút (ít nhất 4) với RF = 3. Bất kỳ thấp hơn đó, và bạn đang yêu cầu cho sự cố.

+0

Tôi nên thêm điều đó với 2 nút, bạn CÓ THỂ làm RF = 2, Đọc CL = 1 và Viết CL = 1; tuy nhiên, điều đó có nghĩa là bạn có thể đọc dữ liệu cũ cho đến khi nó được sao chép sang nút kia.Nó sẽ cho phép bạn đọc và viết nếu chỉ có một nút là trực tiếp, nhưng bạn đang hy sinh tính nhất quán. – ashic

+0

Cảm ơn bạn rất nhiều vì câu trả lời của bạn. Lời giải thích tuyệt vời. Một câu hỏi cuối cùng, nếu tôi chọn 2 nút với Read/Write CL = 1 (tôi biết nó không tốt nhưng tôi chỉ có 2 máy chủ theo ý của tôi trong giai đoạn Beta của tôi và sẽ chỉ có thể thêm nhiều máy chủ sau này), tôi sẽ cần phải đặt cả hai nút là "hạt giống" để trong trường hợp một nút/máy chủ đi xuống, kết nối vẫn có thể? – kha

+0

Hạt giống không * quan trọng. Đó là địa chỉ bạn cung cấp cho khách hàng giả định rằng các nút hạt giống sẽ ổn định. Máy khách sẽ kết nối với một hạt giống và nhận thông tin về phần còn lại của cụm. Sau đó nó sẽ kết nối với bất kỳ nút nào trong cụm cho các giao dịch. Nếu bạn không chỉ định hạt giống, thông tin có thể lan truyền thông qua tin đồn. Nếu bạn yêu cầu khách hàng của mình kết nối với không phải hạt giống, nó không thực sự gây ra vấn đề cho thiết lập hai nút của bạn. Nếu bạn đánh dấu cả hai là hạt giống, nếu một khách hàng kết nối với một và nó xuống, nó sẽ kết nối với nhau. Tôi đánh dấu cả hai là hạt giống. – ashic

Các vấn đề liên quan