Отказоустойчивый кластер — различия между версиями

Материал из Wiki AlterOS
Перейти к: навигация, поиск
(Завершена статья установки отказоустойчивого кластера.)
Строка 1: Строка 1:
 +
__FORCETOC__
 +
== Настройка кластера Pacemaker ==
 +
В данной статье будет рассмотрена установка и настройка отказоустойчивого кластера при помощи программного комплекса '''pacemaker''' (все команды выполняются с правами суперпользователя). Для того, чтобы приступить к настройке, необходимо 2 компьютера с установленной на них операционной системой AlterOS. На обоих компьютерах необходимо выполнить следующие действия:
 +
Задаём имя компьютеров при помощи правки файла
  
== Настройка кластера Pacemaker ==
+
# sudo nano /etc/hostname  
В данной статье будет рассмотрена установка и настройка отказоустойчивого кластера при помощи программного комплекса '''pacemaker''' (все команды выполняются с правами суперпользователя). Для того, чтобы приступить к настройке вам необходимо 2 компьютера с установленной на них операционной системой AlterOS. Дальше на обоих компьютерах необходимо выполнить следующие действия:
 
Задаём имя компьютеров при помощи правки файла ''/etc/hostname''. На главном компьютере задаём имя ''node1'':
 
  
echo 'node1' > /etc/hostname
+
На главном компьютере задаём имя ''node1''.
  
На второстепенном компьютере задаём имя ''node2'':
+
На второстепенном компьютере задаём имя ''node2''.
  
echo 'node2' > /etc/hostname
+
'''Все следующие команды необходимо выполнить на обоих компьютерах'''
  
== Все следующие команды необходимо выполнить на обоих компьютерах ==
 
 
Обновляем систему:
 
Обновляем систему:
  
yum update
+
# sudo yum update
  
Дальше настраиваем время:
+
Настраиваем время. Необходимо, чтобы на всех нодах было одинаковое время. Устанавливаем утилиту для синхронизации даты и времени:
Необходимо, чтобы на всех нодах было одинаковое время. Устанавливаем утилиту для синхронизации даты и времени:
 
  
yum install ntpdate
+
# sudo yum install ntpdate
  
 
Настраиваем синхронизацию по расписанию:
 
Настраиваем синхронизацию по расписанию:
  
echo '0 0 * * * /usr/sbin/ntpdate ru.pool.ntp.org' >/etc/crontab
+
# sudo echo '0 0 * * * /usr/sbin/ntpdate ru.pool.ntp.org' | sudo tee -a /etc/crontab
  
 
Выставляем нужный часовой пояс:
 
Выставляем нужный часовой пояс:
  
cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime
+
# sudo cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime
  
 
Синхронизируем время:
 
Синхронизируем время:
  
ntpdate ru.pool.ntp.org
+
# sudo ntpdate ru.pool.ntp.org
 
 
Отключаем firewall:
 
 
 
systemctl disable firewalld.service
 
systemctl stop firewalld.service
 
  
Отключаем SELinux. Открываем файл /etc/selinux/config и заменяем в нём строчку "SELINUX=enforcing" на "SELINUX=permissive":
+
[[Отключение SElinux и Firewalld|Отключаем firewall и SELinux:]]
  
nano /etc/selinux/config
+
Устанавливаем пакеты для работы с кластером:
  
Дальше устанавливаем пакеты для работы с кластером:
+
# sudo yum install pacemaker pcs resource-agents
 
 
yum install pacemaker pcs resource-agents
 
  
 
Задаем пароль для учетной записи hacluster, которая была создана автоматически при установке pacemaker:
 
Задаем пароль для учетной записи hacluster, которая была создана автоматически при установке pacemaker:
  
passwd hacluster
+
# sudo passwd hacluster
  
 
Разрешаем сервис pcsd и запускаем его:
 
Разрешаем сервис pcsd и запускаем его:
  
systemctl enable pcsd
+
# sudo systemctl enable pcsd
systemctl start pcsd
+
# sudo systemctl start pcsd
  
  
 
== Сборка кластера (выполняется на компьютере '''node1''') ==
 
== Сборка кластера (выполняется на компьютере '''node1''') ==
  
Первым делом, авторизовываемся на серверах следующей командой:
+
Первым делом, авторизуемся на серверах следующей командой:
 +
 
 +
# sudo pcs cluster auth node1 node2 -u hacluster
  
pcs cluster auth node1 node2 -u hacluster
 
 
''* где node1 и node2 — имена серверов, hacluster — служебная учетная запись (создана автоматически при установке пакетов).''
 
