Перейти к основному контенту

Действия по восстановлению работы кластера при выходе из строя одного из узлов ЦОД1

Отказоустойчивый кластер фактически рассчитан только на один отказ одного из узлов кластера, после которого требуется восстановление его работы. В случае выхода из строя двух узлов система перестаёт функционировать.

при статусе:

psql -p 19999 -c "show pool_nodes"
node_id | hostname | port | status | lb_weight | role
---------+---------------+------+--------+-----------+---------
0 | wislaserver01 | 5432 | 3 | 0.500000 | standby
1 | wislaserver04 | 5432 | 2 | 0.500000 | primary

1)стопнуть вторую ноду из инсталлера
2)запустить вторую ноду из инсталлера

/opt/wisla5/pgpool/current/bin/pcp_recovery_node -p 9898 -h 10.198.2.17 -U wisla 1
#Password:  wisla

Дождаться выполнения -> все ок

Выход из строя ЦОД1


При выходе из строя ЦОД1 все компоненты переходят в активный режим на ЦОД2:

  • Pgpool на сервере wislaserver04 переводит PostgreSQL в режим master и активирует alias на интерфейс на сервере;
  • Hadoop и HBase на сервере wislaserver05 переходят в режим active;
  • wiSLA на сервере wislaserver06 забирает себе все задачи, которые ранее были распределены
    между двумя серверами.

В данном случае требуется восстановить согласованность данных и перенести активные модули на ЦОД1. Потребуется полная остановка и запуск системы на обоих ЦОД. Для этого нужно выполнить следующие действия:
1. Восстановить связь между узлами кластера.
2. В отдельной сессии SSH на сервере wislaserver07 под пользователем wisla запустить программу установки.
3. В разделе «Maintenance» -> «wiSLA management» остановить wiSLA на всех серверах:

Stop_all

4. В разделе «Maintenance» -> «Pgpool management» запустить Pgpool на сервере wislaserver01:

Start on wislaserver01

5. Убедиться в том, что Pgpool на сервере wislaserver01 активирован. Для этого в разделе «Statuses» выбрать «Pgpool status».
6. В отдельной сессии SSH открыть shell сервера wislaserver04 под пользователем wisla.
7. На сервере wislaserver04 выполнить команду для просмотра состояния узлов PostgreSQL:

psql -p 19999 -c "show pool_nodes"

8. Убедиться в том, что сервер wislaserver04 имеет status «2» (активен) и role «primary», а wislaserver01 имеет status «3» (неактивен) и role «standby»:

node_id | hostname | port | status | lb_weight | role
---------+---------------+------+--------+-----------+---------
0 | wislaserver01 | 5432 | 3 | 0.500000 | standby
1 | wislaserver04 | 5432 | 2 | 0.500000 | primary

9. На сервере wislaserver04 выполнить команду:

ip a

и убедиться в наличии alias «eth0:10» на интерфейсе «eth0» .
10. В отдельной сессии SSH открыть командную строку сервера wislaserver01 под пользователем wisla.
11. На сервере wislaserver01 выполнить команду:

ip a

и убедиться в отсутствии alias «eth0:10» на интерфейсе «eth0».
12. На сервере wislaserver04 выполнить команду:

LD_LIBRARY_PATH=/opt/wisla5/pgpool/current/lib/ pcp_recovery_node -d 0 127.0.0.1 9898 wisla wisla 0

13. Дождаться выполнения команды, должно снова появиться приглашение для ввода.
14. Снова выполнить команду для просмотра состояния узлов PostgreSQL и убедиться в том, что сервер wislaserver01 уже имеет status «2» (активен) и role «primary», а wislaserver04 сохранил status «2» (активен), но изменил role на «standby».

[wisla@wislaserver04 ~]$ psql -p 19999 -c "show pool_nodes"
node_id | hostname | port | status | lb_weight | role
---------+---------------+------+--------+-----------+---------
0 | wislaserver01 | 5432 | 2 | 0.500000 | primary
1 | wislaserver04 | 5432 | 2 | 0.500000 | standby

15. В открытой программе установки остановить Pgpool на сервере wislaserver04. Для этого в разделе «Maintenance» -> «Pgpool management» выполнить:

