Перейти к основному содержимому

Подключиться к кластеру Kafka

К кластеру Kafka можно подключиться:

  • через терминальный клиент kcat;
  • программный код.

Для всех способов доступно подключение с SSL и без SSL.

При подключении укажите порт и адрес.

Порты для подключения

Для подключения к Kafka используйте порты:

  • 9092 — порт для подключения без SSL-сертификата;
  • 9093 — порт для подключения с SSL-сертификатом.

Адреса для подключения

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

К кластеру в приватной подсети подключиться из интернета нельзя.

Подключение к кластеру в публичной подсети

Если кластер в публичной подсети, к нодам можно подключиться по DNS-адресу или IP-адресу из публичной подсети.

Мы рекомендуем подключаться по DNS-адресу. Для DNS-адресов в кластере используется механизм master discovery — адрес привязан к роли ноды, а не к самой ноде. При недоступности мастера одна из реплик становится новым мастером и адрес переходит на новую ноду вместе с ролью.

При подключении по IP-адресу из публичной подсети механизм master discovery не используется. Если одна из реплик станет новым мастером, IP-адрес мастера изменится и подключение по старому IP-адресу перестанет работать.

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

Подключение из приватной подсети к кластеру в приватной подсети

Если вы подключаетесь из приватной подсети к кластеру в приватной подсети, можно использовать DNS-адрес или приватный IP-адрес.

Мы рекомендуем подключаться по DNS-адресу. Для DNS-адресов в кластере используется механизм master discovery — адрес привязан к роли ноды, а не к самой ноде. При недоступности мастера одна из реплик становится новым мастером и адрес переходит на новую ноду вместе с ролью.

При подключении по приватному IP-адресу механизм master discovery не используется. Если одна из реплик станет новым мастером, IP-адрес мастера изменится и подключение по старому IP-адресу перестанет работать.

Чтобы подключиться из другой приватной подсети, сначала подключите обе приватные подсети к облачному роутеру.

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

Посмотреть адрес для подключения

  1. В панели управления в верхнем меню нажмите Продукты и выберите Облачные базы данных.
  2. Откройте вкладку Активные.
  3. Откройте страницу кластера баз данных → вкладка Подключение.
  4. В блоке Адреса для подключения посмотрите адрес.

Подключиться с SSL

Подключение с использованием TLS(SSL)-шифрования обеспечивает безопасное соединение между вашим сервером и кластером баз данных.

  1. Скачайте корневой сертификат и поместите его в папку ~/.kafka/:

    mkdir -p ~/.kafka/
    wget https://storage.dbaas.selcloud.ru/CA.pem -O ~/.kafka/root.crt
    chmod 0600 ~/.kafka/root.crt
  2. Используйте пример подключения для консьюмера:

    kcat -C \
    -b <host>:<port> \
    -t <topic_name> \
    -X sasl.username=<user_name> \
    -X sasl.password=<password> \
    -X security.protocol=SASL_SSL \
    -X sasl.mechanisms=SCRAM-SHA-512 \
    -X ssl.ca.location=$HOME/.kafka/root.crt

    Укажите:

    • <host> — DNS-адрес ноды;
    • <port> — порт для подключения;
    • <topic_name> — имя топика;
    • <user_name> — имя пользователя с ролью консьюмер, который имеет доступ к топику;
    • <password> — пароль пользователя.
  3. Используйте пример подключения для продюсера:

    kcat -P \
    -b <host>:<port> \
    -t <topic_name> \
    -X sasl.username=<user_name> \
    -X sasl.password=<password> \
    -X security.protocol=SASL_SSL \
    -X sasl.mechanisms=SCRAM-SHA-512 \
    -X ssl.ca.location=$HOME/.kafka/root.crt

    Укажите:

    • <host> — DNS-адрес ноды;
    • <port> — порт для подключения;
    • <topic_name> — имя топика;
    • <user_name> — имя пользователя с ролью продюсер, который имеет доступ к топику;
    • <password> — пароль пользователя.

Подключиться без SSL

  1. Откройте CLI.

  2. Используйте пример подключения для консьюмера:

    kcat -C \
    -b <host>:<port> \
    -t <topic_name> \
    -X sasl.username=<user_name> \
    -X sasl.password=<password> \
    -X security.protocol=SASL_PLAINTEXT \
    -X sasl.mechanisms=SCRAM-SHA-512

    Укажите:

    • <host> — DNS-адрес ноды;
    • <port> — порт для подключения;
    • <topic_name> — имя топика;
    • <user_name> — имя пользователя с ролью консьюмер, который имеет доступ к топику;
    • <password> — пароль пользователя.
  3. Используйте пример подключения для продюсера:

    kcat -P \
    -b <host>:<port> \
    -t <topic_name> \
    -X sasl.username=<user_name> \
    -X sasl.password=<password> \
    -X security.protocol=SASL_PLAINTEXT \
    -X sasl.mechanisms=SCRAM-SHA-512

    Укажите:

    • <host> — DNS-адрес ноды;
    • <port> — порт для подключения;
    • <topic_name> — имя топика;
    • <user_name> — имя пользователя с ролью продюсер, который имеет доступ к топику;
    • <password> — пароль пользователя.