web-dev-qa-db-ja.com

Cassandra DockerでThriftを有効にする

Cassandraを実行するDockerイメージを起動しようとしています。 cassandraと通信するにはthriftを使用する必要がありますが、デフォルトでは無効になっているようです。 cassandraログをチェックアウトすると、次のことがわかります。

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

私の質問は、このcassandraコンテナを開始するときに節約を有効にするにはどうすればよいですか?

私はさまざまな環境変数を役に立たないように設定しようとしました:

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
12
cscan

Docker Cassandra imageで同じ問題が発生しています。代わりに 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 
14
JimTheDev

sed回避策(およびこの動作のみを有効にする後続のカスタムDockerfiles)は不要になりました。

新しい 公式DockerコンテナCASSANDRA_START_RPCフラグを使用して-e環境変数をサポートします。例えば:

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
26
Les Hazlewood

runコマンドを使用してthriftクライアントAPIポートを公開し、次のように外部からコンテナーにアクセスできるようにすることを忘れないでください。

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

また、CQLポート9042、JMXのポート7199、ノード間通信のポート7000および7001など、より多くのポートを公開することもできます。

2
h3nrik