在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以进行节点间通信。