Содержание

Кластер БД postgresql

1.1. Описание

  1. Patroni: Patroni — это инструмент для управления высокодоступным кластером PostgreSQL. Он обеспечивает автоматизированное управление основным/резервным сервером, мониторинг состояния серверов, выбора основного сервера (leader), решения конфликтов и так далее. Patroni помогает обеспечить высокую доступность и отказоустойчивость для кластера PostgreSQL.
  2. 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

Пример развертки кластеров Pgsql, RabbitMQ, Redis

Пример развертки кластеров Pgsql, RabbitMQ, Redis

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 -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
1.2.4.3. Создайте конфигурацию patroni

Примечание: В зависимости от версии postgresql значения data_dir и bin_dir могут быть другими.

Поэтому значения будут выглядеть следующим образом на момент сборки стенда:

data_dir: /var/lib/pgsql/16/data

bin_dir: /usr/pgsql-16/bin
1.2.4.3.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.3.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.3.3. На втором хосте 192.168.27.108 psql3 etc/patroni/patroni.yml

Так же указать файл patroni.yml, изменив на ip адреса машины аналогично прошлому пункту 192.168.27.108:8008

1.2.4.3.4. Выполните команды на всех нодах
sudo chown postgres:postgres -R /etc/patroni
sudo chmod 700 /etc/patroni
1.2.4.4. Краткое описание /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.5. Настройка сервиса patroni для всех нод

в файл ~/.bashrc добавьте

export PATRONICTL_CONFIG_FILE=/etc/patroni/patroni.yml
1.2.4.6. Перезапустите сервис patroni и проверьте состояние кластера:
systemctl daemon-reload
systemctl enable patroni --now
systemctl status patroni
patronictl list

Пример развертки кластеров Pgsql, RabbitMQ, Redis

1.2.4.7. Полезные команды при настройке

в случае если не указывался из пункта 2.4.5, то потребуется указания ключа -с

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 -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 создайте vhost haproxy и пользователя r7office с доступом к vhost:

rabbitmqctl add_vhost haproxy

Создайте пользователя r7office с паролем r7office и выдайте ему права
rabbitmqctl add_user r7office r7office
Примечание:

На версии КС 4400 нет возможности использовать отличный от корня «/». Предоставьте права r7-office для Корпоративного сервера:

rabbitmqctl set_permissions -p / r7office «.*» «.*» «.*»

При необходимости выдайте права администратора если будет использоваться пользователь для подключения с помощью Management Plugin
rabbitmqctl set_user_tags r7office administrator

Выдайте права пользователю r7office на vhost haproxy (кластер сервера документов)
rabbitmqctl set_permissions -p haproxy r7office «.*» «.*» «.*»

# Настраиваем зеркальную очередь с префиксом amq (при сбое сервера A эти блоки очереди выходят на сервер B)
rabbitmqctl set_policy haproxy ‘^(?!amq\.).*’ ‘{«ha-mode»: «all»}’

2.4. Проверяем работу кластера

Поочередно останавливаем службу rabbitmq-server.service на нодах кластера

systemctl stop rabbitmq-server.service
  • Проверяем состояние ноды с помощью плагина Management Plugin http://192.168.27.238:15672/

Пример развертки кластеров Pgsql, RabbitMQ, Redis

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, 4369 и выполнить настройку для 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

maxclients 20000 - максимальное количество клиентов
maxmemory-policy allkeys-lfu - политика вытеснения ключей
save "" - политика создания снапшотов - отключение
appendonly no - отключение сохранения базы данных Redis в файл
masterauth "SecretPassword" - укажите пароль к Мастеру
 
Укажите представление ноды в кластере:
 
на ноде redis1:
replica-announce-ip redis1.localdomain
 
на ноде redis2:
replica-announce-ip redis2.localdomain
 
на ноде redis3:
replica-announce-ip redis3.localdomain
requirepass "SecretPassword" - пароль к Мастеру
 
На нодах 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 redis-3.localdomain
 
на всех нодах
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.4. Запустите сервисы и проверьте работу

sudo systemctl restart redis
sudo systemctl enable redis
 
 
 
redis-cli -p 26379 info sentinel - инфо о работе sentinel
redis-cli -p 26379 sentinel ckquorum mymaster - инфо о кворуме
 
redis-cli -a SecretPassword info replication | grep role - проверка роли

 

Была ли полезна статья?
Позвольте нам стать лучше