Невозможно подключить клиент Cassandra по публичному IP - PullRequest
0 голосов
/ 01 декабря 2018

Здравствуйте. Я пытаюсь настроить 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.Любые указатели или помощь будут великолепны!

Спасибо.

Ответы [ 2 ]

0 голосов
/ 19 апреля 2019

Мои настройки.

Windows VM в качестве веб-сервера

Ubuntu в качестве узла Cassandra.

И в одной подписке, и в другой группе ресурсов, и в VNET.

Для подключения с компьютера под управлением Windows к Cassandra.

Выполнены следующие действия, и все заработало:)

1) Peer VNet.Это должно быть сделано на обоих vnets.Первоначально я не мог пропинговать Ubuntu VM из Windows VM, после пиринга я смог пропинговать.

2) Откройте порт 9042 на Cassandra VM, вы можете добавить ограничение для диапазона адресов веб-сервера.

3) В Ubuntu VM отредактируйте файл etc / cassandra / cassandra.yaml и измените следующие настройки.IP является частным IP-адресом Ubuntu VM

1) rpc_address: 10.0.1.5
2) listen_address: 10.0.1.5
3) seeds: "10.0.1.5"

4) Теперь попробуйте любое тестовое приложение для подключения к cassandra с веб-сервера.

Например,

            var cluster = Cluster.Builder()
                 .AddContactPoints("10.0.1.5")
                 .WithPort(9042)
                 .WithAuthProvider(new PlainTextAuthProvider("cassandra", "cassandra"))
                 .Build();
            ISession session = cluster.Connect();

Вы должны бытьумеет подключаться и запускать операторы.

Приветствия,

Hemant

0 голосов
/ 02 декабря 2018

По вашему описанию, это звучит как пересылка / конечная точка Nat.Я предполагаю, что это классическое развертывание, поэтому ниже приведена информация для просмотра конечных точек.

https://docs.microsoft.com/en-us/azure/virtual-machines/linux/classic/setup-endpoints

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...