Шаг 3. Установка Schema Registry (опциональный)#
Цель выполнения#
Роль для развертывания и настройки crxsr (Schema Registry).
Последовательность действий#
Подготовка конфигурации для использования#
Перед установкой выполните действия, приведенные в разделе Подготовка окружения.
Изменение параметров установки и параметров работы Schema Registry#
В созданном файле $HOME/corax-distrib/KFK-x.y.z-b/Corax-ansible-x.y.z-b/inv/stand-corax.yml, при необходимости можно переназначать параметры установки, добавляя в раздел all-vars структуру:
crxsr:
distr: "kafka-patched.zip" # путь до архива относительно files
installdir: "/opt/Apache/kafka" # абсолютный путь на конечном сервере до приложения
port: 8081
Дополнительные параметры для использования профилей с SSL#
Настройка протокола безопасности состоит из:
Подготовка X509 сертификата
Подготовка X509 сертификата
Могут применяться два вида X509 сертификатов:
самоподписанные (допускается для тестовых установок);
подписанные корпоративным CA (рекомендуется для промышленных установок).
Для подготовки X509 сертификата необходимо создать два JKS хранилища:
server.kafka.jks– хранилище ключей, содержащее сертификат и приватный ключ;truststore.kafka.jks– хранилище доверенных сертификатов, содержащее только сертификат корневого CA без приватного ключа изserver.kafka.jks.
Создание хранилищ с самоподписанным сертификатом
Для создания хранилищ с использованием самоподписанного сертификата выполните шаги:
Создайте каталог командой:
mkdir -p $HOME/corax/kfka-deploy-x.y.z-distrib/inv/ssl/и перейдите в него командой:
cd $HOME/corax/kfka-deploy-x.y.z-distrib/inv/sslСоздайте JKS хранилище с сертификатом и приватным ключом командой:
keytool -genkey -keyalg RSA -keysize 2048 -storetype JKS -alias kafka -keystore server.kafka.jks -validity 3650 -keypass <keyPassword> -storepass <keyStorePassword> -dname "CN=kafka, OU=kafka, O=kafka"Извлеките сертификат без приватного ключа из JKS во временный файл
kafka.exportкомандой:keytool -exportcert -keystore server.kafka.jks -alias kafka -file kafka.export -storepass <keyStorePassword>Импортируйте сертификат в
truststore.kafka.jksкомандой:keytool -import -keystore truststore.kafka.jks -alias kafka -file kafka.export -storepass <trustStorePassword> -noprompt -storetype JKSУдалите временный файл
kafka.export, созданный на шаге 3.
Создание хранилищ с сертификатом, подписанным корпоративным CA
Правила и алгоритм выпуска X509 сертификатов в различных организациях может отличаться. Далее описаны основные этапы подготовки конфигурации с использованием X509 сертификата, подписанного корпоративным CA:
Создайте каталог командой:
mkdir -p $HOME/corax/kfka-deploy-x.y.z-distrib/inv/ssl/и перейдите в него командой:
cd $HOME/corax/kfka-deploy-x.y.z-distrib/inv/sslСоздайте JKS хранилище с сертификатом и приватным ключом командой:
keytool -genkey -keyalg RSA -keysize 2048 -storetype JKS -alias kafka -keystore server.kafka.jks -validity 3650 -keypass <keyPassword> -storepass <keyStorePassword> -dname "CN=kafka, OU=kafka, O=kafka"Сгенерируйте запрос на сертификат (CSR) командой:
keytool -certreq -keystore server.kafka.jks -alias kafka -file server.kafka.csr -storepass <keyStorePassword> -ext ExtendedKeyUsage=serverAuth,clientAuthПолученный файл
server.kafka.csrподпишите в корпоративном CA. После подписания сертификата потребуются четыре файла:server.kafka.cer— cертификат в форматеcer, полученный в корпоративом CA;server.kafka.jks— хранилище, созданное на шаге 2;ca1.cer— сертификат корневого CA, полученный в корпоративом CA;ca2.pem(опционально) — cертификат промежуточного CA (может отсутствовать), полученный в корпоративом CA.
Добавьте сертификат
server.kafka.cer, полученный в корпоративом удостоверяющем центре, в созданное на шаге 2 хранилищеserver.kafka.jksкомандой:keytool -import -keystore server.kafka.jks -alias kafka -file server.kafka.cer -storepass <keyStorePassword> -noprompt -storetype JKSПодготовьте
truststore.kafka.jksс X509 сертификатом корневого CA командой:keytool -import -keystore truststore.kafka.jks -alias root -file ca1.cer -storepass <trustStorePassword> -noprompt -storetype JKS keytool -import -keystore truststore.kafka.jks -alias root -file ca2.cer -storepass <trustStorePassword> -noprompt -storetype JKSОпционально. Удалите все файлы из каталога
$HOME/corax/kfka-deploy-x.y.z-distrib/inv/ssl/, кромеtruststore.kafka.jksиserver.kafka.jks, командой:
ls | grep -v "*.jks" | xargs rm -f
Подготовка ansible vars#
В созданном файле $HOME/corax-distrib/KFK-x.y.z-b/Corax-ansible-x.y.z-b/inv/stand-corax.yml, добавить параметры для работы с SSL:
crxsr:
keyStorePath: "ssl/keystore.jks" # путь от inventories/_стенд_/
keyStorePassword: "SeCuRePaSsWorD2" # пароль от keyStore
keyPassword: "SeCuRePaSsWorD2" # пароль от ключа в хранилище
trustStorePath: "ssl/truststore.jks" # путь от inventories/_стенд_/
trustStorePassword: "SeCuRePaSsWorD2" # пароль от trustStore
sr_user: # пользователи в schema-registry
admin:
psw: "<password>"
role: 'ROLE_ADMIN'
user:
psw: "<password>"
role: 'ROLE_USER'
kafka:
trustStorePath: "ssl/truststore.kafka.jks" # путь от inv/_стенд_/ до файла хранилища доверенных сертификатов (или абсолютный на сервере при needUploadJks: false)
trustStorePassword: "<truststore-password>" # пароль от хранилища доверенных сертификатов
keyStorePath: "ssl/server.kafka.jks" # путь от inv/_стенд_/ до файла хранилища ключей (или абсолютный на сервере при needUploadJks: false)
keyStorePassword: "<keystore-password>" # пароль от хранилища ключей
keyPassword: "<key-password>" # пароль от ключа в хранилище
Запуск ansible-playbook#
Перейдите в каталог со сценариями ansible командой
cd $HOME/corax-distrib/KFK-x.y.z-b/Corax-ansible-x.y.z-b/.Выполните команду
ansible-playbook -i inv/stand-corax.yml playbooks/crxsr.ymlи дождитесь завершения выполнения.
В случае успешного выполнения в stdout, в разделе PLAY RECAP, должно появиться unreachable=0 failed=0 напротив каждого хоста.

