Оформление
План развертывания Keepalived+Nginx
1. Обзор
Nginx может использоваться в качестве обратного прокси-сервера для обеспечения балансировки нагрузки, что позволяет нашим веб-серверам горизонтально масштабироваться для обработки большего количества пользовательских запросов.
Но обратный прокси-сервер становится единственной точкой, когда обратный прокси-сервер зависает, интеграционный веб-сервер не может быть доступен для внешнего мира, поэтому мы должны убедиться, что обратный прокси-сервер имеет высокую доступность.
Keepalived - это высокопроизводительный сервер высокой доступности или решение горячего резервирования, которое может быть использовано для предотвращения возникновения единой точки отказа сервера, с помощью Nginx можно добиться высокой доступности внешних веб-сервисов.
2. Планирование программы
Примечание: VIP - это виртуальный IP-адрес, который можно настраивать, не занимая его.
| VIP | IP-адрес сервера | имя хоста (компьютера, подключенного к сети) | порт nginx | По умолчанию Ведущий-ведомый |
|---|---|---|---|---|
| 192.168.5.200 | 192.168.5.249 | этан3 | 80 | МАСТЕР |
| 192.168.5.200 | 192.168.5.103 | localhost.localdomain | 80 | РЕЗЕРВНАЯ КОПИЯ |
3. Программа для пользователей Экстранет
3.1 Установка Nginx
Установите и настройте Nginx на обоих серверах. Подробнее см. в разделе Установка и настройка Nginx в Linux.
3.2 Установка Keepalived
Keepalived установлен на обоих серверах.
Выполните команду:
yum -y install keepalived3.3 Настройка запуска службы keepalived во время загрузки
Оба сервера должны выполнить следующее утверждение. Операторы показаны ниже:
chkconfig keepalived on
3.4 Изменение файла конфигурации Keepalived
Путь:/etc/keepalived/keepalived.conf
3.4.1 Файл конфигурации узла MASTER
!
Конфигурационный файл для keepalived global_defs { ## Оповещения по электронной почте, которые приходят с keepalived, требуют включения службы sendmail.
Рекомендуется использовать отдельный монитор или сторонний SMTP router_id ethan3 ## Строка, идентифицирующая этот узел, обычно имя хоста } ## keepalived будет регулярно выполняет сценарий и анализирует результаты для динамической настройки приоритета vrrp_instance. Если в результате выполнения скрипта получен 0, а вес конфигурации больше 0, приоритет будет соответственно увеличен. Если результат выполнения сценария не 0, а значение веса меньше 0, приоритет соответственно уменьшается.
Во всех остальных случаях сохраняется настроенный приоритет, то есть значение, соответствующее приоритету в конфигурационном файле. vrrp_script chk_nginx { script "/etc/keepalived/nginx_ check.sh" ## Определение приоритета сервера.
check.sh" ## Путь к скрипту для проверки состояния nginx интервал 2 ## Проверка интервала вес -20 ##
Вес -20, если условие выполняется } ## Определяем виртуальный маршрут, VI_1 - идентификатор виртуального маршрута, define name vrrp_instance VI_1 { state MASTER ## Master node is MASTER, corresponding backup node is MASTER.
MASTER ## Главный узел - MASTER, соответствующий резервный узел - BACKUP interface eno16777736 ## Сетевой интерфейс для привязки виртуального IP, такой же, как локальный IP-адрес. интерфейс, такой же, как локальный IP-адрес.
virtual_router_id 33 ## Идентификационный номер виртуального маршрута, должен быть одинаковым для обоих узлов, опционально используется последний сегмент IP-адреса, такой же, как последний сегмент IP-адреса.
VRID - это группа, которая будет определять MAC-адрес многоадресной рассылки mcast_src_ip 192.168.5.249 ## Приоритет локального IP-адреса
200 ## Приоритет узла, диапазон значений 0-254, MASTER выше, чем BACKUP advert_int 1 ## Интервал отправки многоадресных сообщений.
Оба узла должны иметь одинаковые настройки, по умолчанию 1 с ## Установка информации об аутентификации, оба узла должны иметь одинаковые настройки аутентификации { auth_type PASS auth
_pass 1111 ## Реальный продакшн, соответствуем этому по требованию } ## Добавляем блок track_script в блок экземпляра track_ script { chk_ngin { ## Добавляем track_script в блок экземпляра.
script { chk_nginx ## Выполнение контролируемых Nginx сервисов } # # Виртуальный IP-пул, оба узла должны иметь одинаковые настройки.
должны быть одинаковыми virtual_ipaddress { 192.168.5.200 ## виртуальный ip, можно задать несколько } }3.4.2 Файл конфигурации узла BACKUP
!
Конфигурационный файл для keepalived global_defs { router_id localhost.localdomain } vrrp_script&
nbsp;chk_nginx { скрипт "/etc/keepalived/nginx_check.sh" interval 2 weight -20 } vrrp_
instance VI_1 { state BACKUP interface ens192 virtual_router_id 33 mcast_src_ip
192.168.5.103 приоритет 90 advert_int 1 аутентификация { auth_type PASS
auth_pass 1111 } track_script { chk_nginx } virtual_ipaddress { 192.168.
5.200 } }Следует обратить внимание на конфигурацию:
1) router_id ethan3 ## Строка, идентифицирующая данный узел, обычно имя хоста.
Это можно определить, используя утверждение hostname в сервере. Это показано на рисунке ниже:

2) скрипт "/etc/keepalived/nginx_check.sh" ## Путь к скрипту, который определяет состояние nginx без модификации, см. раздел 3.5 этого документа.
3) state MASTER/BACKUP ## Укажите мастер/резервное копирование.
4) интерфейс eno16777736 ## Сетевой интерфейс, к которому привязан виртуальный IP, совпадает с сетевым интерфейсом, на котором расположен локальный IP-адрес.
Это можно определить с помощью ip a. Это показано на рисунке ниже:
Примечание: Значение в файле конфигурации главного узла - это номер сетевой карты главного узла; значение в файле конфигурации резервного узла - это номер сетевой карты резервного узла.

