Шаг 1. Подготовка окружения (обязательный)#
Установка выполняется с помощью ansible-сценариев путем запуска ansible-playbook из состава дистрибутива на локальном хосте для установки на локальном или удаленном хосте.
Примечание:
Все действия, за исключением раздела «Подготовка хостов, на которые планируется выполнить установку», выполняются на локальном хосте. В примерах ниже рабочим каталогом для процесса установки является
/tmp/installer/, а файл дистрибутива размещен в/tmp/installer/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 сценариев из дистрибутива#
Распакуйте дистрибутив командой
unzip /tmp/installer/distrib.zip -d /tmp/installer/distrib/.Распакуйте архив с ansible сценариями командой
unzip /tmp/installer/distrib/kfka-deploy-<версия продукта>-distrib.zip -d /tmp/installer/ansible/.Переместите zip архив с дистрибутивом командой
mv /tmp/installer/distrib.zip /tmp/installer/ansible/files/.
Подготовка ansible inventory#
Подготовьте файл ansible inventory в каталоге /tmp/installer/ansible/inventories/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 сценариев из дистрибутива#
Распакуйте дистрибутив командой
unzip /tmp/installer/distrib.zip -d /tmp/installer/distrib/.Распакуйте архив с ansible сценариями командой
unzip /tmp/installer/distrib/kfka-deploy-<Platform V Corax version>-distrib.zip -d /tmp/installer/ansible/.Переместите zip архив с дистрибутивом командой
mv /tmp/installer/distrib.zip /tmp/installer/ansible/files/.
Подготовка ansible inventory#
Подготовьте файл ansible inventory в каталоге /tmp/installer/ansible/inventories/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 сценариев из дистрибутива#
Распакуйте дистрибутив командой
unzip /tmp/installer/distrib.zip -d /tmp/installer/distrib/.Распакуйте архив с ansible сценариями командой
unzip /tmp/installer/distrib/kfka-deploy-<Platform V Corax version>-distrib.zip -d /tmp/installer/ansible/.Переместите zip архив с дистрибутивом командой
mv /tmp/installer/distrib.zip /tmp/installer/ansible/files/.
Подготовка ansible inventory#
Подготовьте файл ansible inventory в каталоге /tmp/installer/ansible/inventories/DEV/inventory.ini и заполните его по шаблону ниже, указав 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 сценариев из дистрибутива#
Распакуйте дистрибутив командой
unzip /tmp/installer/distrib.zip -d /tmp/installer/distrib/.Распакуйте архив с ansible сценариями командой
unzip /tmp/installer/distrib/kfka-deploy-<Platform V Corax version>-distrib.zip -d /tmp/installer/ansible/.Переместите zip архив с дистрибутивом командой
mv /tmp/installer/distrib.zip /tmp/installer/ansible/files/.
Подготовка ansible inventory#
Подготовьте файл ansible inventory в каталоге /tmp/installer/ansible/inventories/crx-mirror-maker.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 сценариев из дистрибутива#
Распакуйте дистрибутив командой
unzip /tmp/installer/distrib.zip -d /tmp/installer/distrib/.Распакуйте архив с ansible сценариями командой
unzip /tmp/installer/distrib/kfka-deploy-<Platform V Corax version>-distrib.zip -d /tmp/installer/ansible/.Переместите zip архив с дистрибутивом командой
mv /tmp/installer/distrib.zip /tmp/installer/ansible/files/.
Подготовка ansible inventory#
Подготовьте файл ansible inventory в каталоге /tmp/installer/ansible/inventories/.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" # путь от inventories/_стенд_/ до файла с trustStore
trustStorePassword: "SeCuRePaSsWorD2" # пароль от trustStore
keyStorePath: "ssl/kafka.jks" # путь от inventories/_стенд_/ до файла с 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:
/tmp/installer/ansible/files/.Проверьте, что существует каталог с inventory-файлами:
/tmp/installer/ansible/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 inventories/devops/host.yml -e security='SSL__ZK_mTLS_WITH_AUTH__KAFKA_SSL_WITH_AUTH__SECMAN'
Обязательно указания профиля, по профилю выбирается плейбук из роли.