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

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

при статусе:

```bash
psql -p 19999 -c "show pool_nodes"
```

```bash
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
```

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

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

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

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

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

```bash
Stop_all
```

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

```bash
Start on wislaserver01
```

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

```bash
psql -p 19999 -c "show pool_nodes"
```

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

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

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

```bash
ip a
```

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

```bash
ip a
```

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

```bash
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».

```bash
[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» -&gt; «Pgpool management» выполнить:

```bash
Stop on wislaserver04
```

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

```bash
Stop on wislaserver04
```

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

```bash
Start on wislaserver04
```

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

```bash
ip a
```

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

```bash
ip a
```

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

```bash
[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 в конце команды):

```bash
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».

```bash
[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 выполнить команду:

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

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

```bash
database system is ready to accept read only connections
```

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

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

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

```bash
ls /mnt/glusterVol/current/
```

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

```bash
Stop_all
```

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

```bash
Stop_all
```

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

```bash
Stop_all
```

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

```bash
Start_all
```

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

```bash
Start_all
```

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

```bash
Start_all
```

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

```bash
Start_all
```

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