Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

В окружении, в котором оба ваших основных сервера системы WNAM не могут общаться посредством multicast-пакетов (например, когда multicast не включен на распределенном коммутаторе VMware , или в среде OpenStack), вы можете можно использовать демон keepalived в unicast-режиме. Для использования демона keepalived следует выполнить ряд действий:

Установить Установите необходимый пакет:

apt install keepalived

Создайте Создать конфигурационный файл /etc/keepalived/keepalived.conf :на каждом из серверов.

Конфигурационный файл на На первом сервере:

vrrp_script check_wnam {
script "/home/wnam/check_wnam.sh"
interval 10
fall 2
rise 2
}
vrrp_instance wnam_instance {
interface eth0
track_interface {
eth0
}
state MASTER
virtual_router_id 50
priority 100
preempt
unicast_src_ip 1.2.3.89
unicast_peer {
1.2.3.90
}
virtual_ipaddress { 
1.2.3.91 dev eth0
}
track_script {
check_wnam
}
notify /home/wnam/keepalived.state.sh
}

На Конфигурационный файл на втором сервере:

vrrp_script check_wnam {
 script "/home/wnam/check_wnam.sh"
interval 10
fall 2
rise 2
}
vrrp_instance wnam_instance {
interface eth0
track_interface {
eth0
}
state BACKUP
virtual_router_id 50
priority 50
preempt
unicast_src_ip 1.2.3.90
unicast_peer {
1.2.3.89
}
virtual_ipaddress {
1.2.3.91 dev eth0
}
track_script {
check_wnam
}
notify /home/wnam/keepalived.state.sh 
}

На каждом из двух серверов создайте необходимо создать одинаковые скрипты:

Файл /home/wnam/check_wnam.sh sh:

#!/bin/bash
# Check if WNAM is running, return 1 if not.
# Used by keepalived to initiate a failover in case WNAM is down
WNAM_STATUS=$(/bin/ps ax | grep -w wnam.war | grep -w java)
if [ "$WNAM_STATUS" != "" ]
then
exit 0
else
logger "WNAM is NOT running. Setting keepalived state to FAULT."
exit 1
fi

Файл /home/wnam/keepalived.state.sh:

#!/bin/bash
TYPE=$1
NAME=$2
STATE=$3
echo $STATE > /var/run/keepalived.state

Дайте Следующей командой необходимо выдать скриптам права "на исполнение":

chmod +x /home/wnam/keepalived.state.sh /home/wnam/check_wnam.sh 

Включите, Затем включить и перезапустите перезапустить сервис keepalived на обоих серверах командами:

systemctl enable keepalived.service 
systemctl restart keepalived.service

После этого первый сервер получит кластерный IP-адрес, а в логе (/var/log/syslog) будут  будут записи вида:

May 8 16:37:55 r-sr-wnam-app-001 Keepalived_vrrp[16978]: VRRP_Script(check_wnam) succeeded
May 8 16:37:55 r-sr-wnam-app-001 Keepalived_vrrp[16978]: (wnam_instance) Entering BACKUP STATE
May 8 16:37:59 r-sr-wnam-app-001 systemd[1]: Reloading.
May 8 16:37:59 r-sr-wnam-app-001 Keepalived_vrrp[16978]: (wnam_instance) Entering MASTER STATE

...