Nginx + Keepalived: обеспечение высокой доступности
Описание
Настройка
Программное обеспечение:
Среда развёртывания (обозначена как «№ n»):
Все серверы должны быть синхронизированы по времени (см. NTP).
На серверах № 3 и № 4 необходимо установить и настроить Tomcat (см. инструкции).
Для серверов № 1 и № 2 процесс настройки включает следующие шаги:
sudo cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0:0
.sudo vim /etc/sysconfig/network-scripts/ifcfg-eth0:0
и внесите следующие изменения:
service network restart
.sudo yum install -y gcc openssl-devel popt-devel
.cd /opt/setups/; tar zxvf keepalived-1.2.20.tar.gz
.cd /opt/setups/keepalived-1.2.20; ./configure --prefix=/usr/program/keepalived
.make && make install
.cp /usr/program/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/keepalived
.chmod +x /etc/init.d/keepalived
.vim /etc/init.d/keepalived
и замените строку . /etc/sysconfig/keepalived
на . /usr/program/keepalived/etc/sysconfig/keepalived
./etc/profile
:
# Keepalived configuration
KEEPALIVED_HOME=/usr/program/keepalived
PATH=$PATH:$KEEPALIVED_HOME/sbin
export KEEPALIVED_HOME
export PATH
source /etc/profile
.keepalived -v
.ln -s /usr/program/keepalived/sbin/keepalived /usr/sbin/
vim /usr/program/keepalived/etc/sysconfig/keepalived
, и измените строку KEEPALIVED_OPTIONS="-D"
на KEEPALIVED_OPTIONS="-D -f /usr/program/keepalived/etc/keepalived/keepalived.conf"
.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 )