''* где node1 и node2 — имена серверов, hacluster — служебная учетная запись (создана автоматически при установке пакетов).''
  
 
Создаем кластер:
 
Создаем кластер:
  
pcs cluster setup --force --name NLB node1 node2
+
# pcs cluster setup --force --name NLB node1 node2
 +
 
 
''* где NLB — название для кластера; node1 и node2 — серверы, которые должны входить в кластер.''
 
''* где NLB — название для кластера; node1 и node2 — серверы, которые должны входить в кластер.''
  
После успешного выполнения команды мы увидим, примерно, следующее:
+
После успешного выполнения команды мы увидим примерно следующее:
 +
 
 +
# Synchronizing pcsd certificates on nodes node1, node2...
 +
  node2: Success
 +
  node1: Success
  
Synchronizing pcsd certificates on nodes node1, node2...
 
node2: Success
 
node1: Success
 
 
''* где NLB — название для кластера; node1 и node2 — серверы, которые должны входить в кластер.''
 
''* где NLB — название для кластера; node1 и node2 — серверы, которые должны входить в кластер.''
  
 
Разрешаем автозапуск и запускаем созданный кластер:
 
Разрешаем автозапуск и запускаем созданный кластер:
  
pcs cluster enable --all
+
# sudo pcs cluster enable --all
pcs cluster start --all
+
 
 +
# sudo pcs cluster start --all
 +
 
 
''* опция --all говорит, что необходимо выполнить команду для всех нод, к которым мы подключились (вместо этой опции можно перечислить ноды вручную).''
 
''* опция --all говорит, что необходимо выполнить команду для всех нод, к которым мы подключились (вместо этой опции можно перечислить ноды вручную).''
  
 
При использовании 2-х нод (как в данном примере) отключаем stonith (нужен для «добивания» серверов, которые не смогли полностью завершить рабочие процессы) и кворум:
 
При использовании 2-х нод (как в данном примере) отключаем stonith (нужен для «добивания» серверов, которые не смогли полностью завершить рабочие процессы) и кворум:
  
pcs property set stonith-enabled=false
+
# sudo pcs property set stonith-enabled=false
pcs property set no-quorum-policy=ignore
+
 
 +
# sudo pcs property set no-quorum-policy=ignore
  
 
Просмотреть состояние можно командой:
 
Просмотреть состояние можно командой:
  
pcs status
+
# sudo pcs status
  
 
== Настройка виртуального IP ==
 
== Настройка виртуального IP ==
Строка 93: Строка 92:
 
Рассмотрим самый распространенный вариант использования Pacemaker. Он заключается в использовании виртуального IP-адреса, который будет назначаться активному узлу кластера. Для этого создаем ресурс командой:
 
Рассмотрим самый распространенный вариант использования Pacemaker. Он заключается в использовании виртуального IP-адреса, который будет назначаться активному узлу кластера. Для этого создаем ресурс командой:
  
pcs resource create virtual_ip ocf:heartbeat:IPaddr2 ip=192.168.0.15 cidr_netmask=24 op monitor interval=60s
+
# sudo pcs resource create virtual_ip ocf:heartbeat:IPaddr2 ip=<IP_ADDRESS> cidr_netmask=24 op monitor interval=60s
''* где virtual_ip — название ресурса (может быть любым); 192.168.0.15 — виртуальный IP, который будет назначен кластеру; 24 — префикс сети (соответствует маске 255.255.255.0); 60s — критическое время простоя, которое будет означать недоступность узла.''
+
 
 +
''* где virtual_ip — название ресурса (может быть любым); <IP_ADDRESS> — виртуальный IP, который будет назначен кластеру; 24 — префикс сети (соответствует маске 255.255.255.0); 60s — критическое время простоя, которое будет означать недоступность узла.''
  
 
Вводим команду:
 
Вводим команду:
  
pcs status
+
# sudo pcs status
  
 
Мы должны увидеть, примерно такую строку:
 
Мы должны увидеть, примерно такую строку:
  
virtual_ip    (ocf::heartbeat:IPaddr2):      Started node1
+
# sudo pcs status
 +
  virtual_ip    (ocf::heartbeat:IPaddr2):      Started node1
  
 
Для проверки, перезагружаем активную ноду (node1) командой:
 
Для проверки, перезагружаем активную ноду (node1) командой:
  
shutdown -r now
+
# sudo shutdown -r now
  
Через небольшой промежуток времени должен смениться узел с virtual_ip:
+
Через некоторое время должен смениться узел с virtual_ip:
  
