Установка и настройка Keepalived
Keepalived позволяет использовать виртуальный IP адрес. В случае выхода из строя одного из узлов postgres, этот IP адрес будет автоматически присвоен другому хосту в порядке указания приоритета.
В нашем случае, для конкретики примем VIP 10.0.9.60, а адреса хостов с установленным keepalived: postgres1 10.0.9.61, postgres2 10.0.9.62, postgres3 10.0.9.63.
Таким образом, при отказе хоста postgres1, узел postgres2 автоматически присвоит себе виртуальный адрес 10.0.9.60, так как он является вторым по приоритету. Далее соединение подхватывает демон proxy, запущенный на этой ВМ (и на двух других тоже), который знает, какой из трех узлов в данный момент является мастером. В свою очередь он транслирует запросы от клиента напрямую в master базу данных.
Ставим keepalived:
На всех узлах добавим возможность перенаправления пакетов в /etc/sysctl.confПрименим изменения из файла
Теперь надо создать конфигуратор настройки. На всех трех узлах он будет почти одинаковый.
Пример файла /etc/keepalived/keepalived.conf для хоста postgres1.
! this is who emails will go to on alerts
notification_email {
admin@your_domain.ru
! add a few more email addresses here if you would like
}
notification_email_from servers@ your_domain.ru
! I use the local machine to relay mail
smtp_server smtp.yuor_domain.local
smtp_connect_timeout 30
! each load balancer should have a different ID
! this will be used in SMTP alerts, so you should make
! each router easily identifiable
lvs_id CLUSTER_POSTGRES1
}
}
vrrp_instance postgres1 {
interface eth0
state MASTER
virtual_router_id VROUTER
priority 150
! send an alert when this instance changes state from MASTER to BACKUP
smtp_alert
authentication {
auth_type PASS
auth_pass passwordforcluster
}
track_script {
chk_http_port
}
virtual_ipaddress {
10.0.9.60/32 dev eth0
}
! add here your notification code, if you want
}
Перестартуем службу
Опубликовано: 10.05.2017