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

Материал из support.qbpro.ru
Строка 17: Строка 17:
* Процесс установки кластера описан [https://support.qbpro.ru/index.php/%D0%9F%D0%BE%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BE%D1%82%D0%BA%D0%B0%D0%B7%D0%BE%D1%83%D1%81%D1%82%D0%BE%D0%B9%D1%87%D0%B8%D0%B2%D0%BE%D0%B3%D0%BE_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B0_PostgreSQL._%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%B2%D0%BD%D0%B5%D1%88%D0%BD%D0%B5%D0%B9_%D1%81%D0%B8%D0%BD%D1%85%D1%80%D0%BE%D0%BD%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D0%BD%D0%B0_PostgreSQL_%D0%B4%D0%BB%D1%8F_%D0%BC%D0%B5%D1%85%D0%B0%D0%BD%D0%B8%D0%B7%D0%BC%D0%B0_%D0%BA%D0%BE%D0%BF%D0%B8%D0%B9_%D0%B1%D0%B0%D0%B7_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85. тут], нам необходимо от туда взять установки только: '''ETCD''','''PostgreSQL''','''Patroni''', а вот '''Haproxy''' нам не нужен...<br>
* Процесс установки кластера описан [https://support.qbpro.ru/index.php/%D0%9F%D0%BE%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BE%D1%82%D0%BA%D0%B0%D0%B7%D0%BE%D1%83%D1%81%D1%82%D0%BE%D0%B9%D1%87%D0%B8%D0%B2%D0%BE%D0%B3%D0%BE_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B0_PostgreSQL._%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%B2%D0%BD%D0%B5%D1%88%D0%BD%D0%B5%D0%B9_%D1%81%D0%B8%D0%BD%D1%85%D1%80%D0%BE%D0%BD%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D0%BD%D0%B0_PostgreSQL_%D0%B4%D0%BB%D1%8F_%D0%BC%D0%B5%D1%85%D0%B0%D0%BD%D0%B8%D0%B7%D0%BC%D0%B0_%D0%BA%D0%BE%D0%BF%D0%B8%D0%B9_%D0%B1%D0%B0%D0%B7_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85. тут], нам необходимо от туда взять установки только: '''ETCD''','''PostgreSQL''','''Patroni''', а вот '''Haproxy''' нам не нужен...<br>
После того, как вы запустите кластер, необходимо настроить работу '''Vip-manager''', на тех нодах на которых установлен '''Patroni'''.<br>
После того, как вы запустите кластер, необходимо настроить работу '''Vip-manager''', на тех нодах на которых установлен '''Patroni'''.<br>
* Настройка происходит с помощью файла '''/etc/default/vip-manager''' - пример рабочей конфигурации:
* Настройка происходит с помощью файла '''/etc/default/vip-manager''' - пример рабочей конфигурации первой ноды:
  # The keys below are mandatory
  # The keys below are mandatory
  VIP_IP="'''10.1.3.11'''"
  VIP_IP="'''10.1.3.11'''"
Строка 32: Строка 32:
  # This value must match the value used in Patroni postgres.yml
  # This value must match the value used in Patroni postgres.yml
  VIP_HOST="'''pgdb1'''"
  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)
  # Specify the type of endpoint (etcd|consul)

Версия от 19:49, 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

ИСТОЧНИКИ