pcs status
+
# sudo pcs status
virtual_ip    (ocf::heartbeat:IPaddr2):      Started node2
+
  virtual_ip    (ocf::heartbeat:IPaddr2):      Started node2
  
 
Для смены активной ноды ресурса, вводим команду:
 
Для смены активной ноды ресурса, вводим команду:
  
pcs resource move virtual_ip node1
+
# sudo pcs resource move virtual_ip node1

Версия 14:24, 23 апреля 2019

Настройка кластера Pacemaker

В данной статье будет рассмотрена установка и настройка отказоустойчивого кластера при помощи программного комплекса pacemaker (все команды выполняются с правами суперпользователя). Для того, чтобы приступить к настройке, необходимо 2 компьютера с установленной на них операционной системой AlterOS. На обоих компьютерах необходимо выполнить следующие действия: Задаём имя компьютеров при помощи правки файла

# sudo nano /etc/hostname 

На главном компьютере задаём имя node1.

На второстепенном компьютере задаём имя node2.

Все следующие команды необходимо выполнить на обоих компьютерах

Обновляем систему:

# sudo yum update

Настраиваем время. Необходимо, чтобы на всех нодах было одинаковое время. Устанавливаем утилиту для синхронизации даты и времени:

# sudo yum install ntpdate

Настраиваем синхронизацию по расписанию:

# sudo echo '0 0 * * * /usr/sbin/ntpdate ru.pool.ntp.org' | sudo tee -a /etc/crontab

Выставляем нужный часовой пояс:

# sudo cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime

Синхронизируем время:

# sudo ntpdate ru.pool.ntp.org

Отключаем firewall и SELinux:

Устанавливаем пакеты для работы с кластером:

# sudo yum install pacemaker pcs resource-agents

Задаем пароль для учетной записи hacluster, которая была создана автоматически при установке pacemaker:

# sudo passwd hacluster

Разрешаем сервис pcsd и запускаем его:

# sudo systemctl enable pcsd
# sudo systemctl start pcsd


Сборка кластера (выполняется на компьютере node1)

Первым делом, авторизуемся на серверах следующей командой:

# sudo pcs cluster auth node1 node2 -u hacluster

* где node1 и node2 — имена серверов, hacluster — служебная учетная запись (создана автоматически при установке пакетов).

Создаем кластер:

# pcs cluster setup --force --name NLB node1 node2

* где NLB — название для кластера; node1 и node2 — серверы, которые должны входить в кластер.

После успешного выполнения команды мы увидим примерно следующее:

# Synchronizing pcsd certificates on nodes node1, node2...
  node2: Success
  node1: Success

* где NLB — название для кластера; node1 и node2 — серверы, которые должны входить в кластер.

Разрешаем автозапуск и запускаем созданный кластер:

# sudo pcs cluster enable --all
# sudo pcs cluster start --all

* опция --all говорит, что необходимо выполнить команду для всех нод, к которым мы подключились (вместо этой опции можно перечислить ноды вручную).

При использовании 2-х нод (как в данном примере) отключаем stonith (нужен для «добивания» серверов, которые не смогли полностью завершить рабочие процессы) и кворум:

# sudo pcs property set stonith-enabled=false
# sudo pcs property set no-quorum-policy=ignore

Просмотреть состояние можно командой:

# sudo pcs status

Настройка виртуального IP

Рассмотрим самый распространенный вариант использования Pacemaker. Он заключается в использовании виртуального IP-адреса, который будет назначаться активному узлу кластера. Для этого создаем ресурс командой:

# sudo pcs resource create virtual_ip ocf:heartbeat:IPaddr2 ip=<IP_ADDRESS> cidr_netmask=24 op monitor interval=60s

* где virtual_ip — название ресурса (может быть любым); <IP_ADDRESS> — виртуальный IP, который будет назначен кластеру; 24 — префикс сети (соответствует маске 255.255.255.0); 60s — критическое время простоя, которое будет означать недоступность узла.

Вводим команду:

# sudo pcs status

Мы должны увидеть, примерно такую строку:

# sudo pcs status
  virtual_ip     (ocf::heartbeat:IPaddr2):       Started node1

Для проверки, перезагружаем активную ноду (node1) командой:

# sudo shutdown -r now

Через некоторое время должен смениться узел с virtual_ip:

# sudo pcs status
  virtual_ip     (ocf::heartbeat:IPaddr2):       Started node2

Для смены активной ноды ресурса, вводим команду:

# sudo pcs resource move virtual_ip node1