在Cassandra Docker中启用Thrift

我试图启动一个运行cassandra的docker镜像。 我需要使用节俭与cassandra进行交stream,但是看起来这是默认禁用的。 检查cassandra日志显示:

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

我的问题是:在启动这个cassandra容器时如何使节俭成为可能?

我试图设置各种环境variables无济于事:

 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 

我一直在与Docker Cassandra图片有同样的问题。 您可以在Github或Docker集线器上使用我的Docker容器,而不是默认的Cassandra图像。

问题是cassandra.yaml文件的start_rpc设置为false。 我们需要改变这一点。 要做到这一点,我们可以使用下面的Dockerfile(这是我的形象):

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

sed解决方法(以及仅启用此行为的后续自定义Docker文件)不再是必需的。

较新的官方Docker容器支持使用-e标志的CASSANDRA_START_RPC环境variables。 例如:

 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 

不要忘记使用run命令公开节俭的客户端API端口,以便能够从外部访问容器,如:

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

您可能还想要公开更多端口,例如CQL端口9042,JMX的端口7199,端口7000和7001以进行节点间通信。