如何使用Docker Desktop for Windows从主机连接到Cassandra

问题描述 投票:0回答:1

我正在设置一个开发测试环境,虽然我有大部分设置,但我很难从主机(运行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 ...正在运行docker ps -a显示“退出(3)30秒前”状态

第二节点(尝试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显示“已退出(3)28秒前”状态

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

任何帮助将不胜感激。

docker cassandra docker-for-windows docker-desktop
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.