在 Cassandra 中启用 Thrift Docker
Enable Thrift in Cassandra Docker
我正在尝试启动运行 cassandra 的 docker 图像。我需要使用 thrift 与 cassandra 进行通信,但它看起来默认情况下是禁用的。查看 cassandra 日志显示:
INFO 21:10:35 Not starting RPC server as requested.
Use JMX (StorageService->startRPCServer()) or nodetool (enablethrift) to start it
我的问题是:启动此 cassandra 容器时如何启用 thrift?
我试过设置各种环境变量都无济于事:
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
不要忘记使用 run
命令公开 thrift 客户端 API 端口,以便能够从外部访问容器,例如:
docker run --name cs1 -d .... -p 9160:9160 cassandra
您可能还想公开更多端口,例如 CQL 端口 9042、JMX 端口 7199、节点间通信端口 7000 和 7001。
我在使用 Docker Cassandra 图像时遇到了同样的问题。您可以在 Github or on Docker hub 上使用我的 docker 容器,而不是默认的 Cassandra 图像。
问题是 cassandra.yaml 文件已将 start_rpc 设置为 false。我们需要改变它。为此,我们可以使用以下 Docker 文件(这是我的图像所做的):
FROM cassandra
RUN sed -i 's/^start_rpc.*$/start_rpc: true/' /etc/cassandra/cassandra.yaml
不再需要 sed
解决方法(以及仅启用此行为的后续自定义 Dockerfile)。
较新的 official Docker containers 支持使用 -e
标志的 CASSANDRA_START_RPC
环境变量。例如:
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
我正在尝试启动运行 cassandra 的 docker 图像。我需要使用 thrift 与 cassandra 进行通信,但它看起来默认情况下是禁用的。查看 cassandra 日志显示:
INFO 21:10:35 Not starting RPC server as requested.
Use JMX (StorageService->startRPCServer()) or nodetool (enablethrift) to start it
我的问题是:启动此 cassandra 容器时如何启用 thrift?
我试过设置各种环境变量都无济于事:
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
不要忘记使用 run
命令公开 thrift 客户端 API 端口,以便能够从外部访问容器,例如:
docker run --name cs1 -d .... -p 9160:9160 cassandra
您可能还想公开更多端口,例如 CQL 端口 9042、JMX 端口 7199、节点间通信端口 7000 和 7001。
我在使用 Docker Cassandra 图像时遇到了同样的问题。您可以在 Github or on Docker hub 上使用我的 docker 容器,而不是默认的 Cassandra 图像。
问题是 cassandra.yaml 文件已将 start_rpc 设置为 false。我们需要改变它。为此,我们可以使用以下 Docker 文件(这是我的图像所做的):
FROM cassandra
RUN sed -i 's/^start_rpc.*$/start_rpc: true/' /etc/cassandra/cassandra.yaml
不再需要 sed
解决方法(以及仅启用此行为的后续自定义 Dockerfile)。
较新的 official Docker containers 支持使用 -e
标志的 CASSANDRA_START_RPC
环境变量。例如:
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