2017-09-02 3 views
0

私は開発テスト環境を設定したいと思っていますが、大部分は設定している間に(Visual Studioを実行している)ホストマシンからの接続に問題があります。ドッカーのCassandraクラスタ(Docker for Windowsを使用)。私はちょうど設定の設定を間違っていると思っています。しかし、(それは単一ノードのための作業を行い、だけではない複数のノード、私が一緒に仕事したいものである)、この作品を作る方法を決定することはできませんDocker for Windowsを使用してホストからCassandraに接続するには

を私はセットアップ持っているもの:

ドッキングウィンドウの実行 - -name tnode1 -d -e CASSANDRA_CLUSTER_NAME = tcluster -e CASSANDRA_DC = TDC1 -e CASSANDRA_RACK = TRAC1 -e CASSANDRA_BROADCAST_ADDRESS = 10.0.75.2 -e CASSANDRA_ENDPOINT_SNITCH = GossipingPropertyFileSnitchカサンドラ

私はまた、-pスイッチ

で試してみました

ドッキングウィンドウの実行--name tnode1 -d -p 9042:9042 -e CASSANDRA_CLUSTER_NAME = tcluster -e CASSANDRA_DC = TDC1 -e CASSANDRA_RACK = TRAC1 -e CASSANDRA_BROADCAST_ADDRESS = 10.0.75.2 -e CASSANDRA_ENDPOINT_SNITCH = GossipingPropertyFileSnitchカサンドラ

これはデータを入れてからVisual Studioから10.0.75.2に接続すればうまくいくと思われますが、すべてが期待通りに機能します。この問題は、別のノードを追加するときに発生します。

私はいくつかの方法を試しましたが、2つめのノートが起動して終了してからクラスタに参加しないように思われます。 tnode1を設定するときにCASSANDRA_BORADCAST_ADDRESSを省略すると、クラスタは機能しますが、Visual Studioからは取得できません。

2番目のノード(一般情報)

ドッカー-f検査 '{{.NetworkSettings.IPAddress}}' tnode1 戻り172.17.0.2ドッカーEXE -it tnode1 nodetoolステータス 10.0としてアドレスを有します.75.2

2番目のノード(試行1)

ドッキングウィンドウの実行--name tnode2 -d -e CASSAND RA_CLUSTER_NAME = tcluster -e CASSANDRA_DC = TDC1 -e CASSANDRA_RACK = TRAC1 -e CASSANDRA_SEEDS = 172.17.0.2 ca ssandra 結果:runnodetoolのステータスにtnode2が表示されない... dockerを実行していますps -a shows "Exited(3)30 seconds前」ステータスの

2番目のノード(試行2)

ドッキングウィンドウの実行--name tnode2 -d -e CASSANDRA_CLUSTER_NAME = tcluster -e CASSANDRA_DC = TDC1 -e CASSANDRA_RACK = TRAC1 -e CASSANDRA_SEEDS = 10.0 .75.2 ca ssandra 結果:runnodetoolのステータスにtnode2が表示されない... dockerを実行していますps -a shows "Exited(3)28 seconds前の状態 "

シード値が接続されておらず、結果として新しいノードが停止しているようです。繰り返しますが、ブロードキャストアドレスを取り出すと、ノードの作成は機能しますが、ホストマシンからは接続できません。私はリスナーのアドレスとtnode1の作成に-pパラメーターを追加しようとしましたが、同様の結果です。

ご協力いただければ幸いです。

+0

クラスタに接続する方法を知っていれば、すべてのブロードキャストアイテムを削除できます。私がそれをして、10.0.75.2または127.0.0.1または172.17.0.2を試してみると、それらはすべてNoHostAvailableExceptionで失敗し、その後離れて接続を可能にするブロードキャストを入れます。 – ChrisHDog

+0

これはcassandra特有のものではありませんが、クラスタを作成する場合は、[ユーザー定義ネットワーク](https://docs.docker.com/engine/userguide/networking/#user-defined-networks)でノードを実行する方が一般的に簡単です。物理的なネットワーク上でのように、Dockerを介さずにすべて通信することができます。クラスタの[docker compose v2 + definition](https://docs.docker.com/compose/compose-file/)を使用すると、デフォルトでネットワークが設定されます。 – Matt

+0

@Mattありがとう、それは私がすべてのクラスターのために最初に持っていたものでしたが、次にホストマシン(ビジュアルスタジオ/コードインスタンスがあったところ)から接続できませんでした。その接続作業と、それを使ってノードを接続する機能が失われたので、近いと思われます。彼らがすべて互いに見えるようにノードを指す場所と方法を知る必要があり、私は外部から接続することができます – ChrisHDog

答えて

1

次のcompose cluster definitionが動作します.Dockerホストからcqlshに接続し、test cqlを実行できます。

新しいノードを起動するたびに、デフォルトの1.5Gからメモリが調整されます。以前のノードはDocker VMのメモリ不足のために終了します。

version: "2.1" 

services: 
    cassandra-1: 
    image: cassandra 
    environment: 
     CASSANDRA_CLUSTER_NAME: tcluster 
     CASSANDRA_DC: TDC1 
     MAX_HEAP_SIZE: 600M 
     HEAP_NEWSIZE: 100M 
    ports: 
     - '9042:9042' 
     - '9160:9160' 
    networks: 
     cassclus: 
     ipv4_address: 10.0.75.11 

    cassandra-2: 
    image: cassandra 
    environment: 
     CASSANDRA_CLUSTER_NAME: tcluster 
     CASSANDRA_DC: TDC1 
     CASSANDRA_SEEDS: 10.0.75.11 
     MAX_HEAP_SIZE: 600M 
     HEAP_NEWSIZE: 100M 
    networks: 
     cassclus: 
     ipv4_address: 10.0.75.12 

    cassandra-3: 
    image: cassandra 
    environment: 
     CASSANDRA_CLUSTER_NAME: tcluster 
     CASSANDRA_DC: TDC1 
     CASSANDRA_SEEDS: 10.0.75.11 
     MAX_HEAP_SIZE: 600M 
     HEAP_NEWSIZE: 100M 
    networks: 
     cassclus: 
     ipv4_address: 10.0.75.13 

networks: 
    cassclus: 
    driver: bridge 
    ipam: 
     driver: default 
     config: 
     - subnet: 10.0.75.0/24 
      gateway: 10.0.75.1 
関連する問題