5) mcast_src_ip 192.168.5.249 ## Локальный IP-адрес.
6) priority 200 ## Приоритет узла, диапазон значений 0-254, MASTER выше, чем BACKUP.
7) virtual_ipaddress ## виртуальный ip, т.е. VIP, настраиваемый, может быть определено несколько.
3.5 Написание скриптов запуска Nginx с сохранением состояния
Следующий файл необходимо записать на обоих серверах, изменив путь к nginx соответствующим образом.
Напишите скрипт проверки состояния Nginx /etc/keepalived/nginx_check.sh (уже настроен в Keepalived.conf) Требования к скрипту.
#!
/bin/bash A=`ps -C nginx --no-header |wc -l` if [ $A -eq 0 ];then /usr/nginx/sbin/
nginx sleep 2 if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then killall
keepalived fi fiДайте права на файл:chmod +x /etc/keepalived/nginx_check.sh
3.6 Запуск Keepalived
Оба сервера выполняют следующий оператор:
systemctl start keepalived3.7 Эффекты просмотра
Примечание: Если на узле есть виртуальный IP, вы можете получить доступ к соответствующему nginx и соответствующим файлам ниже через виртуальный IP.
1) Используя оператор ip addr, вы можете увидеть, что виртуальный IP 192.168.5.200 привязан к серверу MASTER. Это показано на рисунке ниже:

и на узле BACKUP нет виртуального IP. Как показано на следующем рисунке:

2) Используйте systemctl stop keepalived, чтобы остановить службу keepalived на главном узле с виртуальным IP на резервном узле. Как показано на следующем рисунке:

4. Программа для пользователей Интранета
4.1 Описание этапов
Пользователи интрасети не могут установить Keepalived online. Разница между решением для пользователей интрасети и решением для пользователей экстрасети описана в разделе 3.2, но остальные шаги одинаковы.
4.2 Установка Keepalived в автономном режиме
Оба сервера должны выполнить следующие действия.
4.2.1 Этапы установки
1) Загрузите установочный пакет. Посетите URL: https: //www.keepalived.org/download.md и загрузите установочный пакет Keepalived.
2) Распакуйте и установите.
Загрузите установочный пакет в папку на сервере (пример документации: /wendy ), перейдите в папку, в которой находится установочный пакет, и выполните следующие действия:
cd /wendy tar -zxvf keepalived-2.0.18.tar.gz # Извлеките егоcd /wendy/keepalived-2.0.18 # Путь изменен соответствующим образом.. /configure --prefix=/usr/local/keepalived # компиляцияmake && make install # Установить4.2.2 Установка Keepalived в качестве системной службы Linux
1) Скопируйте файл keepalived.conf в папку /etc/keepalived/.
mkdir /etc/keepalived cp /wendy/keepalived-2.0.18/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/2) Скопируйте сценарий службы keepalived на адрес по умолчанию:
cp /wendy/keepalived-2.0.18/keepalived/etc/init.d/keepalived /etc/init.d/ cp /wendy/keepalived-2.0.18/keepalived/etc /sysconfig/keepalived /etc/sysconfig/