Содержание
- Кластер БД postgresql
- 1.1. Описание
- 1.2. Установка кластера postgresql
- 1.2.1 Настройка хостов
- 1.2.2. Установка ETCD ( на хостах psql1, psql2, psql3 )
- 1.2.3. Установка PostgreSQL ( на хостах psql1,psql2,psql3 )
- 1.2.4. Установка Patroni( на хостах psql1, psql2, psql3 )
- 2. Rabbitmq кластер
- 3. Кластер Redis
Кластер БД postgresql
1.1. Описание
- Patroni: Patroni — это инструмент для управления высокодоступным кластером PostgreSQL. Он обеспечивает автоматизированное управление основным/резервным сервером, мониторинг состояния серверов, выбора основного сервера (leader), решения конфликтов и так далее. Patroni помогает обеспечить высокую доступность и отказоустойчивость для кластера PostgreSQL.
- etcd: etcd — это распределенное хранилище ключей-значений, используемое Patroni для хранения конфигурации и состояния кластера. Он обеспечивает централизованное хранение данных, нужных для согласованности и синхронизации между серверами кластера PostgreSQL. etcd также используется для обнаружения и выбора основного сервера. Для работы кластера необходимо , чтобы как минимум два хоста etcd были доступны
1.2. Установка кластера postgresql
1.2.1 Настройка хостов
Мы будем использовать три хоста (минимальный набор для организации кластера) для кластера postgresql и один хост для haproxy:
- psql1: 192.168.27.239 ( etcd + patroni + postgresql )
- psql2: 192.168.27.219 ( etcd + patroni + postgresql )
- psql3: 192.168.27.108 ( etcd + patroni + postgresql )
- haproxy: 192.168.27.83 (haproxy)
При включенной службе firewalld необходимо добавить в исключения порты 2380, 2379, 5432, 8008 и выполнить настройку для pgsql.
1.2.1.1 Переименуйте все хосты кластера postgresql и добавьте в файл hosts (в нашем случаи мы будем использовать имя psql)
1.2.1.1.1. На первом хосте
192.168.27.239: hostnamectl set-hostname psql1 systemctl restart systemd-hostnamed
1.2.1.1.2. На втором хосте
192.168.27.219: hostnamectl set-hostname psql2 systemctl restart systemd-hostnamed
1.2.1.1.3. На третьем хосте
192.168.27.108: hostnamectl set-hostname psql3 systemctl restart systemd-hostnamed
1.2.1.2. Добавьте данные о хостах в файл /etc/hosts на ВСЕХ хостах
192.168.27.239 psql1 192.168.27.219 psql2 192.168.27.108 psql3
1.2.2. Установка ETCD ( на хостах psql1, psql2, psql3 )
1.2.2.1. Обновляем систему, устанавливаем etcd, останавливаем сервис etcd
dnf update -y yum install etcd -y systemctl stop etcd
1.2.2.2. Создаем конфигурацию /etc/etcd/etcd.conf:
1.2.2.2.1. На первом хосте 192.168.27.239 psql1:
ETCD_NAME="psql1" ETCD_DATA_DIR="/var/lib/etcd/" ETCD_HEARTBEAT="1000" ETCD_ELECTION_TIMEOUT="5000" ETCD_LISTEN_PEER_URLS="http://192.168.27.239:2380" ETCD_LISTEN_CLIENT_URLS="http://192.168.27.239:2379,http://localhost:2379" ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.27.239:2380" ETCD_INITIAL_CLUSTER="psql1=http://192.168.27.239:2380,psql2=http://192.168.27.219:2380,psql3=http://192.168.27.108:2380" ETCD_INITIAL_CLUSTER_STATE="new" ETCD_INITIAL_CLUSTER_TOKEN="etcd-postgres-cluster" ETCD_ADVERTISE_CLIENT_URLS="http://192.168.27.239:2379" ETCD_ENABLE_V2="true"
1.2.2.2.2. На втором хосте 192.168.27.219 psql2:
ETCD_NAME="psql2" ETCD_DATA_DIR="/var/lib/etcd/" ETCD_HEARTBEAT="1000" ETCD_ELECTION_TIMEOUT="5000" ETCD_LISTEN_PEER_URLS="http://192.168.27.219:2380" ETCD_LISTEN_CLIENT_URLS="http://192.168.27.219:2379,http://localhost:2379" ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.27.219:2380" ETCD_INITIAL_CLUSTER="psql1=http://192.168.27.239:2380,psql2=http://192.168.27.219:2380,psql3=http://192.168.27.108:2380" ETCD_INITIAL_CLUSTER_STATE="new" ETCD_INITIAL_CLUSTER_TOKEN="etcd-postgres-cluster" ETCD_ADVERTISE_CLIENT_URLS="http://192.168.27.219:2379" ETCD_ENABLE_V2="true
1.2.2.2.3. На третьем хосте 192.168.27.108 psql3:
ETCD_NAME="psql3" ETCD_DATA_DIR="/var/lib/etcd/" ETCD_HEARTBEAT="1000" ETCD_ELECTION_TIMEOUT="5000" ETCD_LISTEN_PEER_URLS="http://192.168.27.108:2380" ETCD_LISTEN_CLIENT_URLS="http://192.168.27.108:2379,http://localhost:2379" ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.27.108:2380" ETCD_INITIAL_CLUSTER="psql1=http://192.168.27.239:2380,psql2=http://192.168.27.219:2380,psql3=http://192.168.27.108:2380" ETCD_INITIAL_CLUSTER_STATE="new" ETCD_INITIAL_CLUSTER_TOKEN="etcd-postgres-cluster" ETCD_ADVERTISE_CLIENT_URLS="http://192.168.27.108:2379" ETCD_ENABLE_V2="true"
- ETCD_NAME — имя хоста на котором производится настройка
- ETCD_LISTEN_CLIENT_URLS — url для прослушивания клиентских запросов. ( можно указать 0.0.0.0:2379 в этом случаи хост будет слушать все )
- ETCD_ADVERTISE_CLIENT_URLS — url для клиентских запросов ( указываем ip хоста, на котором производится настройка )
- ETCD_INITIAL_ADVERTISE_PEER_URLS — url для запросов от других узлов etcd ( указываем ip хоста, на котором производится настройка )
- ETCD_INITIAL_CLUSTER_TOKEN — токен для идентификации кластера ( должен совпадать на каждом хоста postgresql )
- ETCD_INITIAL_CLUSTER — все узлы и их url. Конструкция выглядит следующим образом
host_name_1=http://ip_iddress:2380,host_name_2=http://ip_iddress:2380,host_name_3=http://ip_iddress:2380
- ETCD_INITIAL_CLUSTER_STATE — начальное состояние кластера
- ETCD_DATA_DIR — директорию, где хранятся данные ETCD
- ETCD_ELECTION_TIMEOUT — таймаут выборов в миллисекундах
- ETCD_HEARTBEAT — интервал между отправкой heatbeat сигналов в миллисекундах
1.2.2.3. Перезапустите службы и проверьте работу etcd
systemctl daemon-reload systemctl enable etcd systemctl start etcd
В случае если были ошибки в конфигурациях и служба корректно не запускалась, потребуется удалить каталог и перезапустить службы на всех нодах:
rm -rf /var/lib/etcd/* - каталог назначения данных systemctl restart etcd
Для проверки работы:
etcdctl member list etcdctl endpoint status --write-out=table --endpoints=psql1:2379,psql2:2379,psql3:2379


1.2.3. Установка PostgreSQL ( на хостах psql1,psql2,psql3 )
1.2.3.1. Установите БД на всех нодах
dnf install postgresql16 postgresql16-server postgresql16-contrib -y
Проверьте что БД не запущена на всех нодах
systemctl stop postgresql-16.service
1.2.3.1.1. на первой ноде psql1
/usr/pgsql-16/bin/postgresql-16-setup initdb - инициализация БД systemctl start postgresql-16.service - запуск службы sudo -i -u postgres psql - вход в БД
CREATE USER replicator WITH REPLICATION ENCRYPTED PASSWORD 'replicator'; - создание пользователя replicator и установка пароля ALTER USER postgres PASSWORD 'postgres'; - изменение пользователя postgres и установка нового пароля CREATE USER cddisk WITH password 'cddisk'; - создание пользователя cddisk и установка пароля для приложения Корпоративный сервер CREATE DATABASE cddisk OWNER cddisk; - создание базы данных cddisk для приложения Корпоративный сервер GRANT ALL privileges ON DATABASE cddisk TO cddisk; - предоставление прав к БД CREATE USER ds WITH password 'ds'; создание пользователя ds и установка пароля для приложения Сервер документов CREATE DATABASE ds OWNER ds; - создание базы данных ds для приложения Сервер документов GRANT ALL privileges ON DATABASE ds TO ds; - предоставление прав к БД
Рекомендуется изменить пользователей и пароли для безопасности.
1.2.3.1.2. на других нодах проверить что БД не запущена
systemctl status postgresql-16.service
1.2.4. Установка Patroni( на хостах psql1, psql2, psql3 )
1.2.4.1. Установите зависимости и patroni на всех нодах
dnf install python3 python3-pip python3-psycopg2 patroni patroni-etcd -y dnf install python3-devel-3.8.2-15.el7.x86_64 (или более новее) dnf install libpq-devel-15.0-2.el7.x86_64 (или более новее) pip3 install wheel pip3 install patroni[etcd]
Дополнительно:
В файле ~/.bashrc и добавьте в файл:
export PATRONICTL_CONFIG_FILE=/etc/patroni/patroni.yml
Также потребуется выполнить команду:
export PATRONICTL_CONFIG_FILE=/etc/patroni/patroni.yml
1.2.4.2. Создайте конфигурацию patroni
В зависимости от версии postgresql значения data_dir и bin_dir могут быть другими.
Поэтому значения будут выглядеть следующим образом на момент сборки стенда:
data_dir: /var/lib/pgsql/16/data bin_dir: /usr/pgsql-16/bin
1.2.4.2.1. На первом хосте 192.168.27.239 postgresql1 /etc/patroni/patroni.yml:
Обратить внимание на форматирование и настройки postgresql и приведет полный файл yml, в качестве примера:
name: psql1
scope: pg-cluster
watchdog:
mode: off
restapi:
listen: 192.168.27.239:8008
connect_address: "192.168.27.239:8008"
etcd:
hosts: 192.168.27.239:2379,192.168.27.219:2379,192.168.27.108:2379
bootstrap:
dcs:
ttl: 30
loop_wait: 10
maximum_lag_on_failover: 1048576
postgresql:
use_pg_rewind: true
use_slots: true
parameters:
max_connections: 2000
superuser_reserved_connections: 5
max_locks_per_transaction: 64
max_prepared_transactions: 0
huge_pages: try
shared_buffers: 512MB
work_mem: 128MB
maintenance_work_mem: 256MB
effective_cache_size: 2GB
checkpoint_timeout: 15min
checkpoint_completion_target: 0.9
wal_compression: on
min_wal_size: 2GB
max_wal_size: 4GB
wal_buffers: 32MB
default_statistics_target: 1000
seq_page_cost: 1
random_page_cost: 4
effective_io_concurrency: 2
synchronous_commit: on
autovacuum: on
autovacuum_max_workers: 5
autovacuum_vacuum_scale_factor: 0.01
autovacuum_analyze_scale_factor: 0.02
autovacuum_vacuum_cost_limit: 200
autovacuum_vacuum_cost_delay: 20
autovacuum_naptime: 1s
max_files_per_process: 4096
archive_mode: on
archive_timeout: 1800s
archive_command: cd .
wal_level: replica
wal_keep_segments: 130
max_wal_senders: 10
max_replication_slots: 10
hot_standby: on
hot_standby_feedback: True
wal_log_hints: on
shared_preload_libraries: pg_stat_statements,auto_explain
pg_stat_statements.max: 10000
pg_stat_statements.track: all
pg_stat_statements.save: off
auto_explain.log_min_duration: 10s
auto_explain.log_analyze: true
auto_explain.log_buffers: true
auto_explain.log_timing: false
auto_explain.log_triggers: true
auto_explain.log_verbose: true
auto_explain.log_nested_statements: true
track_io_timing: on
log_lock_waits: on
log_temp_files: 3
track_activities: on
track_counts: on
track_functions: all
log_checkpoints: on
logging_collector: on
log_truncate_on_rotation: on
log_rotation_age: 1d
log_rotation_size: 0
log_line_prefix: '%t [%p-%l] %r %q%u@%d '
log_filename: 'postgresql-%a.log'
log_directory: /var/lib/pgsql/16/data/log
initdb:
- encoding: UTF8
- data-checksums
pg_hba:
- local all postgres peer
- host replication replicator 192.168.27.239/32 md5
- host replication replicator 192.168.27.219/32 md5
- host replication replicator 192.168.27.108/32 md5
- host replication replicator 127.0.0.1/32 md5
- host all all 0.0.0.0/0 md5
postgresql:
pgpass: /var/lib/pgsql/16/.pgpass
listen: 192.168.27.239:5432
connect_address: "192.168.27.239:5432"
data_dir: /var/lib/pgsql/16/data/
bin_dir: /usr/pgsql-16/bin/
config_dir: /var/lib/pgsql/16/data
pg_hba:
- local all postgres peer
- host replication replicator 192.168.27.239/32 md5
- host replication replicator 192.168.27.219/32 md5
- host replication replicator 192.168.27.108/32 md5
- host replication replicator 127.0.0.1/32 trust
- host all all 0.0.0.0/0 md5
replication:
username: replicator
password: replicator
superuser:
username: postgres
password: postgres
remove_data_directory_on_rewind_failure: false
remove_data_directory_on_diverged_timelines: false
create_replica_methods:
- basebackup
basebackup:
max-rate: '100M'
checkpoint: 'fast'
watchdog:
mode: off # Allowed values: off, automatic, required
device: /dev/watchdog
safety_margin: 5
tags:
nofailover: false
noloadbalance: false
clonefrom: false
nosync: false
В конфигурации параметры БД возможно изучить на сайте postgresql
1.2.4.2.2. На втором хосте 192.168.27.219 psql2 /etc/patroni/patroni.yml
Так же укажите файл patroni.yml, изменив на ip адреса машины 192.168.27.219:8008
В параметрах:
restapi: listen: 192.168.27.239:8008 connect_address: "192.168.27.239:8008" postgresql: pgpass: /var/lib/pgsql/16/.pgpass listen: 192.168.27.239:5432 connect_address: "192.168.27.239:5432"
1.2.4.2.3. На втором хосте 192.168.27.108 psql3 etc/patroni/patroni.yml
Так же указать файл patroni.yml, изменив на ip адреса машины аналогично прошлому пункту 192.168.27.108:8008
1.2.4.2.4. Выполните команды на всех нодах
sudo chown postgres:postgres -R /etc/patroni sudo chmod 700 /etc/patroni
1.2.4.3 Краткое описание /etc/patroni/patroni.yml:
Это конфигурационный файл для Patroni, инструмента управления высокодоступным кластером PostgreSQL.
scope: Название кластера («pg_cluster»)
name: Имя текущего узла («postgresql1 или postgreslq2»).
restapi: Настройки для REST API Patroni.
- listen: IP и порт для прослушивания REST API («0.0.0.0:8008»).
- connect_address: IP и порт, по которым будут подключаться клиенты к REST API (192.168.27.239:8008).
etcd: Настройки для подключения к ETCD, распределенному хранилищу состояния.
- hosts: Список хостов ETCD для подключения (192.168.27.239:2379,192.168.27.219:2379,192.168.27.108:2379).
bootstrap: Настройки для начальной настройки кластера.
- dcs: Настройки распределенной системы координирования (DCS).
- ttl: Время жизни записи в DCS в секундах («30»).
- loop_wait: Интервал опроса DCS в секундах («10»).
- retry_timeout: Тайм-аут для повторных попыток взятия лока в DCS в секундах («10»).
- maximum_lag_on_failover: Максимально допустимая задержка репликации перед переключением мастера в байтах («1048576»).
- postgresql: Настройки для PostgreSQL.
- use_pg_rewind: Использовать ли pg_rewind для восстановления («true»).
- use_slots: Включить ли использование слотов репликации («true»).
- parameters: Дополнительные параметры PostgreSQL, указанные в формате «ключ: значение».
- initdb: Настройки для команды initdb.
- pg_hba: Разрешения доступа к PostgreSQL.
- users: Пользователи PostgreSQL.
- admin: Имя пользователя («admin») и его настройки, включая пароль и опции.
postgresql: Настройки для PostgreSQL.
- listen: IP и порт для прослушивания PostgreSQL (0.0.0.0:5432 — для всех адресов без исключения).
- connect_address: IP и порт, по которым будут подключаться клиенты к PostgreSQL (192.168.27.239:5432).
- data_dir: Директория, где хранятся данные PostgreSQL («/var/lib/pgsql/16/data/»).
- config_dir: Директория настроек существующей базы («/var/lib/pgsql/16/data»)
- bin_dir: Директория, где находятся исполняемые файлы PostgreSQL («/usr/lib/postgresql/16/bin»).
- pgpass: Путь к файлу pgpass для автоматической аутентификации в PostgreSQL.
- authentication: Настройки аутентификации PostgreSQL.
- replication: Пользователь для репликации («replicator») и его пароль.
- superuser: Суперпользователь («postgres») и его пароль.
- parameters: Дополнительные параметры PostgreSQL, указанные в формате «ключ: значение».
tags: Дополнительные теги для управления поведением Patroni.
- nofailover: Запретить автоматический переход к другому мастеру при сбое («false»).
- noloadbalance: Запретить автоматическую балансировку нагрузки («false»).
- clonefrom: Запретить клонирование другой реплики («false»).
- nosync: Отключить синхронизацию реплик («false»).
1.2.4.4. Настройка сервиса patroni для всех нод
В файл ~/.bashrc добавьте
export PATRONICTL_CONFIG_FILE=/etc/patroni/patroni.yml
1.2.4.5. Перезапустите сервис patroni и проверьте состояние кластера:
systemctl daemon-reload systemctl enable patroni --now systemctl status patroni patronictl list

1.2.4.6. Полезные команды при настройке
В случае если не указывался из пункта 1.2.4.4, то потребуется указания ключа -с
patronictl -c /etc/patroni/patroni.yml edit-config - изменение принятой конфигурации patroni.yml (может потребовать при проверке правильности принимаемых параметров patroni) patronictl -c /etc/patroni/patroni.yml restart pg-cluster psql1 patronictl -c /etc/patroni/patroni.yml restart pg-cluster psql2 patronictl -c /etc/patroni/patroni.yml restart pg-cluster psql3 patroni --validate-config /etc/patroni/patroni.yml проверка конфигурации на ошибки
Система сама выберет лидера (master) и реплики (slave).
Если выключить машину Лидер то этот статус автоматически назначается на любой доступный хост.
2. Rabbitmq кластер
2.1. Установка ПО RabbitMQ
При включенной службе firewalld необходимо добавить порты 15672, 25672, 4369 и выполнить настройку для amqp.
2.1.1. Установка ПО RabbitMQ для всех нод
dnf install 'rabbitmq-server-3.*' -y systemctl enable --now rabbitmq-server
2.2. Настройка хостов с ПО RabbitMQ
При отсутствии возможности добавить записи на DNS сервере, необходимо сделать записи в файле /etc/hosts на ВСЕХ нодах в кластере и хосте с HAProxy.
/etc/hosts 127.0.0.1 localhost rabmq1 192.168.27.238 rabmq1.localdomain 192.168.27.118 rabmq2.localdomain 192.168.27.31 rabmq3.localdomain 192.168.27.83 haproxy
Переименуйте все ноды, рекомендуется использовать такие имена:
hostnamectl set-hostname rabmq1.localdomain hostnamectl set-hostname rabmq2.localdomain hostnamectl set-hostname rabmq3.localdomain
2.2.1. Настройка ноды rabmq1
# Создаем файл mcedit /etc/rabbitmq/rabbitmq-env.conf # Добавляем переменные окружения RABBITMQ_NODENAME=rabbit@rabmq1.localdomain RABBITMQ_USE_LONGNAME=true
2.2.2. Настройка нод rabmq2 и rabmq3
# Создаем файл mcedit /etc/rabbitmq/rabbitmq-env.conf # Добавляем переменные окружения RABBITMQ_NODENAME=rabbit@rabmq2.localdomain RABBITMQ_USE_LONGNAME=true
И:
# Создаем файл mcedit /etc/rabbitmq/rabbitmq-env.conf # Добавляем переменные окружения RABBITMQ_NODENAME=rabbit@rabmq3.localdomain RABBITMQ_USE_LONGNAME=true
2.2.3. Скопируйте сookie с Primary на Secondary ноды
Любым удобным для Вас способом, копируем c заменой сookie /var/lib/rabbitmq/.erlang.cookie с rabmq1 ноды на ВСЕ остальные ноды в кластере.
Назначьте права на сookie на нодах:
chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie chmod 400 /var/lib/rabbitmq/.erlang.cookie
Перезапустите службу на всех нодах кластера
systemctl restart rabbitmq-server
2.2.4. Добавление нод rabmq2 и rabmq3 к кластеру
# Остановите приложение на нодах rabmq2 и rabmq3 для добавления к кластеру: rabbitmqctl stop_app # Потребуется сброс rabbitmq на нодах rabmq2 и rabmq3 rabbitmqctl reset # Добавьте ноды к кластеру, выполните на rabmq2 и rabmq3 rabbitmqctl join_cluster rabbit@rabmq1.localdomain # Запустите приложение на нодах rabmq2 и rabmq3: rabbitmqctl start_app # Проверьте статус кластера на всех нодах: rabbitmqctl cluster_status
2.3. Настройка кластера RabbitMQ
2.3.1 Включите плагин Management Plugin на всех нодах кластера
rabbitmq-plugins enable \ rabbitmq_management
2.3.2. Создайте виртуальный хост для haproxy и пользователя для подключения к Серверу документов и Корпоративному серверу
На ноде rabmq1 создайте пользователя r7office:
rabbitmqctl add_user r7office r7office
На версии КС 4400 нет возможности использовать отличный от корня «/». Предоставьте права r7-office для Корпоративного сервера:
Выдайте ему права
rabbitmqctl set_permissions -p / r7office ".*" ".*" ".*"
При необходимости выдайте права администратора если будет использоваться пользователь для подключения с помощью Management Plugin
rabbitmqctl set_user_tags r7office administrator
Настройте зеркальную очередь с префиксом amq (при сбое сервера A эти блоки очереди выходят на сервер B)
rabbitmqctl set_policy / '^(?!amq\.).*' '{"ha-mode": "all"}'
2.4. Проверяем работу кластера
Поочередно останавливаем службу rabbitmq-server.service на нодах кластера:
systemctl stop rabbitmq-server
Для вывода дополнительной информации:
rabbitmqctl list_vhosts rabbitmqctl list_users rabbitmqctl list_permissions rabbitmqctl list_policies
Проверяем состояние ноды с помощью плагина Management Plugin http://192.168.27.238:15672/

3. Кластер Redis
При отсутствии возможности добавить записи на DNS сервере, необходимо сделать записи в файле /etc/hosts на ВСЕХ нодах в кластере и хосте с HAProxy.
/etc/hosts 127.0.0.1 localhost redis1 192.168.27.238 redis1.localdomain redis1 192.168.27.118 redis2.localdomain redis2 192.168.27.31 redis3.localdomain redis3 192.168.27.83 haproxy
При включенной службе firewalld необходимо добавить порты 6379, 26379 и выполнить настройку для redis.
Переименуйте все ноды:
hostnamectl set-hostname redis1.localdomain hostnamectl set-hostname redis2.localdomain hostnamectl set-hostname redis3.localdomain
3.1. Установка Redis и Sentinal
dnf install redis -y на все ноды
3.2. Настройка
Внесите правки в файл /etc/redis/redis.conf
bind - предоставление запросов от других клиентов maxclients 20000 - максимальное количество клиентов maxmemory-policy allkeys-lfu - политика вытеснения ключей save "" - политика создания снапшотов отключение appendonly no - отключение сохранения базы данных Redis в файл masterauth "SecretPassword" - укажите пароль к Мастеру requirepass "SecretPassword" - пароль к Мастеру Укажите представление ноды в кластере: на ноде redis1: replica-announce-ip "redis1.localdomain" на ноде redis2: replica-announce-ip "redis2.localdomain" на ноде redis3: replica-announce-ip "redis3.localdomain" На нодах redis2 и redis3 укажите: replicaof "redis1.localdomain" 6379
Внесите правки в файл /etc/redis/sentinel.conf
на ноде redis 1 sentinel announce-ip "redis1.localdomain" на ноде redis 2 sentinel announce-ip "redis2.localdomain" на ноде redis 3 sentinel announce-ip "redis3.localdomain" на всех нодах bind 0.0.0.0 sentinel monitor mymaster redis1.localdomain 6379 2 sentinel auth-pass mymaster SecretPassword sentinel down-after-milliseconds mymaster 3000 sentinel failover-timeout mymaster 6000 sentinel resolve-hostnames yes sentinel announce-hostnames yes
3.3. Запустите сервисы и проверьте работу
systemctl enable redis redis-sentinel --now systemctl restart redis redis-sentinel systemctl status redis systemctl status redis-sentinel проверьте что установлены права на каталог и вложенные файлы sudo chown -R redis:redis /var/log/redis/ sudo chown -R redis:redis /etc/redis/ redis-cli -p 26379 info sentinel - инфо о работе sentinel redis-cli -p 26379 sentinel ckquorum mymaster - инфо о кворуме redis-cli -a SecretPassword info replication | grep role - проверка роли








