0

我正在寻找一个开发测试环境,虽然我已经完成了大部分设置,但我很难从主机(运行 Visual Studio)连接到 docker 中的 Cassandra 集群(使用Docker Desktop for Windows)。我猜我只是弄乱了配置设置和/或缺少设置;但无法确定如何使这项工作(它确实适用于单个节点;只是不是多个节点,这是我想要使用的)

我有什么设置:

docker run --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 cassandra

我也尝试过使用 -p 开关

docker run --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 cassandra

如果我将数据放入其中,然后从 Visual Studio 连接到 10.0.75.2,这似乎是可行的,一切都按我的预期工作。当我去添加另一个节点时,问题就来了。

我尝试了多种方法,但似乎它们都以第二个音符启动然后退出并且从未加入集群而告终。如果我在设置 tnode1 时遗漏了 CASSANDRA_BORADCAST_ADDRESS,那么集群可以工作,但我无法从 Visual Studio 访问它。

第二节点(一般信息)

docker inspect -f '{{ .NetworkSettings.IPAddress }}' tnode1 返回 172.17.0.2 docker exe -it tnode1 nodetool status 的地址为 10.0.75.2

第二个节点(尝试 1)

docker run --name tnode2 -d -e CASSANDRA_CLUSTER_NAME=tcluster -e CASSANDRA_DC=TDC1 -e CASSANDRA_RACK=TRAC1 -e CASSANDRA_SEEDS=172.17.0.2 ca ssandra 结果:运行 nodetool 状态不显示 tnode2 ... running docker ps -a状态显示“Exited (3) 30 seconds ago”

第二个节点(尝试 2)

docker run --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状态显示“Exited (3) 28 seconds ago”

似乎种子值没有连接,然后新节点因此停止。同样,如果我取出广播地址,则节点创建工作,但我无法从主机连接;我尝试在创建 tnode1 时添加侦听器地址和 -p 参数,但结果相似。

任何帮助将不胜感激。

4

1 回答 1

1

以下compose 集群定义对我有用,我可以从 Docker 主机连接 cqlsh 并运行测试 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
于 2017-09-05T02:36:21.423 回答