1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/lengchuan-Linux-Tutorial

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Nginx-Keepalived-Install-And-Settings.md 11 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 02.12.2024 23:55 959b30e

Nginx + Keepalived: обеспечение высокой доступности

Описание

  • Высокая доступность (High Availability, HA) — это технология, которая позволяет обеспечить непрерывность работы приложения в случае сбоя. Основная цель — минимизировать влияние сбоев на бизнес-процессы и повысить прибыль компании.
  • Для обеспечения высокой доступности используется программное обеспечение Keepalived. Оно обычно работает в связке с балансировщиком нагрузки (LVS, HAProxy, Nginx).
  • Keepalived поддерживает два режима работы: активный/пассивный и кластеризация.
  • Ключевые термины:
    • «сердцебиение» — мастер Keepalived отправляет пакеты проверки активности резервному серверу и внешним клиентам. Резервный сервер готов принять управление в любой момент.
    • «выборы» — при сбое мастера Keepalived резервные серверы проводят выборы нового мастера.
  • Основные сведения о Keepalived:

Настройка

Программное обеспечение:

  • Nginx: версия 1.8.1;
  • Keepalived: версия 1.2.20;
  • JDK: версия 8u72;
  • Tomcat: версия 8.0.32.

Среда развёртывания (обозначена как «№ n»):

  • виртуальный IP-адрес (VIP): 192.168.1.50;
  • сервер № 1 (мастер): Nginx 1 + Keepalived 1 = 192.168.1.120;
  • сервер № 2 (резервный): Nginx 2 + Keepalived 2 = 192.168.1.121;
  • сервер № 3 (Tomcat 1): Tomcat 1 = 192.168.1.122;
  • сервер № 4 (Tomcat 2): Tomcat 2 = 192.168.1.123.

Все серверы должны быть синхронизированы по времени (см. NTP).

На серверах № 3 и № 4 необходимо установить и настроить Tomcat (см. инструкции).

Для серверов № 1 и № 2 процесс настройки включает следующие шаги:

  1. Установка Nginx (см. инструкцию).
  2. Создание виртуального IP-адреса:
    1. Скопируйте информацию о сетевой карте: sudo cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0:0.
    2. Отредактируйте файл конфигурации: sudo vim /etc/sysconfig/network-scripts/ifcfg-eth0:0 и внесите следующие изменения:
      • DEVICE: измените значение на eth0:0.
      • IPADDR: укажите нужный IP-адрес.
      • PREFIX: задайте длину префикса подсети.
      • GATEWAY: укажите адрес шлюза.
      • DNS1: укажите адрес DNS-сервера.
      1. Перезапустите сетевую службу: service network restart.
  3. Установите Keepalived:
    1. Установите необходимые зависимости: sudo yum install -y gcc openssl-devel popt-devel.
    2. Распакуйте пакет: cd /opt/setups/; tar zxvf keepalived-1.2.20.tar.gz.
    3. Скомпилируйте пакет: cd /opt/setups/keepalived-1.2.20; ./configure --prefix=/usr/program/keepalived.
    4. Установите пакет: make && make install.
  4. Настройте Keepalived для автоматического запуска и управления службой:
    1. Скопируйте конфигурационный файл в каталог скриптов запуска: cp /usr/program/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/keepalived.
    2. Предоставьте файлу права на выполнение: chmod +x /etc/init.d/keepalived.
    3. Отредактируйте конфигурационный файл: vim /etc/init.d/keepalived и замените строку . /etc/sysconfig/keepalived на . /usr/program/keepalived/etc/sysconfig/keepalived.
    4. Добавьте переменные окружения в файл /etc/profile:
      # Keepalived configuration
      KEEPALIVED_HOME=/usr/program/keepalived
      PATH=$PATH:$KEEPALIVED_HOME/sbin
      export KEEPALIVED_HOME
      export PATH
    5. Обновите переменные среды: source /etc/profile.
    6. Проверьте установку переменных: keepalived -v.
    7. Создайте символическую ссылку: ln -s /usr/program/keepalived/sbin/keepalived /usr/sbin/
    8. Отредактируйте основной конфигурационный файл Keepalived: vim /usr/program/keepalived/etc/sysconfig/keepalived, и измените строку KEEPALIVED_OPTIONS="-D" на KEEPALIVED_OPTIONS="-D -f /usr/program/keepalived/etc/keepalived/keepalived.conf".
    9. Включите автоматический запуск службы: chkconfig keepalived on.

После выполнения этих шагов на серверах № 1 и № 2 можно приступить к настройке Keepalived (см. ниже). upstream tomcatCluster { server 192.168.1.122:8080 weight=1; server 192.168.1.123:8080 weight=1; }

