首页 文章

Cassandra与docker swarm,“无法查找主机cassandra-seed”

提问于
浏览
0

docker-compose.yaml

version: '3'
    services:  
      cassandra-seed:
        image: cassandra:latest
        deploy:
          replicas: 1
        ports:
          - "9042"
          - "7199"   
          - "9160"
          - "7000"
          - "7001"
        networks:
          default:
        volumes:
          - ./data:/var/lib/cassandra/data

      cassandra-node-1:
        image: cassandra:latest
        deploy:
          replicas: 1
        command: /bin/bash -c "echo 'Waiting for seed node' && sleep 120 && /docker-entrypoint.sh cassandra -f"
        environment:
          - "CASSANDRA_SEEDS=cassandra-seed"
        ports:
          - "9042"
          - "7199"   
          - "9160"
          - "7000"
          - "7001"

        networks:
          default:
        depends_on:
          - "cassandra-seed"

      cassandra-node-2:
        image: cassandra:latest
        deploy:
          replicas: 1
        command: /bin/bash -c "echo 'Waiting for seed node' && sleep 120 && /docker-entrypoint.sh cassandra -f"
        environment:
          - "CASSANDRA_SEEDS=cassandra-seed"
        depends_on:
          - "cassandra-seed"
        ports:
          - "9042"
          - "7199"   
          - "9160"
          - "7000"
          - "7001"
        networks:
          default:

    networks:
      default:
        external:
          name: cassandra-net
  • docker network create --scope swarm cassandra-net

  • 将所有节点添加到群集中

  • docker stack deploy --compose-file docker-compose.yml cassandra-cluster

WARN [main] 2018-02-01 21:32:07,965 SimpleSeedProvider.java:60 - 种子提供者无法查找宿主cassandra-seed

2 回答

  • 0
    - "CASSANDRA_SEEDS=cassandra-seed"
    

    这是您设置种子的地方 . cassandra docker image入口点期望此值为具有IP地址的逗号分隔列表 . 你必须以某种方式找到ips . 我建议阅读service discovery . 然后使用自定义入口点创建自己的docker镜像,您可以通过使用host命令解析dns来设置CASSANDRA_SEEDS . 您还可以为此目的创建自定义种子提供程序 .

  • 0

    我想你不应该写

    - "CASSANDRA_SEEDS=cassandra-seed"
    

    相反,试试这个:

    CASSANDRA_SEEDS: "cassandra-seed"
    

    而且,如果你想创建一个集群,你也必须使用"CASSANDRA_BROADCAST_ADDRESS" .

    例如:

    environment:
      CASSANDRA_BROADCAST_ADDRESS: cassandra-1
    

    引用:
    https://dzone.com/articles/swarmweek-part-1-multi-host-cassandra-cluster-with https://forums.docker.com/t/cassandra-on-docker-swarm/27923/3

相关问题