Patroni + vip-manager: различия между версиями

Материал из support.qbpro.ru
 
(не показана 1 промежуточная версия этого же участника)
Строка 22: Строка 22:
   
   
  # Netmask for IP address
  # Netmask for IP address
  VIP_MASK=24
  VIP_MASK='''24'''
   
   
  # Just use the normal interface name of the primary network interface
  # Just use the normal interface name of the primary network interface
  VIP_IFACE="eth0"
  VIP_IFACE="'''eth0'''"
   
   
  # This must match scope from Patroni postgres.yml
  # This must match scope from Patroni postgres.yml
  VIP_KEY="/data/cspg/leader"
  VIP_KEY="'''/data/cspg/leader'''"
   
   
  # This value must match the value used in Patroni postgres.yml
  # This value must match the value used in Patroni postgres.yml
Строка 34: Строка 34:
   
   
  # Specify the type of endpoint (etcd|consul)
  # Specify the type of endpoint (etcd|consul)
  VIP_TYPE="etcd"
  VIP_TYPE="'''etcd'''"
  #
  #
  VIP_ENDPOINT="http://127.0.0.1:2379"
  VIP_ENDPOINT="http://127.0.0.1:2379"
Строка 54: Строка 54:
   
   
  # Netmask for IP address
  # Netmask for IP address
  VIP_MASK=24
  VIP_MASK='''24'''
   
   
  # Just use the normal interface name of the primary network interface
  # Just use the normal interface name of the primary network interface
  VIP_IFACE="eth0"
  VIP_IFACE="'''eth0'''"
   
   
  # This must match scope from Patroni postgres.yml
  # This must match scope from Patroni postgres.yml
  VIP_KEY="/data/cspg/leader"
  VIP_KEY="'''/data/cspg/leader'''"
   
   
  # This value must match the value used in Patroni postgres.yml
  # This value must match the value used in Patroni postgres.yml
Строка 66: Строка 66:
   
   
  # Specify the type of endpoint (etcd|consul)
  # Specify the type of endpoint (etcd|consul)
  VIP_TYPE="etcd"
  VIP_TYPE="'''etcd'''"
  #
  #
  VIP_ENDPOINT="http://127.0.0.1:2379"
  VIP_ENDPOINT="http://127.0.0.1:2379"
Строка 80: Строка 80:
  retry-after: 250  #in milliseconds
  retry-after: 250  #in milliseconds
  verbose: true
  verbose: true
* Комментарии к параметрам конфигурации Vip-manager:
'''VIP_IP''' - виртуальный ipaddress, который предоставляется для доступа к текущей ноде '''Leader Patroni'''.
'''VIP_MASK''' - маска сети для виртуального ipaddress
'''VIP_TYPE''' - тип кластера ключей (токенов)
'''VIP_ENDPOINT''' - подключение к кластеру ключей (токенов)
'''VIP_HOSTINGTYPE''' - тип авторизации к '''ETCD'''
'''VIP_ETCD_USER''' - суперпользователь '''ETCD'''
'''VIP_ETCD_PASSWORD''' - пароль суперпользователя '''ETCD'''
...
* параметры ниже (interval, retry-num, retry-after) - скорость синхронизации и переключения на '''Leader'''
* '''verbose''' - подробное сообщение о событиях


==ИСТОЧНИКИ==
==ИСТОЧНИКИ==
* [https://habr.com/ru/companies/serverspace/articles/822257/ Построение отказоустойчивого кластера PostgreSQL для 1С. HAProxy, давай до свидания. Рецепты от Капитана ]
* [https://habr.com/ru/companies/serverspace/articles/822257/ Построение отказоустойчивого кластера PostgreSQL для 1С. HAProxy, давай до свидания. Рецепты от Капитана ]

Текущая версия от 20:12, 19 августа 2024

ВВЕДЕНИЕ

При создании кластера PostgreSQL с помощью:

Результаты тестов показали устойчивую потерю производительности в сравнении с простой установкой PostgreSQL на 15-20%.
Это касается как PostgreSQL так и PostgresPro.
В связи с чем были предприняты поиски альтернативных решений, без использования Haproxy.
Этим решением стало использование Vip-Manager.
Данный пакет есть во всех дистрибутивах Linux, в том числе Debian и Proxmox, что сильно порадовало!
Далее опишем настройку кластера с этим пакетом целиком, с примерами конфигураций.

НАСТРОЙКА

  • Для работы кластера необходимо минимум 3 ноды (хоста или vm), на всех нодах должен быть установлен пакет ETCD.

Нам для первичного варианта необходимо 2 ноды с PostgreSQL для работы в кластере Patroni - этого достаточно,
поэтому на 2х нодах устанавливаем: postgresql + patroni + vip-manager, на ноде "Арбитре" - это не нужно...
Все участники кластера должны быть прописаны или в сервере DNS внутренней сети, или в /etc/hosts каждого участника.

  • Процесс установки кластера описан тут, нам необходимо от туда взять установки только: ETCD,PostgreSQL,Patroni, а вот Haproxy нам не нужен...

После того, как вы запустите кластер, необходимо настроить работу Vip-manager, на тех нодах на которых установлен Patroni.

  • Настройка происходит с помощью файла /etc/default/vip-manager - пример рабочей конфигурации первой ноды:
# The keys below are mandatory
VIP_IP="10.1.3.11"

# Netmask for IP address
VIP_MASK=24

# Just use the normal interface name of the primary network interface
VIP_IFACE="eth0"

# This must match scope from Patroni postgres.yml
VIP_KEY="/data/cspg/leader"

# This value must match the value used in Patroni postgres.yml
VIP_HOST="pgdb1"

# Specify the type of endpoint (etcd|consul)
VIP_TYPE="etcd"
#
VIP_ENDPOINT="http://127.0.0.1:2379"

# The keys below are optional 
VIP_HOSTINGTYPE="basic"
VIP_ETCD_USER="admin_etcd"
VIP_ETCD_PASSWORD="password_admin"

##
interval: 1000
retry-num: 2
retry-after: 250  #in milliseconds
verbose: true
  • Пример рабочей конфигурации второй ноды:
# The keys below are mandatory
VIP_IP="10.1.3.11"

# Netmask for IP address
VIP_MASK=24

# Just use the normal interface name of the primary network interface
VIP_IFACE="eth0"

# This must match scope from Patroni postgres.yml
VIP_KEY="/data/cspg/leader"

# This value must match the value used in Patroni postgres.yml
VIP_HOST="pgdb2"

# Specify the type of endpoint (etcd|consul)
VIP_TYPE="etcd"
#
VIP_ENDPOINT="http://127.0.0.1:2379"

# The keys below are optional 
VIP_HOSTINGTYPE="basic"
VIP_ETCD_USER="admin_etcd"
VIP_ETCD_PASSWORD="password_admin"

##
interval: 1000
retry-num: 2
retry-after: 250  #in milliseconds
verbose: true
  • Комментарии к параметрам конфигурации Vip-manager:
VIP_IP - виртуальный ipaddress, который предоставляется для доступа к текущей ноде Leader Patroni.
VIP_MASK - маска сети для виртуального ipaddress
VIP_TYPE - тип кластера ключей (токенов)
VIP_ENDPOINT - подключение к кластеру ключей (токенов)
VIP_HOSTINGTYPE - тип авторизации к ETCD
VIP_ETCD_USER - суперпользователь ETCD
VIP_ETCD_PASSWORD - пароль суперпользователя ETCD
...
* параметры ниже (interval, retry-num, retry-after) - скорость синхронизации и переключения на Leader
* verbose - подробное сообщение о событиях

ИСТОЧНИКИ