Шаг 1. Подготовка окружения (обязательный)#
Установка выполняется с помощью ansible-сценариев путем запуска ansible-playbook из состава дистрибутива на локальном хосте для установки на локальном или удаленном хосте.
Примечание
Все действия, за исключением раздела «Подготовка хостов, на которые планируется выполнить установку», выполняются на локальном хосте. В примерах ниже рабочим каталогом для процесса установки является $HOME/corax/, а файл дистрибутива размещен в $HOME/corax/files/KFK-x.y.z-b-distrib.zip.
При установке возможно сконфигурировать использование следующих профилей безопасности:
PLAINTEXT__KRAFT_PLAIN_NO_AUTH— профиль для работы с KRaft контроллером и подключение без SSL;PLAINTEXT__ZK_PLAIN_NO_AUTH__KAFKA_PLAINTEXT_NO_AUTH— подключение без SSL;SSL__ZK_mTLS_WITH_AUTH__KAFKA_SSL_WITH_AUTH— подключение с SSL;SSL__KRAFT_SSL_WITH_AUTH__KAFKA_SSL_WITH_AUTH— профиль для работы с KRaft контроллером и подключение c SSL;SSL__KRAFT_SSL_WITH_AUTH__KAFKA_SSL_WITH_AUTH__AUDIT— профиль для работы с KRaft контроллером и подключение с SSL и аудитом;SSL__ZK_mTLS_WITH_AUTH__KAFKA_SSL_WITH_AUTH__AUDIT— подключение с SSL и аудитом;SSL__ZK_mTLS_WITH_AUTH__KAFKA_SSL_WITH_AUTH__SECMAN— подключение с SSL и Secret Management System (SecMan);SSL__ZK_mTLS_WITH_AUTH__KAFKA_SSL_WITH_AUTH__AUDIT__SECMAN— подключение с SSL, аудитом и Secret Management System (SecMan).
Общие требования#
При подготовке окружения убедитесь в выполнении требований:
Установлены пакеты unzip и JDK.
Предоставлен доступ по SSH-соединению между узлами управления Ansible и хостами Corax.
Имеются привилегированные права. Ansible Role для Corax поддерживает разделение задач на основе тегов. Задачи разделяются на требующие и не требующие привилегированных прав
root. Обратите внимание: на некоторых шагах установки потребуетсяroot-доступ.
Последовательность действий#
Настройка виртуального окружения в Python и установка Ansible#
Для настройки окружения и установки Ansible Role:
Установите пакет Ansible в соответствии с системными требованиями. Рекомендуем установить пакет Ansible вместо Ansible Core (
ansible-core), который содержит минимальное количество модулей и плагинов. Установка пакета Ansible избавляет от ручной установки дополнительных модулей и плагинов, которые необходимы для Corax Ansible Role.Установите виртуальное окружение:
python -m venv $HOME/python-venv/ansibleАктивируйте виртуальное окружение:
source $HOME/python-venv/ansible/bin/activateУстановите
ansible pip install ansibleилиpip install ansibleс соответствующей системным требованиям версией:pip install ansible == Х.Х.Х, где Х.Х.Х - версия Ansible.
Подготовка к установке Kafka и ZooKeeper#
Подготовка хостов, на которые планируется выполнить установку#
Примечание
Имя группы и пользователя выбирается на усмотрение администратора. В данном разделе kafka используется для примера.
Создайте пользователя
kafka, выполнив команды:useradd kafkaСоздайте каталоги с правами
775и владельцемkafka:kafka(указаны каталоги по умолчанию) с помощью команд:# Каталог только для хостов группы kafka, по умолчанию /KAFKADATA/ install -d -o kafka -g kafka -m 775 /KAFKADATA/ # Каталог только для хостов группы zookeeper, по умолчанию /zookeeper/ install -d -o kafka -g kafka -m 775 /zookeeper/ # Каталог для всех хостов, по умолчанию /opt/Apache/ install -d -o kafka -g kafka -m 775 /opt/Apache/Установите пакеты unzip, java-11-openjdk и acl, выполнив команду
yum install unzip java-11-openjdk acl -y.Увеличьте лимит количества файлов, выполнив команду
echo ‘fs.file-max=262144’ > /etc/sysctl.d/50-fs.confи примените параметры, выполнив командуsysctl -p.Увеличьте PAM лимиты на хосте, добавив в
/etc/security/limits.confпараметры#<domain> <type> <item> <value> * soft nproc 512000 * hard nproc 512000 * soft nofile 512000 * soft nofile 512000Добавьте каталог с утилитой Keytool (входит в JDK) в переменную
PATHпользователя, с правами которого будет выполняться установка.Настройте Firewall, разрешив сетевое взаимодействие между серверами кластера и клиентами кластера.
Подготовка к установке#
Выполните подготовку по инструкции из раздела Подготовка элементов развертывания.
Обратите внимание, подготовка состоит из двух этапов: создание единого дистрибутива продукта и подготовка к выбранному способу установки.
Подготовка ansible inventory#
Подготовьте файл ansible inventory в каталоге $HOME/corax/kfka-deploy-x.y.z-distrib/inv/dev-inventory.yml и заполните его по шаблону, указав IP адреса хостов, на которые планируется выполнять установку.
Внимание
Для установки требуется учетная запись с правами root (с помощью sudo).
all:
vars:
ansible_connection: ssh # Способ подключения к серверу
ansible_user: "sshlogin" # Логин пользователя для доступа по ssh
ansible_ssh_pass: "sshpassword" # Пароль пользователя для доступа по ssh
# Группа узлов, на которые будет установлена kafka. Требуется указать только Ansible inventory aliases (только IP адрес)
kafka:
hosts:
10.XX.XX.XX:
ansible_host: 10.XX.XX.XX
10.XX.XX.XX:
ansible_host: 10.XX.XX.XX
10.XX.XX.XX:
ansible_host: 10.XX.XX.XX
# Группа узлов, на которые будет установлен ZooKeeper. Требуется указать только Ansible inventory aliases (только IP адрес)
zookeeper:
hosts:
10.XX.XX.XX:
ansible_host: 10.XX.XX.XX
10.XX.XX.XX:
ansible_host: 10.XX.XX.XX
10.XX.XX.XX:
ansible_host: 10.XX.XX.XX
Подготовка к установке Schema Registry#
Установка Schema Registry производится с помощью Ansible-роли crxsr.
Подготовка хостов, на которые планируется выполнить установку#
Создайте пользователя
kafkaи группуkafka, выполнив командуuseradd kafka.Создайте каталог для группы crxsr
/opt/Apache/с правами775и владельцемkafka:kafkaс помощью команды:install -d -o kafka -g kafka -m 775 /opt/Apache/Установите пакеты unzip, java-11-openjdk и acl, выполнив команду
yum unzip install java-11-openjdk acl -y.Настройте Firewall, разрешив сетевое взаимодействие между серверами кластера и клиентами кластера согласно диаграмме развертывания.
Подготовка к установке#
Выполните подготовку по инструкции из раздела Подготовка элементов развертывания.
Обратите внимание, подготовка состоит из двух этапов: создание единого дистрибутива продукта и подготовка к выбранному способу установки.
Подготовка ansible inventory#
Подготовьте файл ansible inventory в каталоге $HOME/corax/kfka-deploy-x.y.z-distrib/inv/dev-inventory.yml и заполните его по шаблону ниже, указав IP адреса хостов с установленным Corax, с узлом CRXSR.
Примечание
Для установки требуется учетная запись с правами root (с помощью sudo).
all:
vars:
ansible_connection: ssh # Способ подключения к серверу
ansible_user: "sshlogin" # Логин пользователя для доступа по ssh
ansible_ssh_pass: "sshpassword" # Пароль пользователя для доступа по ssh
# Группа узлов, на которые будет установлена kafka. Требуется указать только Ansible inventory aliases (только IP адрес)
kafka:
hosts:
10.XX.XX.XX:
ansible_host: 10.XX.XX.XX
10.XX.XX.XX:
ansible_host: 10.XX.XX.XX
10.XX.XX.XX:
ansible_host: 10.XX.XX.XX
# Группа узлов, на которые будет установлен ZooKeeper. Требуется указать только Ansible inventory aliases (только IP адрес)
zookeeper:
hosts:
10.XX.XX.XX:
ansible_host: 10.XX.XX.XX
10.XX.XX.XX:
ansible_host: 10.XX.XX.XX
10.XX.XX.XX:
ansible_host: 10.XX.XX.XX
# Узел, на котором будет установлен Corax-SR. Требуется указать только Ansible inventory aliases (только IP адрес)
crxsr:
10.XX.XX.XX:
ansible_host: 10.XX.XX.XX
Подготовка к установке Corax UI#
Установка Corax UI производится с помощью Ansible-роли crxui.
Подготовка хостов, на которые планируется выполнить установку#
Создайте пользователя
kafkaи группуkafka, выполнив командуuseradd kafka.Создайте каталог для группы crxui
/opt/Apache/с правами775и владельцемkafka:kafkaс помощью команды:install -d -o kafka -g kafka -m 775 /opt/Apache/Установите пакеты unzip, java-11-openjdk и acl, выполнив команду
yum unzip install java-11-openjdk acl -y.Настройте Firewall, разрешив сетевое взаимодействие между серверами кластера и клиентами кластера согласно диаграмме развертывания.
Подготовка к установке#
Выполните подготовку по инструкции из раздела Подготовка элементов развертывания.
Обратите внимание, подготовка состоит из двух этапов: создание единого дистрибутива продукта и подготовка к выбранному способу установки.
Подготовка ansible inventory#
Подготовьте файл ansible inventory в каталоге $HOME/corax/kfka-deploy-x.y.z-distrib/inv/dev-inventory.yml и заполните его по шаблону ниже, указав IP адреса хостов с установленным Corax, с узлом CRXUI.
Примечание
Для установки требуется учетная запись с правами root (с помощью sudo).
all:
vars:
ansible_connection: ssh # Способ подключения к серверу
ansible_user: "sshlogin" # Логин пользователя для доступа по ssh
ansible_ssh_pass: "sshpassword" # Пароль пользователя для доступа по ssh
# Группа узлов, на которые будет установлена kafka. Требуется указать только Ansible inventory aliases (только IP адрес)
kafka:
hosts:
10.XX.XX.XX:
ansible_host: 10.XX.XX.XX
10.XX.XX.XX:
ansible_host: 10.XX.XX.XX
10.XX.XX.XX:
ansible_host: 10.XX.XX.XX
# Группа узлов, на которые будет установлен ZooKeeper. Требуется указать только Ansible inventory aliases (только IP адрес)
zookeeper:
hosts:
10.XX.XX.XX:
ansible_host: 10.XX.XX.XX
10.XX.XX.XX:
ansible_host: 10.XX.XX.XX
10.XX.XX.XX:
ansible_host: 10.XX.XX.XX
# Узел, на котором будет установлен Corax-UI. Требуется указать только Ansible inventory aliases (только IP адрес)
crxui:
10.XX.XX.XX:
ansible_host: 10.XX.XX.XX
Подготовка к установке Mirror Maker#
Установка Mirror Maker производится с помощью Ansible-роли crxmm на сервера с предварительно установленной Kafka.
Подготовка к установке#
Выполните подготовку по инструкции из раздела Подготовка элементов развертывания.
Обратите внимание, подготовка состоит из двух этапов: создание единого дистрибутива продукта и подготовка к выбранному способу установки.
Подготовка ansible inventory#
Подготовьте файл ansible inventory в каталоге $HOME/corax/kfka-deploy-x.y.z-distrib/inv/dev-inventory.yml и заполните его по шаблону ниже, указав IP адреса хостов с установленным Corax, с узлом CRXMM.
all:
vars:
ansible_connection: ssh # Способ подключения к серверу
ansible_user: "sshlogin" # Логин пользователя для доступа по ssh
ansible_ssh_pass: "sshpassword" # Пароль пользователя для доступа по ssh
crxmm:
config:
property:
"destination.bootstrap.servers": "10.XX.XX.XX:YYYY"
"source.bootstrap.servers": "10.XX.XX.XX:YYYY"
"source->destination.topics": "<topic 1>[,<topic N>]"
custom_property:
- key: "sync.topic.acls.enabled"
value: "false"
state: 'present'
- key: "sync.topic.acls.interval.seconds"
value: "120"
state: 'present'
crxmm:
hosts:
10.XX.XX.XX:
ansible_host: 10.XX.XX.XX
Подготовка к установке Kafka Connect для работы с S3#
Установка производится с помощью Ansible-роли kafka_connect на сервера с предварительно установленной Kafka.
Подготовка к установке#
Выполните подготовку по инструкции из раздела Подготовка элементов развертывания.
Обратите внимание, подготовка состоит из двух этапов: создание единого дистрибутива продукта и подготовка к выбранному способу установки.
Подготовка ansible inventory#
Подготовьте файл ansible inventory в каталоге $HOME/corax/kfka-deploy-x.y.z-distrib/inv/dev-inventory.yml и заполните его по шаблону ниже:
all:
vars:
ansible_connection: ssh # Способ подключения к серверу
vault_ansible_ssh_user: "ssh_user"
vault_ansible_ssh_pass: "ssh_pass"
kafka_connect:
# Пример заполнения переменных для использования с SSL
ssl:
trustStorePath: "ssl/kafka.jks" # путь от inv/_стенд_/ до файла с trustStore
trustStorePassword: "SeCuRePaSsWorD2" # пароль от trustStore
keyStorePath: "ssl/kafka.jks" # путь от inv/_стенд_/ до файла с keyStore
keyStorePassword: "SeCuRePaSsWorD2" # пароль от keyStore
keyPassword: "SeCuRePaSsWorD2" # пароль от ключа в хранилище
# Пример добавления/удаления/изменения дополнительных свойств в конфигурационный файл connect-s3.properties
config:
custom_properties: []
# - { key: "key.converter" , value: "ru.sbrf.kafka.connect.EncryptedByteArrayConverter", state: "absent" }
# - { key: "key.converter.password" , value: "qwe123" }
# - { key: "value.converter.password" , value: "qwe123" }
# - { key: "header.converter.password" , value: "qwe123" }
# Пример для создания коннекторов
connectors:
# Пример коннектора для сохранения сообщений из топика в S3
- name: "s3-sink-byte" # имя коннектора
topics: "byteSink" # имя топика для резервного копирования
"connector.class": "io.lenses.streamreactor.connect.aws.s3.sink.S3SinkConnector" # класс для взаимодействия с S3
"connect.s3.kcql": "insert into connect select * from byteSink STOREAS `BYTES` PROPERTIES ('flush.count'=1)" # Запрос по выбору сообщений из топика для сохранения в S3
"tasks.max": "1" # Количество задач в коннекторе
"initial_state": "STOPPED" # Первоначальное состояние коннектора
# Классы конвертации сообщений из топика
"key.converter": "org.apache.kafka.connect.converters.ByteArrayConverter"
"value.converter": "org.apache.kafka.connect.converters.ByteArrayConverter"
"header.converter": "org.apache.kafka.connect.converters.ByteArrayConverter"
# Параметры подключения к хранилищу S3
"connect.s3.custom.endpoint": 'http://10.40.12.60:8082'
"connect.s3.vhost.bucket": 'true'
"connect.s3.aws.auth.mode": 'Credentials'
"connect.s3.aws.region": 'eu-west-2'
"connect.s3.aws.access.key": 'none'
"connect.s3.aws.secret.key": 'none'
# Пример коннектора для восстановления сообщений из S3 в топик
- name: "s3-source-byte"
topics: "byteSource"
"connector.class": "io.lenses.streamreactor.connect.aws.s3.source.S3SourceConnector"
"connect.s3.kcql": "insert into byteSource select * from connect STOREAS `BYTES`"
"tasks.max": "1"
"initial_state": "STOPPED"
"key.converter": "org.apache.kafka.connect.converters.ByteArrayConverter"
"value.converter": "org.apache.kafka.connect.converters.ByteArrayConverter"
"header.converter": "org.apache.kafka.connect.converters.ByteArrayConverter"
"connect.s3.custom.endpoint": 'http://10.40.12.60:8082'
"connect.s3.vhost.bucket": 'true'
"connect.s3.aws.auth.mode": 'Credentials'
"connect.s3.aws.region": 'eu-west-2'
"connect.s3.aws.access.key": 'none'
"connect.s3.aws.secret.key": 'none'
#Обязательно указывать адреса брокеров, по ней формируется строка подключения к брокерам.
kafka:
hosts:
10.xxx.xxx.xxx:
ansible_host: 10.xxx.xxx.xxx
10.xxx.xxx.xxx:
ansible_host: 10.xxx.xxx.xxx
10.xxx.xxx.xxx:
ansible_host: 10.xxx.xxx.xxx
#Указывается адрес сервера на который будет установлен kafka-connect
kafka-connect:
hosts:
10.xxx.xxx.xxx:
ansible_host: 10.xxx.xxx.xxx
Проверка результата#
Проверьте, что Ansible установлен, выполнив команду
ansible --version. Должна отобразиться версия Ansible.Проверьте, что существует каталог с файлами для установки через Ansible:
$HOME/corax/kfka-deploy-x.y.z-distrib/files/.Проверьте, что существует каталог с inventory-файлами:
$HOME/corax/kfka-deploy-x.y.z-distrib/files/.
Описание ansible-playbook из состава дистрибутива#
Имя ansible-playbook |
Описание |
|---|---|
|
Запускает ansible-роли zookeeper, kafka, kafka_topics, kafka_acl |
|
Запускает ansible-роль kafka (установка kafka) |
|
Запускает ansible-роль kafka_acl (создание списка доступа к топикам) |
|
Запускает ansible-роль kafka_topics (создание топиков) |
|
Запускает ansible-роль update_broker (обновление брокеров поочередно) |
|
Запускает ansible-роль zookeeper (установка ZooKeeper) |
|
Запускает ansible-роли zookeeper, kafka, kafka_topics, kafka_acl, crxsr, crxui |
|
Запускает ansible-роли zookeeper, kafka, kafka_topics, kafka_acl, crxui |
|
Плейбук для установки Kafka Connect |
|
Плейбук для создания коннекторов |
|
Плейбук для удаления коннекторов |
|
Плейбук для остановки коннекторов |
|
Плейбук для перезапуска коннекторов |
|
Плейбук для возобновления работы коннекторов после остановки |
|
Плейбук для вывода статуса коннекторов |
Пример запуска команды:
ansible-playbook playbooks/kafka-connect-create.yml -i inv/devops/host.yml -e security='SSL__ZK_mTLS_WITH_AUTH__KAFKA_SSL_WITH_AUTH__SECMAN'
Обязательно указания профиля, по профилю выбирается плейбук из роли.