Khi triển khai hệ thống Cassandra, việc thêm hay bớt nodes có thể xảy ra do nhiều nguyên nhân: cấu hình nhầm, hoặc bớt nodes để giảm tải cho cluster.
Thêm nodes vào Cassandra Cluster
Muốn thêm nodes vào Cassandra Cluster, bạn phải cài đặt trên nodes mới phiên bản Cassandra giống như phiên bản đang chạy trên Cluster.
Cụ thể các bước để thêm nodes vào Cassandra Cluster như sau:
Cài đặt Cassandra trên nodes mới:
Xem thêm: Cài đặt và cấu hình Cassandra trên Centos
Lưu ý không khởi động Cassandra sau khi cài đặt xong. Nếu lỡ khởi động bạn phải xóa sạch dữ liệu trước khi thêm vào cluster bằng lệnh:
rm -rf /var/lib/cassandra/*
Nếu sử dụng Ubuntu, sau khi cài xong Cassandra sẽ tự khởi động nên bạn cũng phải xóa sạch dữ liệu nhé.
Cấu hình file cassandra.yaml:
Trước khi chỉnh sửa file cassandra.yaml, bạn nên sao lưu một bản đề phòng:
# cp cassandra.yaml cassandra.yaml_org
Cần chú ý các mục sau trong file cassandra.yaml:
- auto_bootstrap: true – bootstrap là Tính năng kiểm soát khả năng tự động phân phối dữ liệu trong cluster khi một nút mới được chèn vào. Node mới tham gia cluster được xem là một nút rỗng không có dữ liệu. Mặc định trong file cassandra.yaml không có dòng này nhưng nếu có bạn phải thiết lập giá trị “true” hoặc xóa luôn dòng này
- cluster_name: Tên cluster mà muốn thêm nodes mới vào
- Listen_interface: địa chỉ IP của nodes mới
- listen_address/broadcast_address: không cấu hình
- endpoint_snitch: endpoint_snitch: GossipingPropertyFileSnitch (Giống các nodes trong cluster)
- num_tokens : 256 (Giống các nodes trong cluster)
- seeds: IP các seed nodes (Giống các nodes trong cluster)
Lưu ý: không liệt kê địa chỉ IP nodes mới vào seed nodes.
Sau khi cấu hình xong file cassandra.yaml, bạn nên dùng lệnh diff để kiểm tra sự khác nhau giữa file đã sao lưu và file đã cấu hình. Kiểm tra luôn sự khác nhau giữa file của nodes mới và các nodes đang chạy.
# diff cassandra.yaml cassandra.yaml_org
Khởi động cassandra trên nodes mới:
# <Install path>/bin/cassandra
Sử dụng công cụ nodetool status để kiểm tra nodes mới đã được thêm vào cluster thành công hay chưa. Nếu trạng thái UN tức là đã thêm node mới thành công.
# <Install path>/bin/nodetool status
Sau khi xác nhận thêm nodes mới thành công, chạy lệnh nodetool cleanup trên mỗi nodes cũ sử dụng câu lệnh này để loại bỏ những dữ liệu không cần thiết sau khi thêm một node vào trong cluster. Cassandra không tự động loại bỏ các dữ liệu từ những node đã mất khoảng phân vùng của chúng tới một node mới. Bước này sẽ tốn kha khá thời gian của bạn đấy.
# <Install path>/bin/nodetool cleanup -h hostname/IP keyspace
Xem thêm: Cassandra.yaml và nodetool có những gì?
Xóa nodes ra khỏi cluster
Nếu bạn muốn xóa bớt node để giảm tải cho cluster thì làm như sau:
Kiểm tra trạng thái node:
Sử dụng công cụ nodetool status kết quả trả về trạng thái node sẽ là UN = up, DN = down.
# <Install path>/bin/nodetool status
Xóa node
Nếu trạng thái của node là UN thực hiện lệnh:
# <Install path>/bin/nodetool decommission
Lệnh trên có tác dụng deactive một node bằng cách stream dữ liệu của nó tới node khác, để theo dõi quá trình trên sử dụng lệnh
# <Install path>/bin/nodetool netstats
Nếu trạng thái của node là DN:
- Nếu sử dụng vnode(node ảo) thực hiện lệnh:
# <Install path>/bin/nodetool removenode
- Nếu không dùng vnode thì bạn phải điều chỉnh token đến các node còn lại trước khi sử dụng lệnh nodetool removenode
- Nếu sử dụng lệnh nodetool removenode không thành công thì sử dụng lệnh nodetool assassinate để cưỡng chế xóa node khỏi cluster:
# <Install path>/bin/nodetool -h assassinate <ip_address>
Xem thêm: Kiến trúc mạng Cassandra
Trên đây là những hướng dẫn cơ bản về thêm, xóa nodes khi triển khai Cassandra, tùy theo điều kiện thực tế mà cách cấu hình có thể khác nhau, chúc các bạn thành công.
[quangcao1]
Thao khảo: datastax.com