Проверка результата#
Проверка работоспособности на хостах группы crxui:
Подключитесь по ssh к хосту из ansible группы crxui.
Выполните команду
ps axu | grep -v 'grep' | grep java.*schema-registry.properties. Должен отобразиться 1 запущенный процесс.
Проверка работоспособности подключением через браузер:
Замените в адресе
http://ххх.ххх.ххх.хххх:pppp:Вместо
xxx.xxx.xxx.xxxукажите IP хоста из ansible группы crxsr.Вместо
ppppукажите порт, установленный в параметреserver_portв файле$HOME/corax/kfka-deploy-x.y.z-distrib/inv/group_vars/all/vars.yaml.
С помощью браузера перейдите по полученному адресу.
Справочная информация#
Переменные роли#
Описания и значения по умолчанию для переменных можно найти в defaults/main:
Файл |
Описание |
|---|---|
|
Переменные для установки crxsr |
Описание задач#
Файл |
Описание |
|---|---|
|
Основной playbook, который включает все остальные в зависимости |
|
Запускает crxsr |
|
Останавливает crxsr |
|
Очищает crxsr |
|
Удаляет crxsr |
|
Задачу необходимо запускать на хостах с Kafka, для внесения изменений в |
Описание тегов для применения при установке#
Имя тега |
Описание |
|---|---|
root |
Устанавливает Java и создает: пользователя-группы ОС, сервис crxsr, каталог |
install |
Останавливает crxsr, загружает дистрибутив на хосты, распаковывает дистрибутив, конфигурирует, стартует |
configure |
Добавляет или исправляет свойства в файле параметров в зависимости от профиля (Security) |
start |
Запускает crxsr, проверяет доступность порта и ищет в логе строку |
stop |
Останавливает crxsr |
status |
Проверяет доступность по порту crxsr |