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 回答
这是您设置种子的地方 . cassandra docker image入口点期望此值为具有IP地址的逗号分隔列表 . 你必须以某种方式找到ips . 我建议阅读service discovery . 然后使用自定义入口点创建自己的docker镜像,您可以通过使用host命令解析dns来设置CASSANDRA_SEEDS . 您还可以为此目的创建自定义种子提供程序 .
我想你不应该写
相反,试试这个:
而且,如果你想创建一个集群,你也必须使用"CASSANDRA_BROADCAST_ADDRESS" .
例如:
引用:
https://dzone.com/articles/swarmweek-part-1-multi-host-cassandra-cluster-with https://forums.docker.com/t/cassandra-on-docker-swarm/27923/3