2014-09-19 22 views
6

Tôi có một cụm nhỏ hầu như trống. Thông thường, nodetool removenode hoàn thành theo thứ tự 10 giây. Tuy nhiên, tôi hiện đang có một loại bỏ nút trong quá trình đó là lấy 10s phút và dường như không thực hiện bất kỳ tiến bộ. Yêu cầu bổ sung để xóa nút bị từ chối vì đã có quá trình xóa. Làm cách nào tôi có thể khắc phục sự cố này? Để tham khảo, đây là sản phẩm để nodetool status:nodetool removenode bị kẹt trong khi xóa

Status=Up/Down 
|/ State=Normal/Leaving/Joining/Moving 
-- Address   Load  Tokens Owns Host ID        Rack 
DL 192.168.12.207 152.14 KB 256  32.2% 683d8351-c625-4d7f-99cc-61f6b73b0c56 rack1 
UN 192.168.12.205 215.21 KB 256  37.2% b66d5fff-ef1d-4fbf-a49a-43709df99a0c rack1 
UN 192.168.12.208 148.09 KB 256  30.6% 39b54771-59b8-49f7-8db8-9cf4523d6c8d rack1 

Ngoài ra, cassandra không chạy trên máy chủ 207 (host để lại), nhưng đang chạy trên hai máy chủ khác.

EDIT: Có vẻ như có ít nhất một chiếc thẻ đó là bị mắc kẹt sao chép chờ:

$ nodetool removenode status 
RemovalStatus: Removing token (-9037887679483580088). Waiting for replication confirmation from [/192.168.12.205]. 
+0

Bạn có thực hiện sửa chữa nodetool trước không? –

+0

Không, đó có phải là tùy chọn không? Điều này đã làm việc nhiều lần cho tôi trong quá khứ mặc dù không chạy sửa chữa nodetool mà không cần chạy vào vấn đề này. Tại sao điều này dẫn đến thất bại rời rạc? – jonderry

+0

BTW, [hướng dẫn] này (http://www.datastax.com/documentation/cassandra/2.0/cassandra/operations/ops_remove_node_t.html), đề xuất chạy 'sửa chữa', tiếp theo là' ngừng hoạt động', theo sau là 'removeenode' , có vẻ không chính xác. Việc chạy 'nodetool decommission' sẽ xuất hiện để loại bỏ nút, để lại' removeenode' moot. Tôi đã chọn sử dụng một chuỗi các bước khác nhau liên quan đến việc chạy 'removeenode', điều này cũng yêu cầu đưa cassandra xuống trên máy trước. – jonderry

Trả lời

7

Không biết phiên bản nào của Cassandra là một với vấn đề. Nhưng, nếu nodetool removenode không hoạt động, theo Apache Cassandra Wiki, bạn nên thử cách sau:

Removenode

Loại bỏ một nút mà không thể chất tồn tại nữa được thực hiện trong hai bước sau:

bin/nodetool removenode <UUID> 

    bin/nodetool removenode force 

Lệnh đầu tiên sẽ chặn vĩnh viễn nếu máy tính được gắn với UUID đó là bị loại bỏ vật lý (hoặc không chạy Cassandra nữa). Chỉ cần nhấp vào Ctrl-C sau một hoặc hai giây trước khi chạy lệnh thứ hai. Rõ ràng, tốt hơn hết là ngừng hoạt động đầu tiên một nút nếu có thể hoặc bạn có thể mất một số dữ liệu của mình.

Lệnh "bin/nodetool status" hiển thị UUID của các nút của bạn.

Hy vọng điều đó sẽ hữu ích.

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