Перед настройкой кластера горячего резервирования, необходимо определиться с интерфейсами и адресацией, предварительно активировав привилегированный режим командой enable. Согласно особенностям технологии ViPNet, для работы кластера для каждого интерфейса необходимо задать три адреса – активный (одинаков для обоих нод), а также два пассивных (по одному на каждую ноду). Так, в сетевом окружении активная нода выполняет весь функционал, а на её интерфейсе назначен активный адрес. Пассивная нода в то же время обменивается по «перемычке» данными с пассивной, а на её интерфейсе установлен пассивный адрес.
Далее в документе описан процесс настройки кластера горячего резервирования на координаторах HW. Будем считать, что на рассматриваемом координаторе активны два интерфейса и перемычка:
inet addr:10.26.0.6 Bcast:10.26.0.7 Mask:255.255.255.248
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:739776664 errors:0 dropped:0 overruns:0 frame:0
TX packets:457633194 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:771871261233 (718.8 GiB) TX bytes:153842604923 (143.2 GiB)
Configured by DHCP: no
Class: access
Speed: 1000Mb/s
Duplex: Full
Auto-negotiation: on
Link detected: yes
eth2 Link encap:Ethernet HWaddr 2c:4d:54:44:e0:dd
inet addr:10.26.0.129 Bcast:10.26.0.255 Mask:255.255.255.128
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:774748067 errors:0 dropped:18036 overruns:0 frame:0
TX packets:1224628499 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:321838218086 (299.7 GiB) TX bytes:1354957831714 (1.2 TiB)
Configured by DHCP: no
Class: access
Speed: 1000Mb/s
Duplex: Full
Auto-negotiation: on
Link detected: yes
eth3 Link encap:Ethernet HWaddr 2c:4d:54:44:e0:de
inet addr:192.168.26.1 Bcast:192.168.26.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:7196981638 errors:0 dropped:0 overruns:0 frame:0
TX packets:5887061013 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:9083365329329 (8.2 TiB) TX bytes:6181904989913 (5.6 TiB)
Configured by DHCP: no
Class: access
Speed: 1000Mb/s
Duplex: Full
Auto-negotiation: on
Link detected: yes
На основе этих данных настраивается конфигурационный файл кластера (failover).
Для этого необходимо выключить службу отказоустойчивости командой failover stop, активировать режим кластера командой failover config mode cluster, затем войти в редактор конфигурационного файла командой failover config edit. Настройка для первой ноды кластера выглядит следующим образом (жирным шрифтом выделены строки, которые необходимо изменять / добавлять):
checktime = 30
timeout = 4
activeretries = 5
channelretries = 5
synctime = 5
fastdown = yes
beforeifconf = /sbin/change_route.sh before
afterifconf = /sbin/change_route.sh after
[channel]
device = eth0
ident = iface-0
activeip = 10.26.0.6/29
passiveip = 21.26.0.6/0
testip = 10.26.0.1
checkonlyidle = yes
[channel]
device = eth2
ident = iface-2
activeip = 10.26.0.129/25
passiveip = 21.26.0.129/0
testip = 127.0.0.1
checkonlyidle = no
[sendconfig]
activeip = 192.168.26.2
sendtime = 60
device = eth3
config = yes
keys = yes
journals = yes
port = 10090
[misc]
activeconfig = /etc/iplirpsw
passiveconfig = /etc/iplirpsw
maxjournal = 30 #days
reboot = yes
[debug]
debuglevel = 3
debuglogfile = syslog:daemon.debug
[events]
Первым делом необходимо в самой верхней секции [network] добавить две строчки, которых по умолчанию нет (см. выше beforeifconf, afterifconf). Данные параметры используют стандартный скрипт /sbin/change_route.sh, регистрируя активную в определённый момент времени ноду кластера, а также логируя переключения. Без этих строчек ноды будут регулярно и циклически перезагружаться.
Далее необходимо настроить интерфейсы. Параметры device и ident необходимо заполнять в соответствии с номерами интерфейсов так, как это показано выше в конфигурационном файле. В параметре activeip указывается адрес интерфейса, по которому осуществляется доступ к координатору в сети (обычный сетевой адрес), а также маска подсети. Основываясь на нём, следует видоизменить этот адрес (как правило меняя первую цифру в октете на другую, например, вместо 10 проставить 20), при этом маску следует указать нулевую. Параметр testip предполагают проверку адреса шлюза по умолчанию на активной ноде, в данном случае шлюз находится за интерфейсом eth0 и его адрес – 10.26.0.1. При отсутствии доступности шлюза, выполняется переключение ноды. Неправильная настройка этого параметра может привести к циклической перезагрузке обоих нод. При невозможности обеспечения такой проверки или другим причинам, зачастую в параметре testip указывается петля 127.0.0.1.
Наконец, необходимые изменения нужно внести в секцию [sendconfig]. Параметр activeip в [sendconfig] указывает адрес перемычки соседней ноды. Таким образом, адрес 192.168.26.2 назначен не на настраиваемой в данный момент первой ноде, а на соседней, которую потребуется настроить позднее. Далее необходимо убедиться, что параметр [device] указывает тот интерфейс, на котором развёрнута перемычка (в данном случае eth3).
После выполнения этих действий можно переходить на вторую ноду кластера, где подняты и скоммутированы те же интерфейсы, а на перемычке назначен другой адрес, доступный из той же подсети. Выполнив те же три команды failover stop, failover config mode cluster, failover config edit, открывается конфигурационный файл второй ноды. Необходимо отметить, что активный адрес всегда один, а пассивных два и они различаются на разных нодах для одного интерфейса. Наиболее стандартный приём для настройки второй ноды – копирование конфигурационного файла первой ноды и добавление к последнему октету пассивного адреса единицы (например, пассивный адрес первой ноды – 21.26.0.6, значит второй ноды – 21.26.0.7). Наконец, следует в секции [sendconfig] исправить адрес соседней ноды - 192.168.26.1. Ниже показан конфигурационный файл второй ноды (жирным шрифтом выделены строки, которые необходимо изменять).checktime = 30
timeout = 4
activeretries = 5
channelretries = 5
synctime = 5
fastdown = yes
beforeifconf = /sbin/change_route.sh before
afterifconf = /sbin/change_route.sh after
[channel]
device = eth0
ident = iface-0
activeip = 10.26.0.6/29
passiveip = 21.26.0.7/0
testip = 10.26.0.1
checkonlyidle = yes
[channel]
device = eth2
ident = iface-2
activeip = 10.26.0.129/25
passiveip = 21.26.0.130/0
testip = 127.0.0.1
checkonlyidle = no
[sendconfig]
activeip = 192.168.26.1
sendtime = 60
device = eth3
config = yes
keys = yes
journals = yes
port = 10090
[misc]
activeconfig = /etc/iplirpsw
passiveconfig = /etc/iplirpsw
maxjournal = 30 #days
reboot = yes
[debug]
debuglevel = 3
debuglogfile = syslog:daemon.debug
[events]
На этом настройка кластера завершена. Последним моментом является выполнение команды failover start на обоих нодах кластера. Какая-то из нод обязательно уйдёт в перезагрузку, также возможна перезагрузка обоих нод, причём несколько раз. Необходимо выждать некоторое время, после чего убедиться, что ноды больше не перезагружаются.
С помощью команды failover show info можно вывести на экран статус кластера горячего резервирования. Таким образом выглядит правильно функционирующий кластер (соседняя нода должна отображаться, строчка выделена жирным). Зеркальная картина должна быть на соседней ноде при выполнении той же команды.
*local | *remote | |
failover mode | *active | *passive |
failover uptime | *15d 7:47 | *15d 7:46 |
total cpu | *22% | *2% |
total memory | *2014032 kB | *2014032 kB |
free memory | *1632852 kB | *1662048 kB |
failover state | *works | *works |
failover cpu | *0% | *0% |
iplir state | *works | *works |
iplir cpu | *3% | *2% |
mftp state | *works | *works |
mftp cpu | *34% | *0% |
alg state | *works | *stopped |
alg cpu | *0% | *0% |
webgui state | *works | *stopped |
webgui cpu | *0% | *0% |
Для уверенности, что ноды переключаются корректно, следует отправить в перезагрузку активную ноду или переключить её в пассивный режим командой failover start passive, после чего убедиться, что соседняя нода стала активной. Если ноды правильно переключаются, значит кластер настроен верно.
Примечание. В дополнении к этому, если на координаторе может быть поднят транковый интерфейс или на существующий интерфейс назначена другая адресация (в ViPNet в первом случае обозначается интерфейс 1.72, где цифра до точки – номер интерфейса eth, после точки – идентификатор VLAN; во втором случае – 2:0, где цифра до двоеточия – номер интерфейса eth; после двоеточия – порядковый номер, начиная с нуля). В таком случае данные интерфейсы также необходимо прописывать в конфигурационных файлах. В любом случае, все интерфейсы за исключением перемычки должны быть упомянуты в конфигурационном файле failover в секции [channel]. Далее показано, каким образом следует называть интерфейсы в конфигурационном файле, если они являются транковыми (первый случай) или дополнительными (второй случай):
device = eth2:0
ident = iface-2:0
...
[channel]
device = eth1.72
ident = iface-1.72