【Web】Keepalived+Nginx 实现高可用集群

*爱你&永不变心* 提交于 2020-08-14 12:31:53

什么是Keepalived  

  Keepalived是用C语言编写的路由软件。该项目的主要目标是为Linux系统和基于Linux的基础结构提供负载均衡和高可用性的简单而强大的功能。 负载平衡框架依赖于提供第4层负载平衡的著名且广泛使用的Linux虚拟服务器(IPVS)内核模块。Keepalived实现了一组检查器,以根据其运行状况动态,自适应地维护和管理负载平衡的服务器池。另一方面,VRRP实现了高可用性 协议。VRRP是路由器故障转移的基础砖。此外,Keepalived还实现了一组VRRP有限状态机的挂钩,从而提供了低级和高速协议交互。为了提供最快的网络故障检测,Keepalived实施BFD协议。VRRP状态转换可以考虑BFD提示来驱动快速状态转换。Keepalived框架可以独立使用,也可以一起使用以提供弹性基础架构。

  Keepalived是免费软件;您可以根据自由软件基金会发布的GNU通用公共许可证的条款重新分发和/或修改它

  官网:https://www.keepalived.org/

Keepalived+Nginx 高可用集群(主从模式)

  架构图

  

  服务器准备

    准备2台服务器172.18.0.3(主)、172.18.0.2(备),系统CentOS

    一个虚拟IP:172.18.0.80(自己网络内,未被其他主机占用IP即可)

 Nginx安装

  1、分别在2台服务器上安装nginx,参考【Web】Nginx下载与安装

  2、修改172.18.0.3(主)上nginx的主页内容,内容如下:

1 Master nginx
2 172.18.0.3

    172.18.0.2(备)上nginx内容如下:

1 Master nginx
2 172.18.0.2

 

  3、测试

    1)启动nginx

    2)分别访问地址:http://172.18.0.3,http://172.18.0.2

Keepalived安装

  1、安装命令: yum install keepalived -y

  2、修改keepalived的配置文件(/etc/keepalived/keepalived.conf)

    命令:vim /etc/keepalived/keepalived.conf

    172.18.0.3(主)上keepalived的配置如下:

 1 # 全局定义块
 2 global_defs {
 3    router_id LVS_DEVEL
 4 }
 5 
 6 vrrp_script chk_nginx {
 7   # 检查脚本路径
 8   script "/etc/keepalived/nginx_check.sh"
 9   # 检查脚步执行的间隔,单位秒
10   interval 2 
11   # 权限,成功+2
12   weight 2
13 }
14 
15 vrrp_instance VI_1 {
16     ## 主节点为 MASTER, 对应的备份节点为 BACKUP
17     state MASTER
18     ## 绑定虚拟 IP 的网络接口,与本机 IP 地址所在的网络接口相同,一般是eth0 我的是 eth1
19     interface eth1
20     # 主、备机的virtual_router_id 必须相同
21     virtual_router_id 51
22     # 主、备机不同的优先级,主机值大,备份机较小
23     priority 100
24     ## 组播信息发送间隔,两个节点设置必须一样, 默认 1s
25     advert_int 1
26     ## 设置验证信息,两个节点必须一致
27     authentication {
28         auth_type PASS
29         auth_pass 1111
30     }
31     ## 将 track_script 块加入 instance 配置块
32     track_script {
33         ## 执行 Nginx 监控的服务
34         chk_nginx
35     }
36     # 虚拟 IP 池, 两个节点设置必须一样
37     virtual_ipaddress {
38         # VRRP H虚拟地址
39         172.17.0.80
40     }
41 }

 

    172.18.0.2(备)上keepalived的配置,只有如下2个地方不一样,其他都一样

1 vrrp_instance VI_1 {
2     ## 主节点为 MASTER, 对应的备份节点为 BACKUP
3     state BACKUP
4     ...
5     priority 50
6     ...
7 }

  3、编写nginx检查脚本

    命令:vim /etc/keepalived/nginx_check.sh

    检测nginx进程是否存在,不存在就关闭keepalived应用

1 #!/bin/bash
2 if [ `ps -C nginx --no-header |wc -l` -lt 2 ];then
3     killall keepalived
4 fi

 

  4、给nginx检查脚本授权

    命令:chmod +x /etc/keepalived/nginx_check.sh

  5、分别启动2台服务器上的keepalived

    启动命令:systemctl start keepalived

    加入开机启动命令:systemctl enable keepalived

    停止命令:systemctl stop keepalived

  6、使用命令查看keepalived是否启动 

    命令:ps -ef|grep keepalived

    

  7、分别查看主备2台服务器的ip信息

    命令:ip a

    172.18.0.3(主),如下可以看到已经绑定了虚拟IP(172.18.0.80)

    

    172.18.0.2(备),未绑定虚拟IP

    

高可用测试

  1、使用命令,访问虚拟IP(172.18.0.80)

    命令:curl 172.18.0.80,效果如下:

    

    可以看到访问的是172.18.0.3(主)服务器上的Nginx

  2、关闭172.18.0.3(主)服务器上的Nginx

    再次用命令,访问虚拟IP(172.18.0.80),效果如下:

    

    可以看到请求已转到172.18.0.2(备)服务器上的Nginx

  3、分别查看主备2台服务器的ip信息,命令:ip a

    

    可以看到172.18.0.3(主)服务器已经没有绑定虚拟IP,而172.18.0.2(备)绑定了虚拟IP

  4、再次启动172.18.0.3(主)服务器上的Nginx 和 Keepalived

    再次用命令,访问虚拟IP(172.18.0.80),发现请求已转到172.18.0.3(主)服务器上

  总结:以上 Keepalived + Nginx 已实现vip漂移高可用

 

  

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!