У меня два контроллера под управлением Debian Linux.
Я хочу поддерживать базу данных Hot Standby на этих двух контроллерах.
В любой момент времени один контроллер будет активным, а другой -
быть горячим резервированием, т.е. если активный контроллер перезапущен / удален / остановлен, резервный контроллер станет активным.
Я хочу, чтобы база данных (neo4j) присутствовала на обоих контроллерах (то есть в активном и в режиме ожидания), образуя один кластер.
Лидер кластера всегда от Активного контроллера.
Всякий раз, когда активный контроллер удаляется / останавливается, резервный контроллер становится активным, и один из основных серверов этого контроллера должен стать лидером.
Всякий раз, когда активный контроллер (скажем, A) перезапускается, резервный контроллер (скажем, B) становится активным, и один из основных серверов этого контроллера должен становиться лидером, а контроллер A становится резервным.
Для начала я создал 4 основных сервера с двумя ядрами на каждом активном и резервном контроллерах (всего 4 ядра). с настройками Neo4j.conf, указанными в конце.
Когда присутствуют активный и резервный контроллеры, и все 4 ядра запущены, все в порядке.
Проблема начинается, когда я выполняю свой активный контроллер, тогда оба ядра в режиме ожидания становятся «Последователем», и там нет кворума для «Лидера».
Будущий лидер не получает достаточного количества голосов, чтобы стать лидером, поскольку один контроллер удален (забирает два ядра).
Как сделать выбор лидера, даже если мой активный контроллер удален?
Может кто-нибудь, пожалуйста, помогите мне здесь?
Здесь регистрируется один из CORE на резервном контроллере, когда активный выключен
[SenderService] Failed to connect to: /192.168.56.102:7002. Retrying in 1600 ms
[c.RaftMachine] Failed to get elected. Got votes from: [MemberId{66fce96a}]
[c.RaftMachine] Election started with vote request: Vote.Request from MemberId{705ea752} {term=19, candidate=MemberId{705ea752}, lastAppended=3, lastLogTerm=1} and members: [MemberId{705ea752}, MemberId{70db66c7}, MemberId{66fce96a}, MemberId{b8233ff8}]
[RaftOutbound] No address found for MemberId{70db66c7}, probably because the member has been shut down.
[RaftOutbound] No address found for MemberId{b8233ff8}, probably because the member has been shut down.
[SenderService] Failed to connect to: /192.168.56.102:7003. Retrying in 1600 ms
[c.RaftMachine] Failed to get elected. Got votes from: [MemberId{66fce96a}]
[c.RaftMachine] Election started with vote request: Vote.Request from MemberId{705ea752} {term=20, candidate=MemberId{705ea752}, lastAppended=3, lastLogTerm=1} and members: [MemberId{705ea752}, MemberId{70db66c7}, MemberId{66fce96a}, MemberId{b8233ff8}]
Некоторое важное содержание файлов конфигурации
Контроллер-1: Core-1 IP: порт = 192.168.56.102: 5003
causal_clustering.refuse_to_be_leader=true
dbms.mode=CORE
causal_clustering.minimum_core_cluster_size_at_formation=2
causal_clustering.minimum_core_cluster_size_at_runtime=2
causal_clustering.initial_discovery_members=192.168.56.152:5000, 192.168.56.152:5001, 192.168.56.102:5002, 192.168.56.102:5003
causal_clustering.discovery_listen_address=192.168.56.102:5003
causal_clustering.transaction_listen_address=192.168.56.102:6003
causal_clustering.raft_listen_address=192.168.56.102:7003
dbms.connector.bolt.listen_address=192.168.56.102:7690
dbms.connector.http.listen_address=192.168.56.102:7477
dbms.connector.https.listen_address=192.168.56.102:6477
dbms.backup.address=192.168.56.102:6365
dbms.connectors.default_advertised_address=192.168.56.102
Контроллер-1: Core-2 IP: порт = 192.168.56.102: 5002
dbms.mode=CORE
causal_clustering.minimum_core_cluster_size_at_formation=2
causal_clustering.minimum_core_cluster_size_at_runtime=2
causal_clustering.initial_discovery_members=192.168.56.102:5000, 192.168.56.102:5001, 192.168.56.102:5002,192.168.56.102:5003
causal_clustering.discovery_listen_address=192.168.56.102:5002
causal_clustering.transaction_listen_address=192.168.56.102:6002
causal_clustering.raft_listen_address=192.168.56.102:7002
dbms.connector.bolt.listen_address=192.168.56.102:7689
dbms.connector.http.listen_address=192.168.56.102:7476
dbms.connector.https.listen_address=192.168.56.102:6476
dbms.backup.address=192.168.56.102:6364
dbms.connectors.default_advertised_address=192.168.56.102
Контроллер-2: Core-1 IP: порт = 192.168.56.152: 5001
dbms.mode=CORE
causal_clustering.minimum_core_cluster_size_at_formation=2
causal_clustering.minimum_core_cluster_size_at_runtime=2
causal_clustering.initial_discovery_members=192.168.56.152:5000, 192.168.56.152:5001,192.168.56.102:5002,192.168.56.102:5003
causal_clustering.discovery_listen_address=192.168.56.152:5001
causal_clustering.transaction_listen_address=192.168.56.152:6001
causal_clustering.raft_listen_address=192.168.56.152:7001
dbms.connector.bolt.listen_address=192.168.56.152:7688
dbms.connector.http.listen_address=192.168.56.152:7475
dbms.connector.https.listen_address=192.168.56.152:6475
dbms.backup.address=192.168.56.152:6363
dbms.connectors.default_advertised_address=192.168.56.152
Контроллер-2: Core-2 IP: порт = 192.168.56.152: 5000
dbms.mode=CORE
causal_clustering.minimum_core_cluster_size_at_formation=2
causal_clustering.minimum_core_cluster_size_at_runtime=2
causal_clustering.initial_discovery_members=192.168.56.152:5000, 192.168.56.15 2:5001,192.168.56.102:5002,192.168.56.102:5003
causal_clustering.discovery_listen_address=192.168.56.152:5000
causal_clustering.transaction_listen_address=192.168.56.152:6000
causal_clustering.raft_listen_address=192.168.56.152:7000
dbms.connector.bolt.listen_address=192.168.56.152:7687
dbms.connector.http.listen_address=192.168.56.152:7474
dbms.connector.https.listen_address=192.168.56.152:6474
dbms.backup.address=192.168.56.152:6362
dbms.connectors.default_advertised_address=192.168.56.152