Keepalived+Nginx+Tomcat 实现高可用Web集群的示例代码

2019-10-17 16:29:20丽君

添加完成后,为check_nginx.sh 文件授权,便于脚本获得执行权限。

[root@localhost keepalived]# chmod -R 777 /etc/keepalived/check_nginx.sh 

2.在Master 节点 /etc/keepalived目录下,添加keepalived.conf 文件,具体信息如下:

vrrp_script chk_nginx { 
 script "/etc/keepalived/check_nginx.sh" //检测nginx进程的脚本 
 interval 2 
 weight -20 
} 

global_defs { 
 notification_email { 
  //可以添加邮件提醒 
 } 
} 
vrrp_instance VI_1 { 
 state MASTER     #标示状态为MASTER 备份机为BACKUP
 interface ens33    #设置实例绑定的网卡(ip addr查看,需要根据个人网卡绑定)
 virtual_router_id 51   #同一实例下virtual_router_id必须相同 
 mcast_src_ip 192.168.43.101 
 priority 250     #MASTER权重要高于BACKUP 比如BACKUP为240 
 advert_int 1     #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
 nopreempt      #非抢占模式
 authentication {    #设置认证
  auth_type PASS   #主从服务器验证方式
  auth_pass 123456 
 } 
 track_script { 
  check_nginx 
 } 
 virtual_ipaddress {   #设置vip
  192.168.43.150   #可以多个虚拟IP,换行即可
 } 
}

3.在Backup节点 etc/keepalived目录下添加 keepalived.conf 配置文件

信息如下:

vrrp_script chk_nginx { 
 script "/etc/keepalived/check_nginx.sh" //检测nginx进程的脚本 
 interval 2 
 weight -20 
} 

global_defs { 
 notification_email { 
  //可以添加邮件提醒 
 } 
} 
vrrp_instance VI_1 { 
 state BACKUP     #标示状态为MASTER 备份机为BACKUP
 interface ens33    #设置实例绑定的网卡(ip addr查看)
 virtual_router_id 51   #同一实例下virtual_router_id必须相同 
 mcast_src_ip 192.168.43.102 
 priority 240     #MASTER权重要高于BACKUP 比如BACKUP为240 
 advert_int 1     #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
 nopreempt      #非抢占模式
 authentication {    #设置认证
  auth_type PASS   #主从服务器验证方式
  auth_pass 123456 
 } 
 track_script { 
  check_nginx 
 } 
 virtual_ipaddress {   #设置vip
  192.168.43.150   #可以多个虚拟IP,换行即可
 } 
}

Tips: 关于配置信息的几点说明

state - 主服务器需配成MASTER,从服务器需配成BACKUP interface - 这个是网卡名,我使用的是VM12.0的版本,所以这里网卡名为ens33 mcast_src_ip - 配置各自的实际IP地址 priority - 主服务器的优先级必须比从服务器的高,这里主服务器配置成250,从服务器配置成240 virtual_ipaddress - 配置虚拟IP(192.168.43.150) authentication - auth_pass主从服务器必须一致,keepalived靠这个来通信 virtual_router_id - 主从服务器必须保持一致

5.集群高可用(HA)验证

Step1 启动Master机器的Keepalived和 Nginx服务

[root@localhost keepalived]# keepalived -D -f /etc/keepalived/keepalived.conf
[root@localhost keepalived]# service nginx start