使用Docker Swarm的Cassandra集群 - 从外部访问

时间:2017-07-27 08:10:59

标签: docker proxy cassandra load-balancing docker-swarm

我有一个使用docker swarm模式并使用覆盖网络运行的cassandra集群/服务。我需要我的应用程序从覆盖网络外部访问cassandra数据库。应用程序应该能够直接访问任何cassandra节点。是否有任何解决方案可以帮助实现这一目标?

我试着docker-flow-proxy,但我无法实现目标。这是我试过的。

创建了cassandra集群......

sudo docker service create -e CASSANDRA_SEEDS=192.168.0.3 --detach=false --network overlay-net --network proxy --replicas 5  --name cassclu bitnami/cassandra

启动了docker-flow-proxy容器......

sudo docker service create --name proxy --detach=false -p 80:80     -p 443:443  -p 9042:9042 -p 9160:9160   -p 8080:8080     --network proxy     -e MODE=swarm     vfarcic/docker-flow-proxy

配置代理....

sudo curl "192.168.1.76:8080/v1/docker-flow-proxy/reconfigure?reqMode=tcp&serviceName=cassclu&servicePath.1=/&port.1=9042&srcPort.1=9042&&servicePath.2=/&port.2=9160&srcPort.2=9160"

但是当我尝试使用cqlsh测试从主机上访问时,我收到以下错误

cqlsh -u cassandra
Password:
Connection error: ('Unable to connect to any servers', {'127.0.0.1': error(111, "Tried connecting to [('127.0.0.1', 9042)]. Last error: Connection refused")})

更新:发现问题正在发生,因为当docker容器启动时,cassandra节点已经离开了cassandra集群。

有没有办法让docker swarm知道cassandra状态,以便请求不会被路由到cassandra节点,这个节点已经关闭了?

0 个答案:

没有答案