Здравствуйте. Я пытаюсь настроить Cassandra Cluster с тремя узлами на виртуальных машинах Linux Azure и подключиться к нему с внешнего компьютера с помощью клиента C # datastax.Однако у меня возникают проблемы с подключением через публичный IP-адрес виртуальной машины из-за пределов сети.Любая помощь будет принята с благодарностью, так как я сейчас потерялся.
Вот версия Java, на которой работают машины.
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-8u191-b12-0ubuntu0.18.04.1-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)
Моя версия Кассандры
3.11.3
Когда я запускаю состояние nodetool, я вижу машины в кластере, однако в локальной сети Azure VN отображаются локальные IP-адреса, а не их общедоступные IP-адреса.Я не уверен, что это правильно?
Datacenter: dc1europe
=====================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
DN 10.1.0.7 101.37 KiB 256 32.8% 617d3f87-cb04-4c29-9e0c-e2c712487ad5 rack1europe
UN 10.1.0.6 158.26 KiB 256 33.1% b79a1aa0-a049-46f2-8efc-679d10a097e2 rack1europe
DN 10.1.0.9 101.36 KiB 256 34.2% 58a101e5-51f2-491e-833f-cc5c49a8740a rack1europe
Я могу использовать cqlsh Internal IP Address
для подключения к любой из машин, но когда я использую cqlsh Public IP Address
, я получаю следующую ошибку:
Connection error: ('Unable to connect to any servers', {'XX.XXX.XXX.XXX': error(None, "Tried connecting to [('XX.XXX.XXX.XXX', 9042)]. Last error: timed out")})
Когда я запускаю netstat -vatn
, это показывает, что моя машина на самом деле прослушивает порт 9042, но опять же я не уверен, что это правильно:
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:9042 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 10.1.0.6:7000 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:42271 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:7199 0.0.0.0:* LISTEN
tcp 0 64 10.1.0.6:22 109.76.85.23:51728 ESTABLISHED
tcp6 0 0 :::22 :::* LISTEN
Я могу telnet, используя публичный IPадрес компьютера, на котором я в данный момент вошел в кластер, но когда я пытаюсь подключиться через telnet, используя общедоступный IP-адрес другого компьютера в кластере, я получаю следующее:
Trying XX.XXX.XXX.XXX...
Но соединение никогда не устанавливается.
Вот соответствующие настройки из моего файла cassandra.yaml, который я отредактировал для всех трех узлов в кластере
seed_provider:
- class_name: org.apache.cassandra.locator.SimpleSeedProvider
parameters:
- seeds: "10.1.0.6, 10.1.0.7"
listen_address:
# broadcast_address: 1.2.3.4
start_rpc: false
rpc_address: 0.0.0.0
broadcast_rpc_address: <PUBLIC IP OF CURRENT NODE>
Я отредактировал NSG в Azure, чтобы разрешить все необходимые входящиепорты, включая 7000, 7001, 7199, 9042, 9160, 9142. Поэтому это не должно быть проблемой.
Я не уверен, связана ли эта проблема с моей конфигурацией виртуальной / сетевой сети Azure или с моей установкой Cassandra.Любые указатели или помощь будут великолепны!
Спасибо.