Установка пакета Heartbeat

Целевые узлы для пакета Heartbeat - три рабочих сервера с одним общим виртуальным IP-адресом. Непрерывная доступность сервисов обеспечивается с помощью пакета Heartbeat.

Примечание. В дальнейшем описании для главных узлов кластера используются названия kn0, kn1, kn2, для рабочих узлов - kn3, kn4, kn5. Установка и настройка пакета Heartbeat выполняется на рабочих узлах kn3, kn4 и kn5.

Для установки и настройки пакета Heartbeat:

  1. Установите и настройте Heartbeat:

apt-get update && apt-get -y install heartbeat && systemctl enable heartbeat

Примечание. Все три сервера делят один IP-адрес - <main external cluster ip>. Этот виртуальный IP-адрес будет перемещаться между серверами, поэтому включите параметр net.ipv4.ip_nonlocal_bind, чтобы разрешить привязку системных служб к нелокальному IP-адресу.

  1. Добавьте эту возможность в файл /etc/sysctl.conf для узлов kn3, kn4, kn5:

# echo ‘net.ipv4.ip_nonlocal_bind=1’ >> /etc/sysctl.conf
# sysctl -p

  1. Создайте файл /etc/ha.d/authkeys. В этом файле Heartbeat хранит данные для взаимной аутентификации, файл должен быть одинаковым на всех рабочих узлах:

# echo -n securepass | md5sum
bb77d0d3b3f239fa5db73bdf27b8d29a
# Где securepass – пароль для Heartbeat
# Cкопируйте полученную хеш-сумму в буфер обмена
kn3
$ sudo vi /etc/ha.d/authkeys
auth 1
1 md5 bb77d0d3b3f239fa5db73bdf27b8d29a
kn4
$ sudo vi /etc/ha.d/authkeys
auth 1
1 md5 bb77d0d3b3f239fa5db73bdf27b8d29a
kn5
$ sudo vi /etc/ha.d/authkeys
auth 1
1 md5 bb77d0d3b3f239fa5db73bdf27b8d29a

  1. Проверьте, что файл /etc/ha.d/authkeys доступен только пользователю root:

Kn3# sudo chmod 600 /etc/ha.d/authkeys
Kn4# sudo chmod 600 /etc/ha.d/authkeys
Kn5# sudo chmod 600 /etc/ha.d/authkeys

  1. Создайте основные файлы конфигурации для Heartbeat на выбранных серверах (для каждого сервера файл будет незначительно отличаться):

    1. Создайте файл /etc/ha.d/ha.cf на узлах kn3, kn4, kn5.

Примечание. Для получения параметров узлов для конфигурации запустите uname -n на всех трех серверах. Также используйте имя вашей сетевой карты вместо ens160.

Kn3# vi /etc/ha.d/ha.cf
#       keepalive: how many seconds between heartbeats
#
keepalive 2
#
#       deadtime: seconds-to-declare-host-dead
#
deadtime 10
#
#       What UDP port to use for udp or ppp-udp communication?
#
udpport        694
bcast  ens160
mcast ens160 225.0.0.1 694 1 0
ucast ens160 <main kn3 ip>
#       What interfaces to heartbeat over?
udp     ens160
#
#       Facility to use for syslog()/logger (alternative to log/debugfile)
#
logfacility     local0
#
#       Tell what machines are in the cluster
#       node    nodename ...    -- must match uname -n
node    kn3
node    kn4
node    kn5

kn4# vi /etc/ha.d/ha.cf
#       keepalive: how many seconds between heartbeats
#
keepalive 2
#
#       deadtime: seconds-to-declare-host-dead
#
deadtime 10
#
#       What UDP port to use for udp or ppp-udp communication?
#
udpport        694
bcast  ens160
mcast ens160 225.0.0.1 694 1 0
ucast ens160 <main kn4 ip>
#       What interfaces to heartbeat over?
udp     ens160
#
#       Facility to use for syslog()/logger (alternative to log/debugfile)
#
logfacility     local0
#
#       Tell what machines are in the cluster
#       node    nodename ...    -- must match uname -n
node    kn3
node    kn4
node    kn5

kn5# vi /etc/ha.d/ha.cf
#       keepalive: how many seconds between heartbeats
#
keepalive 2
#
#       deadtime: seconds-to-declare-host-dead
#
deadtime 10
#
#       What UDP port to use for udp or ppp-udp communication?
#
udpport        694
bcast  ens160
mcast ens160 225.0.0.1 694 1 0
ucast ens160 <main kn5 ip>
#       What interfaces to heartbeat over?
udp     ens160
#
#       Facility to use for syslog()/logger (alternative to log/debugfile)
#
logfacility     local0
#
#       Tell what machines are in the cluster
#       node    nodename ...    -- must match uname -n
node    kn3
node    kn4
node    kn5

    1. Создайте файл /etc/ha.d/haresources. В нём указывается общий виртуальный IP-адрес и задаётся, какой узел является главным по умолчанию. Файл должен быть одинаковым на всех узлах:

Kn3# vi /etc/ha.d/haresources
Kn3 <main virtual cluster ip>
Kn4# vi /etc/ha.d/haresources
Kn3 <main virtual cluster ip>
Kn5# vi /etc/ha.d/haresources
Kn3 <main virtual cluster ip> ### Здесь и выше kn3 - это hostname узла, выбранного "главным" по умолчанию для Heartbeat.  

  1. Запустите службы Heartbeat на всех узлах и проверьте, что на узле kn3 установлен заявленный виртуальный IP-адрес:

Kn3# systemctl restart heartbeat
Kn4# systemctl restart heartbeat
Kn5# systemctl restart heartbeat
kn1# ip a s
ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
   link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
   inet <main kn3 ip>/24
      valid_lft forever preferred_lft forever
   inet <main cluster ip>/24

  1. Проверьте доступ по main cluster ip с помощью команды:

nc -v <main cluster ip> 22

Пример результата выполнения команды:

Connection to x.x.x.x 22 port [tcp/*] succeeded!
SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.7

После выполнения действий пакет Heartbeat будет установлен и настроен, далее перейдите к подготовке кластера системы Ceph.

См. также:

Подготовка среды для продукта «Форсайт. Мобильная платформа» | Подготовка кластера системы Ceph