3

私は、Docker で Cassandra を実行するための R&D タスクを与えられました。XUbuntu 14.04.2 64 ビット (Windows7 32 ビット OS の VirtualBOX にインストール) で作業しています。

Docker on UbuntuPokle cassandraのチュートリアルで説明されている手順に従っていましたが、nodetool を使用して特定のノードのステータスを確認しようとすると、 ConnectExceptionが発生しました。

以下は、私が行った手順のリストです。

asela@teamlk:~$ docker run -d --name cass1 poklet/cassandra start
7b2ddfb60adf1c270a425c4440fe263e1fe56f5dc1c3205372bee3b8626e0624

asela@teamlk:~$ docker run -d --name cass2 poklet/cassandra start $(/data/cassandra/scripts/ipof.sh cass1)
4f98a194214e603242279226bb94cee20774058e84b6d0171a8d14d648e19016

asela@teamlk:~$ docker run -d --name cass3 poklet/cassandra start $(/data/cassandra/scripts/ipof.sh cass1)
394f9ce918121c0b79ed8282ba95c8f1badd4e3536d4ad3f24c4c21651e50b3c

asela@teamlk:~$ docker ps
CONTAINER ID        IMAGE                     COMMAND              CREATED              STATUS              PORTS                                                                      NAMES
394f9ce91812        poklet/cassandra:latest   "start 172.17.0.1"   6 seconds ago        Up 3 seconds        22/tcp, 7000-7001/tcp, 7199/tcp, 8012/tcp, 9042/tcp, 9160/tcp, 61621/tcp   cass3               
4f98a194214e        poklet/cassandra:latest   "start 172.17.0.1"   31 seconds ago       Up 29 seconds       22/tcp, 7000-7001/tcp, 7199/tcp, 8012/tcp, 9042/tcp, 9160/tcp, 61621/tcp   cass2               
7b2ddfb60adf        poklet/cassandra:latest   "start"              About a minute ago   Up About a minute   22/tcp, 7000-7001/tcp, 7199/tcp, 8012/tcp, 9042/tcp, 9160/tcp, 61621/tcp   cass1               

asela@teamlk:~$ docker run -i -t poklet/cassandra nodetool -h $(/data/cassandra/scripts/ipof.sh cass1) status
nodetool: Failed to connect to '172.17.0.1:7199' - ConnectException: 'Connection refused'.

ifconfigは、Docker が 172.17.42.1 で実行されていることを示しています

設定を見逃していたり​​、何か間違ったことをしたりした場合は、誰か教えてもらえますか?

4

5 に答える 5

6

Fedora 22 を使用していますが、Ubuntu で動作しない理由がわかりません。

私はまったく同じ問題を抱えていましたが、次のコマンドがうまくいきました:

docker exec cass-1 nodetool status

cass1は cassandra ノードの docker コンテナーの名前であり、IP アドレスの代わりに使用されることに注意してください。

私の出力:

Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address      Load       Tokens  Owns (effective)  Host ID                               Rack
UN  172.17.0.14  51.6 KB    256     100.0%            3dec79f4-4a6f-46e6-b4d5-14b8f56b6c13  rack1
于 2015-07-13T10:18:31.210 に答える
3

少し遅れましたが、ここにいくつかの洞察があります:

Docker コンテナーを開始する場合は、ポートを外部にマップするか、コンテナーを相互にリンクする必要があります。

ポート マッピングは、Docker コンテナーの開始時に -p パラメーターによって実行されます。ドキュメントはhttps://docs.docker.com/articles/networking/にあります。

コンテナーのリンクは --link パラメーターで行われ、リンクされた両方のコンテナーが同じホストで実行されているかのように機能します。ドキュメント: https://docs.docker.com/userguide/dockerlinks/

サンプルを機能させる (IP で他のコンテナーにアクセスする) には、ポートを公開する必要があります。カサンドラの場合、これは

-p 7000:7000 -p 9160:9160 -p 9042:9042 -p 7199:7199

参考までに、これは Cassandra クラスターを開始するために 2 つの物理ホストで実行するコマンドです。ポート マッピングのため、ホストごとに 1 つのインスタンスしか開始できません。(コンテナーをコマンドラインから切り離すには、-d スイッチを追加する必要があります)

docker run --rm --name cassandra-`hostname \
  -v /data/cassandra/projectname:/var/lib/cassandra/data \
  -e CASSANDRA_CLUSTER_NAME=project-database 
  -e CASSANDRA_BROADCAST_ADDRESS=`hostname` 
  -p 7000:7000 -p 9160:9160 -p 9042:9042 -p 7199:7199 \
  -e CASSANDRA_SEEDS=<ip_of_host1>,<ip_of_host2>
  cassandra:2.2.1
于 2015-11-02T12:49:45.237 に答える