2015-07-24 18 views
9

Tôi đang cố gắng khởi động hình ảnh docker chạy cassandra. Tôi cần phải sử dụng tiết kiệm để giao tiếp với cassandra, nhưng có vẻ như nó bị tắt theo mặc định. Kiểm tra ra các bản ghi cassandra cho thấy:Bật Tiết kiệm trong Cassandra Docker

INFO 21:10:35 Not starting RPC server as requested. 
    Use JMX (StorageService->startRPCServer()) or nodetool (enablethrift) to start it 

Câu hỏi của tôi là: làm thế nào tôi có thể cho phép tiết kiệm khi khởi động chứa cassandra này?

Tôi đã cố gắng để thiết lập biến môi trường khác nhau để avail không có:

docker run --name cs1 -d -e "start_rpc=true" cassandra 
docker run --name cs1 -d -e "CASSANDRA_START_RPC=true" cassandra 
docker run --name cs1 -d -e "enablethrift=true" cassandra 
+1

Rõ ràng, máy chủ tiết kiệm RPC đã được vô hiệu hóa từ Cassandra 2.2, bạn cần phải thiết lập start_rpc = true, nodetool enablethrift cho các phiên bản mới hơn để khách hàng có thể sử dụng tiết kiệm. https://issues.apache.org/jira/browse/CASSANDRA-9319 – kisna

Trả lời

11

Tôi đã gặp sự cố tương tự với hình ảnh Docker Cassandra. Bạn có thể sử dụng vùng chứa docker của tôi trên Github hoặc trên Docker hub thay vì hình ảnh Cassandra mặc định.

Vấn đề là tệp cassandra.yaml có start_rpc được đặt thành false. Chúng ta cần phải thay đổi điều đó. Để làm được điều đó chúng ta có thể sử dụng Dockerfile sau (đó là những gì hình ảnh của tôi không):

FROM cassandra 
RUN sed -i 's/^start_rpc.*$/start_rpc: true/' /etc/cassandra/cassandra.yaml 
+1

THANKS! Tôi gặp vấn đề tương tự. Nhưng thay vì sử dụng ngã ba của bạn (có khả năng cuối cùng sẽ bị bỏ rơi :-(), tôi chỉ đơn giản chạy 'docker exec -it cass1 sed -i 's/^ start_rpc. * $/Start_rpc: true /'/etc/cassandra/cassandra.yaml' sau khi chạy các thùng chứa chính thức. Điều đó hoạt động quá! –

+0

@ h3nrik câu trả lời là chính xác hơn – alessiop86

2

Đừng quên để lộ các cổng API tiết kiệm của khách hàng với lệnh run để có thể truy cập vào các container từ bên ngoài như:

docker run --name cs1 -d .... -p 9160:9160 cassandra 

Bạn cũng có thể muốn hiển thị thêm các cổng, như cổng CQL 9042, cổng 7199 cho JMX, cổng 7000 và 7001 để liên lạc nội bộ.

19

Các sed workaround (và Dockerfiles tùy chỉnh tiếp theo cho phép chỉ hành vi này) là không còn cần thiết.

Mới hơn official Docker containers hỗ trợ biến số CASSANDRA_START_RPC môi trường sử dụng cờ -e. Ví dụ:

docker run --name cassandra1 -d -e CASSANDRA_START_RPC=true -p 9160:9160 -p 9042:9042 -p 7199:7199 -p 7001:7001 -p 7000:7000 cassandra 
+6

Đây là câu trả lời đúng nhất – alessiop86

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