server { listen 80; server_name 192.168.1.50;

location / {
    proxy_pass http://tomcatCluster;
    index index.html index.htm;
}

}

Keepalived 配置文件编辑 (第一、二台配置稍微不同,不同点具体看下面重点说明)
- 编辑: `vim /usr/program/keepalived/etc/keepalived/keepalived.conf`

! Configuration File for keepalived

全局配置

global_defs { # 邮箱通知配置,keepalived 在发生切换时需要发送 email 到的对象,一行一个 notification_email { #acassen@firewall.loc #failover@firewall.loc #sysadmin@firewall.loc } # 指定发件人 #notification_email_from Alexandre.Cassen@firewall.loc # 指定smtp服务器地址 #smtp_server 192.168.200.1 # 指定smtp连接超时时间,单位秒 #smtp_connect_timeout 30

router_id LVS_DEVEL
vrrp_skip_check_adv_addr
vrrp_strict

}

(重点)脚本监控实现

vrrp_script check_nginx { # 运行脚本 script "/opt/bash/nginx_check.sh" # 时间间隔,2秒 interval 2 # 权重 weight 2 }

vrrp_instance VI_1 { # (重点)Backup 机子这里是设置为:BACKUP state MASTER interface eth0 virtual_router_id 51 # (重点)Backup 机子要小于当前 Master 设置的 100,建议设置为 99 priority 100 # Master 与 Backup 负载均衡器之间同步检查的时间间隔,单位是秒 advert_int 1 authentication { auth_type PASS auth_pass 1111 }

# (重点)配置虚拟 IP 地址,如果有多个则一行一个
virtual_ipaddress {
    192.168.1.50
}

# (重点)脚本监控调用
track_script {
    check_nginx
}

}

### 启动各自服务

- 四台机子都停掉防火墙: `service iptables stop`
- 先启动两台 Tomcat: `sh /usr/program/tomcat8/bin/startup.sh ; tail -200f /usr/program/tomcat8/logs/catalina.out`
    - 检查两台 Tomcat 是否可以单独访问,最好给首页加上不同标识,好方便等下确认是否有负载
        - `http://192.168.1.122:8080`
        - `http://192.168.1.123:8080`
- 启动两台 Nginx 服务: `/usr/local/nginx/sbin/nginx`
- 启动两台 Keepalived 服务: `service keepalived start`
- 查看 Master 和 Backup 两台主机的对应日志: `tail -f /var/log/messages`

### 高可用测试

- 模拟 Keepalived 挂掉
    - 关闭 Master 主机的 Keepalived,查看 Master 和 Backup 两台主机的对应日志: `tail -f /var/log/messages`
        - 关闭服务: `service keepalived stop`
        - 如果第二台机接管了,则表示成功
    - 重新开启 Master 主机的 Keepalived,查看 Master 和 Backup 两台主机的对应日志: `tail -f /var/log/messages`
        - 重启服务: `service keepalived restart`
        - 如果第一台机重新接管了,则表示成功
- 模拟 Nginx 挂掉
    - 关闭 Master 主机的 Nginx,查看 Master 和 Backup 两台主机的对应日志: `tail -f /var/log/messages`
        - 关闭服务: `/usr/local/nginx/sbin/nginx -s stop`
        - 如果第二台机接管了,则表示成功
    - 重新开启 Master 主机的 Nginx,查看 Master 和 Backup 两台主机的对应日志: `tail -f /var/log/messages`
        - 重启 Nginx 服务: `/usr/local/nginx/sbin/nginx -s reload`
        - 重启 Keepalived 服务: `service keepalived restart`
        - 如果第一台机重新接管了,则表示成功

Можно оптимизировать некоторые моменты, чтобы перейти на режим двойного основного горячего резерва с мониторингом сценариев, которые включают детали автоматического запуска.

В журнале часто встречаются следующие фразы:

* `Entering to MASTER STATE`, переход в состояние Master.
* `Netlink reflector reports IP 192.168.1.50 added`, обычно при переходе в состояние Master, необходимо повторно добавить виртуальный IP-адрес, который обычно называется «перемещение виртуального IP-адреса на главный компьютер».
* `Entering BACKUP STATE`, переход в состояние Backup.
* `Netlink reflector reports IP 192.168.1.50 removed`, обычно при переходе в состояние Backup, необходимо удалить виртуальный IP-адрес, что обычно называют «перемещение виртуального IP-адреса с главного компьютера».
* `VRRP_Script(check_nginx) succeeded`, сценарий мониторинга успешно выполнен.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/lengchuan-Linux-Tutorial.git
git@api.gitlife.ru:oschina-mirror/lengchuan-Linux-Tutorial.git
oschina-mirror
lengchuan-Linux-Tutorial
lengchuan-Linux-Tutorial
master