临头一砖——代理服务器Nginx
Nginx策略搭配Tomcat集群实操手册(二进制安装和Docker容器安装)
Keepalived搭配Nginx的高可用策略验证和实操
Keepalived搭配Nginx的高可用策略验证遇到的问题以及解决方案
1. 高可用架构
保障Nginx的稳定,主Nginx是否宕机。
2. 启动集群Tomcat
/e3base/tomcat/bin/startup.sh
3. 安装备份节点Nginx
备份的Nginx节点为e3base04,主节点为e3base03。
PS(make install 是默认安装到root用户路径下面:/usr/local/nginx,修改的配置文件也在这个下面修改才有作用)。
4. 安装KeepAlive
安装在/usr/local目录下
4.1. 改名
4.2../configure和make install
4.3. Make install
5. 配置
参考博客:https://www.jianshu.com/p/426b3261f9d0
5.1. 修改Keepalived.conf
! Configuration File for keepalived
global_defs {
\# notification_email {
\# acassen@firewall.loc
\# failover@firewall.loc
\# sysadmin@firewall.loc
\# }
\# notification_email_from Alexandre.Cassen@firewall.loc
\# smtp_server 192.168.200.1
\# smtp_connect_timeout 30
router_id LVS_DEVEL
\# vrrp_skip_check_adv_addr
\# vrrp_strict
\# vrrp_garp_interval 0
\# vrrp_gna_interval 0}
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh"
interval 2
weight -20}
vrrp_instance VI_1 {
state MASTER # 标识为主服务
interface ens33 #绑定虚拟机的IP
virtual_router_id 51 # 虚拟路由id,和从机保持一致
\#mcast_src_ip 192.168.126.2 #本机ip
priority 100 #权重,需要高于从机
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_nginx ## 执行 Nginx 监控的服务
}
virtual_ipaddress {
192.168.136.99 #/32 brd 255.255.255.0 dev ens33 label ens33:vip #虚拟IP地址# 192.168.200.17# 192.168.200.18
}}
参数不太了解
设置好虚拟ip(100),和网卡
5.2. 分发从机
5.3. 从机
5.4. 检验
出现附录的两个缺少依赖的问题。
无报错。
5.5. Make install
略。(SCP已经安装好的文件夹其实无需再安装)。
5.6. 从机配置
! Configuration File for keepalived
global_defs {# notification_email {# acassen@firewall.loc# failover@firewall.loc# sysadmin@firewall.loc# }# notification_email_from Alexandre.Cassen@firewall.loc# smtp_server 192.168.200.1# smtp_connect_timeout 30
router_id dreamer1# vrrp_skip_check_adv_addr# vrrp_strict# vrrp_garp_interval 0# vrrp_gna_interval 0}
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh" ## 检测 nginx 状态的脚本路径
interval 2 ## 检测时间间隔
weight -20 ## 如果条件成立,权重-20}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51
\#mcast_src_ip 192.168.136.4 ## 本机 IP 地址
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_nginx ## 执行 Nginx 监控的服务
}
virtual_ipaddress {
192.168.136.99
\#192.168.200.17
\#192.168.200.18
}}
修改其实是修改了:全局设置的ID和state跟权限90
配置来自于:https://www.jianshu.com/p/ac538fa4c175
5.7. 创建脚本文件目录
5.8. 编写心跳脚本
#!/bin/bash
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
/usr/sbin/nginx
sleep 2
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
/etc/init.d/keepalived stop
fi
fi
5.9. 脚本解读
Nginx停下来了首先会重启本地nginx服务,起不了再中止掉keepalived服务,让渡机会给备选节点。
参考博客:定义变量,此变量为检查nginx进程脚本,如果进程为0,则启动nginx服务,再次检查nginx服务,如果仍没启动 ,杀掉所有keepalived的进程。
5.10. 启动keepalived
先启动nginx和Tomcat集群。
到/usr/local/sbin/下面执行keepalived命令,我找了好久,泪目T T
/usr/local/sbin/./keepalived
5.11. 放入开机启动项
cp /usr/local/sbin/./keepalived /etc/init.d/
5.12. nginx启动命令放入/usr/sbin/nginx
cp /usr/local/nginx/sbin/nginx /usr/sbin/nginx
5.13. 输入虚拟网址检验
主机集群为:
192.168.106.128
192.168.106.129
192.168.106.130
虚拟IP:
192.168.106.100
6. 验证Nginx高可用特性
6.1. 执行监听脚本文件
nohup /etc/keepalived/nginx_check.sh &
6.2. 宕掉主节点Nginx
主节点是:192.168.128
实操是直接关闭了e3base03主机,因为脚本写了,停下来了首先会重启本地nginx服务,起不了再中止掉keepalived服务,让渡机会给备选节点。
6.3. 验证虚拟IP是否可以访问
6.4. ARP检验MAC地址
arp -a 192.168.106.100
7. 快捷命令
/e3base/tomcat/bin/startup.sh
/usr/local/nginx/sbin/./nginx -c /usr/local/nginx/conf/nginx.conf
/usr/local/sbin/keepalived
nohup /etc/keepalived/nginx_check.sh &
/usr/local/nginx/sbin/./nginx -s stop