Я пытаюсь настроить Cassandra в двух центрах обработки данных на виртуальных машинах Azure в качестве док-контейнеров.Я направлялся к руководству, расположенному здесь: https://gokhanatil.com/2018/02/build-a-cassandra-cluster-on-docker.html. Однако я не понимаю, что руководство, по-видимому, порождает узлы cas2 и cas3 на одной и той же виртуальной машине, несмотря на указание другого центра данных.Разве они физически не находились бы в том же месте, несмотря на требование другого центра обработки данных?
Я пытался запустить узел cas3 на другой виртуальной машине, указав публичный IP-адрес начального узла в первом центре данных.(CAS1).Я также внес в белый список публичные IP-адреса и порты Cassandra (7000, 7001, 7199, 9042, 9160, 9142) на обеих этих виртуальных машинах в пользовательском интерфейсе Azure, чтобы они могли видеть друг друга.
cas1 и cas2 были созданы наодна и та же виртуальная машина в качестве отдельных контейнеров, может видеть друг друга и оба работают, как говорится в руководстве:
admin@cassandra-1:~$ sudo docker exec -ti cas1 nodetool status
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN 172.17.0.3 295.15 KiB 256 49.2% c79d0871-d4a3-4735-a0e0-80304009989d rack1
UN 172.17.0.2 263.4 KiB 256 50.8% 5990e65d-9a69-4fe1-8879-100382f38349 rack1
cas3, который я порождаю на виртуальной машине в другом регионе, указав CASSANDRA_SEEDS, соответствующий внешнему IP-адресу Azure для cassandra-1, которую хранит VMумирает со следующей ошибкой:
Exception (java.lang.RuntimeException) encountered during startup: Unable to gossip with any peers
java.lang.RuntimeException: Unable to gossip with any peers
at org.apache.cassandra.gms.Gossiper.doShadowRound(Gossiper.java:1435)
at org.apache.cassandra.service.StorageService.checkForEndpointCollision(StorageService.java:566)
at org.apache.cassandra.service.StorageService.prepareToJoin(StorageService.java:823)
at org.apache.cassandra.service.StorageService.initServer(StorageService.java:683)
at org.apache.cassandra.service.StorageService.initServer(StorageService.java:632)
at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:388)
at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:620)
at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:732)
ERROR [main] 2019-03-28 21:01:19,890 CassandraDaemon.java:749 - Exception encountered during startup
java.lang.RuntimeException: Unable to gossip with any peers
at org.apache.cassandra.gms.Gossiper.doShadowRound(Gossiper.java:1435) ~[apache-cassandra-3.11.4.jar:3.11.4]
at org.apache.cassandra.service.StorageService.checkForEndpointCollision(StorageService.java:566) ~[apache-cassandra-3.11.4.jar:3.11.4]
at org.apache.cassandra.service.StorageService.prepareToJoin(StorageService.java:823) ~[apache-cassandra-3.11.4.jar:3.11.4]
at org.apache.cassandra.service.StorageService.initServer(StorageService.java:683) ~[apache-cassandra-3.11.4.jar:3.11.4]
at org.apache.cassandra.service.StorageService.initServer(StorageService.java:632) ~[apache-cassandra-3.11.4.jar:3.11.4]
at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:388) [apache-cassandra-3.11.4.jar:3.11.4]
at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:620) [apache-cassandra-3.11.4.jar:3.11.4]
at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:732) [apache-cassandra-3.11.4.jar:3.11.4]
INFO [StorageServiceShutdownHook] 2019-03-28 21:01:19,914 HintsService.java:209 - Paused hints dispatch
WARN [StorageServiceShutdownHook] 2019-03-28 21:01:19,914 Gossiper.java:1559 - No local state, state is in silent shutdown, or node hasn't joined, not announcing shutdown
INFO [StorageServiceShutdownHook] 2019-03-28 21:01:19,914 MessagingService.java:981 - Waiting for messaging service to quiesce
INFO [ACCEPT-/172.17.0.2] 2019-03-28 21:01:19,915 MessagingService.java:1336 - MessagingService has terminated the accept() thread
INFO [StorageServiceShutdownHook] 2019-03-28 21:01:23,224 HintsService.java:209 - Paused hints dispatch
Я использовал следующие команды для создания 2 контейнеров на первой виртуальной машине:
docker run --name cas1 -p 9042:9042 -e CASSANDRA_CLUSTER_NAME=cluster1 -e CASSANDRA_ENDPOINT_SNITCH=GossipingPropertyFileSnitch -e CASSANDRA_DC=datacenter1 -d cassandra
docker run --name cas2 -e CASSANDRA_SEEDS="$(docker inspect --format='{{ .NetworkSettings.IPAddress }}' cas1)" -e CASSANDRA_CLUSTER_NAME=cluster1 -e CASSANDRA_ENDPOINT_SNITCH=GossipingPropertyFileSnitch -e CASSANDRA_DC=datacenter1 -d cassandra
И следующую команду на 2-й виртуальной машине, где контейнерне удается соединитьсяустановка?