2017-09-02 97 views
0

我期待設置開發測試環境,雖然我已經安裝了很多東西,但是我很難從主機(運行Visual Studio)連接到Docker中的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,一切都按我的預期工作。當我去添加另一個節點時,問題就出現了。

我已經嘗試了很多方法,但似乎它們都以第二個音符開始,然後退出並且從未加入羣集結束。如果我在設置tnode1時忽略了CASSANDRA_BORADCAST_ADDRESS,那麼羣集可以工作,但我無法從Visual Studio中獲取它。

第二個節點(綜合信息)

搬運工檢查-f '{{.NetworkSettings.IPAddress}}' tnode1 回報172.17.0.2 泊塢窗的exe - 它tnode1 nodetool狀態 有該地址爲10.0 .75.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 結果:運行nodetool狀態不顯示tnode2 ...正在運行docker ps -a shows「已退出(3)30秒前」用於狀態

第二節點(嘗試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 結果:運行nodetool狀態不顯示tnode2 ...正在運行docker ps -a shows「已退出(3)28秒前」的狀態

看來,如果種子值未連接,然後將新節點停止作爲一個結果。同樣,如果我取出廣播地址,節點創建工作,但我無法從主機連接;我試圖在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謝謝,這是我最初對所有羣集所做的,但後來我無法從主機(Visual Studio /代碼實例所在的地方)連接到它...所以我添加了廣播標誌以獲取那連接工作和我失去了連接節點的能力......所以它看起來很接近;只需要知道節點在哪裏/如何指向,以便它們都可以看到對方,並且我可以從外部連接 – ChrisHDog

回答

1

以下compose cluster definition適合我,我可以從Docker主機連接到cqlsh並運行test cql

內存從默認的1.5G下調,每次啓動一個新節點時,由於Docker虛擬機中缺少內存,前一個節點會退出。

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 
相關問題