Stop on wislaserver04

16. В открытой программе установки остановить PostgreSQL на сервере wislaserver04. Для этого в разделе «Maintenance» -> «Postgresql management» выполнить:

Stop on wislaserver04

17. В открытой программе установки запустить Pgpool на сервере wislaserver04. Для этого в разделе «Maintenance» -> «Pgpool management» выполнить:

Start on wislaserver04

18. Убедиться в том, что Pgpool на сервере wislaserver04 активирован. Для этого в разделе «Statuses» выбрать «Pgpool status».
19. На сервере wislaserver04 выполнить команду:

ip a

и убедиться в отсутствии alias «eth0:10» на интерфейсе «eth0».
20. На сервере wislaserver01 выполнить команду:

ip a

и убедиться в наличии alias «eth0:10» на интерфейсе «eth0».
21. На сервере wislaserver01 выполнить команду для просмотра состояния узлов PostgreSQL и убедиться в том, что сервер wislaserver01 имеет status «2» (активен) и role «primary», а wislaserver04 имеет status «3» (неактивен) и role «standby».

[wisla@wislaserver01 ~]$ psql -p 19999 -c "show pool_nodes"
node_id | hostname | port | status | lb_weight | role
---------+---------------+------+--------+-----------+---------
0 | wislaserver01 | 5432 | 2 | 0.500000 | primary
1 | wislaserver04 | 5432 | 3 | 0.500000 | standby

22. На сервере wislaserver01 выполнить команду (обратить внимание на замену числа 0 на 1 в конце команды):

LD_LIBRARY_PATH=/opt/wisla5/pgpool/current/lib/ pcp_recovery_node -d 0 127.0.0.1 9898 wisla wisla 1

23. Дождаться выполнения команды, должно снова появиться приглашение для ввода.
24. На сервере wislaserver01 повторно выполнить команду для просмотра состояния узлов PostgreSQL и убедиться в том, что сервер wislaserver01 сохранил status «2» (активен) и role «primary», а wislaserver04 изменил status на «2» (активен), role осталась «standby».

[wisla@wislaserver01 ~]$ psql -p 19999 -c "show pool_nodes"
node_id | hostname | port | status | lb_weight | role
---------+---------------+------+--------+-----------+---------
0 | wislaserver01 | 5432 | 2 | 0.500000 | primary
1 | wislaserver04 | 5432 | 2 | 0.500000 | standby

25. На сервере wislaserver04 выполнить команду:

tail -n 10 /home/wisla/postgresql/postgres.log

и убедиться в наличии строки:

database system is ready to accept read only connections

26. В отдельной сессии SSH открыть командную строку сервера wislaserver02 под пользователем root.
27. На сервере wislaserver02 выполнить команды:

systemctl start glusterd  #/etc/init.d/glusterd start
mount -t glusterfs wislaserver05:/namenodevol /mnt/glusterVol/

28. На сервере wislaserver02 убедиться в наличии непустого каталога /mnt/glusterVol/current/ 

ls /mnt/glusterVol/current/

29. В открытой программе установки в разделе «Maintenance» -> «HBase management» выполнить остановку HBase на всех серверах:

Stop_all

30. В открытой программе установки в разделе «Maintenance» -> «Hadoop management» выполнить остановку Hadoop на всех серверах:

Stop_all

31. В открытой программе установки в разделе «Maintenance» -> «Zookeeper management» выполнить остановку Zookeeper на всех серверах:

Stop_all

32. В открытой программе установки в разделе «Maintenance» -> «Zookeeper management» выполнить запуск Zookeeper на всех серверах:

Start_all

33. В открытой программе установки в разделе «Maintenance» -> «Hadoop management» выполнить запуск Hadoop на всех серверах:

Start_all

34. В открытой программе установки в разделе «Maintenance» -> «HBase management» выполнить запуск HBase на всех серверах:

Start_all

35. В открытой программе установки в разделе «Maintenance» -> «wiSLA management» выполнить запуск wiSLA на всех серверах:

Start_all

36. После запуска wiSLA проверить состояние компонентов системы в разделе «Statuses» -> «All statuses» и убедиться в работоспособности портала wiSLA.