Board logo

标题: Keepalived双机热备+Nginx [打印本页]

作者: admin    时间: 2019-9-9 22:35     标题: Keepalived双机热备+Nginx

Keepalived是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换和健康检查功能——判断调度服务器、节点服务器的可用性,及时隔离故障主机并替换为新的服务器,当故障主机恢复后将其重新加入群集。 Keepalived采用VRRP(虚拟路由冗余协议)热备份协议,以软件的方式实现Linux服务器的多机热备份功能。 VRRP是针对调度器的一种备份解决方案——由多台调度器组成一个热备组,通过共用的虚拟IP 地址对外提供服务; 每个热备组内同一时刻只有一台调度器提供服务,其他调度器则处于冗余状态,若当前的调度器失效了,其他调度器会自动接替(优先级决定接替顺序)虚拟IP地址,以继续提供服务。 热备组内的每台调度器都可能成为主调度器,虚拟IP地址可以在热备组内的路由器之间进行转移,所以也称之为漂移IP地址。 图片1.png Nginx的安装可参考:安装服务器安全狗、网站安全狗(Nginx版) 主调度器master:192.168.168.130/24 备用调度器 slave::192.168.168.131/24 实验中,设置了一个(VIP)虚拟IP地址:(可以有多个的) VIP:192.168.168.180 master的配置:(实验中用的是本地光盘Yum源) yum -y install gcc-c++ vim yum -y install kernel-devel openssl-devel popt-devel yum -y install ipvsadm* 查看系统的内核版本: [root@master ~]# uname -r 2.6.32-696.el6.x86_64 下载Keepalived: https://pan.baidu.com/s/19i7pfnmd4Dv9pMKM5NPU-w 提取码:40hr 编译安装Keepalived: tar -zxvf keepalived-1.2.24.tar.gz -C /usr/local cd /usr/local/keepalived-1.2.24/ ./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.32-696.el6.x86_64/ make && make install master的keepalived配置文件: cat >/etc/keepalived/keepalived.conf<< EOF ! Configuration File for keepalived global_defs { router_id Master ## 每个参与热备的调度器都要指定不同的名字 } vrrp_instance VI_1 { state MASTER ## 热备状态,MASTER表示主调度器 interface eth0 ## 承载VIP地址的物理接口 virtual_router_id 1 ## 虚拟路由器的ID,每个热备组保持一致 priority 100 ## 优先级,数值越大,优先级越高 advert_int 1 authentication { auth_type PASS auth_pass 888 ## 自定义密码,密码要一致 } virtual_ipaddress { 192.168.168.180 ## 指定虚拟IP地址 } } EOF 启动Keepalived: chmod a+x /etc/init.d/keepalived chkconfig --add keepalived chkconfig --level 35 keepalived on service keepalived start 验证: [root@master ~]# ip addr show dev eth0 2: eth0: mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:2b:17:3a brd ff:ff:ff:ff:ff:ff inet 192.168.168.130/24 brd 192.168.168.255 scope global eth0 inet 192.168.168.180/32 scope global eth0 inet6 fe80::20c:29ff:fe2b:173a/64 scope link valid_lft forever preferred_lft forever ###### slave的配置:(实验中用的是本地光盘Yum源) yum -y install gcc-c++ vim yum -y install kernel-devel openssl-devel popt-devel yum -y install ipvsadm* 查看系统的内核版本: [root@slave ~]# uname -r 2.6.32-696.el6.x86_64 编译安装Keepalived: tar -zxvf keepalived-1.2.24.tar.gz -C /usr/local cd /usr/local/keepalived-1.2.24/ ./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.32-696.el6.x86_64/ make && make install slave的keepalived配置文件: cat >/etc/keepalived/keepalived.conf<< EOF ! Configuration File for keepalived global_defs { router_id Slave1 ## 每个参与热备的调度器都要指定不同的名字 } vrrp_instance VI_1 { state SLAVE ## 热备状态,SLAVE表示备用调度器 interface eth1 ## 承载VIP地址的物理接口 virtual_router_id 1 ## 虚拟路由器的ID,每个热备组保持一致 priority 99 ## 优先级,要低于主调度器 advert_int 1 authentication { auth_type PASS auth_pass 888 ## 自定义密码,密码要一致 } virtual_ipaddress { 192.168.168.180 ## 指定虚拟IP地址 } } EOF 启动Keepalived: chmod a+x /etc/init.d/keepalived chkconfig --add keepalived chkconfig --level 35 keepalived on service keepalived start 验证: [root@slave ~]# ip addr show dev eth1 2: eth1: mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:71:a4:d4 brd ff:ff:ff:ff:ff:ff inet 192.168.168.131/24 brd 192.168.168.255 scope global eth1 inet 192.168.168.180/32 scope global eth1 inet6 fe80::20c:29ff:fe71:a4d4/64 scope link valid_lft forever preferred_lft forever 笺注: master、slave都再重启一次keepalived服务: service keepalived restart 客户端远程测试调度服务器的双机热备切换功能: 图片2.png 实验证明,无论是master关闭了网卡,还是slave关闭了网卡,客户端都可以与虚拟IP地址通讯;在切换时,可能有几秒钟的不通,但会自己恢复正常。 当客户端访问虚拟IP地址时,所有的请求(包括TCP端口的请求)都会去到活跃状态的调度服务器上;当活跃状态的调度服务器的keepalived服务不能提供服务时,客户端的访问请求才会被切换到备用的调度服务器上。 修改master的Nginx的默认首页内容: [root@master ~]# echo 'master' > /usr/local/nginx/html/index.html 修改slave的Nginx的默认首页内容: [root@slave ~]# echo 'slave' > /usr/local/nginx/html/index.html 可以看到客户端访问虚拟IP的TCP 80端口时,默认是去到master 图片3.png master关闭Nginx服务: [root@master ~]# service nginx stop master关闭Nginx服务,其实并不能触发keepalived的切换: 图片4.png master关闭keepalived服务: [root@master ~]# service keepalived stop 可以看到master关闭keepalived服务后,才会触发keepalived的切换 图片5.png ###### 监控本机的Nginx的状态 (一般来说,Nginx服务不会自己关闭的) 修改master的keepalived配置文件: [root@master ~]# vi /etc/keepalived/keepalived.conf vrrp_script check_nginx { script "/usr/local/check_nginx.sh" ##监控Nginx服务的脚本 interval 3 ##每隔3秒执行一次脚本 } 图片6.png track_script { check_nginx ##用于自定义脚本,要与上面的vrrp_script对应 } 图片7.png 重启Keepalived: service keepalived restart 修改slave的keepalived配置文件: [root@slave ~]# vi /etc/keepalived/keepalived.conf vrrp_script check_nginx { script "/usr/local/check_nginx.sh" ##监控Nginx服务的脚本 interval 3 ##每隔3秒执行一次脚本 } 图片8.png track_script { check_nginx ##用于自定义脚本,要与上面的vrrp_script对应 } 图片9.png 重启Keepalived: service keepalived restart 两台调度服务器都要写以下脚本:(原理,当检测到本机的Nginx服务已经停止运行时,把本机的keepalived服务也关闭了,从而实现keepalived的切换 ) [root@master ~]# cat /usr/local/check_nginx.sh #!/bin/bash dd=$(date +"%Y-%m-%d %H:%M:%S") netstat -anp |grep nginx &> /dev/null if [ $? -ne 0 ]; then echo "$dd nginx was down,stop keepalived now" >> /var/log/check_nginx_status.log service keepalived stop fi 记得给予脚本运行的权限: [root@master ~]# chmod a+x /usr/local/check_nginx.sh 测试:两台服务器轮流关闭Nginx服务 [root@master ~]# cat /var/log/check_nginx_status.log 2020-05-03 13:11:01 nginx was down,stop keepalived now [root@slave ~]# cat /var/log/check_nginx_status.log 2020-05-03 13:11:54 nginx was down,stop keepalived now 备注: 实验中,当一台调度服务器的Nginx服务关闭了,其keepalived服务也会跟着关闭,备用调度服务器就变成活跃状态;只要还有一台调度服务器正常,则Nginx服务可以正常访问。 启动时,应先启动Nginx,不然keepalived会根据脚本自己关闭自己。 如果使用以上脚本,系统重启后,keepalived服务是关闭的,Nginx服务是自动启动的,需要手动启动keepalived 相关文章: Keepalived双机热备+MySQL Keepalived+LVS CentOS8_Keepalived双机热备+Apache ################################# ################################# 亲,学习研究也要劳逸结合哦,来我微店逛逛,买点东西好好犒劳犒劳自己和家人吧^_^^_^ 苏泊尔多功能电热锅韩式电火锅8-10人家用电炒锅不粘锅电锅电烤锅 guo.png 苏泊尔电火锅多功能家用电热锅不沾锅一体电煮锅宿舍4-6人 huoguo.png

图片附件: 图片1.png (2020-5-4 18:30, 78.74 KB) / 下载次数 178
http://blog.zhuohua.store/attachment.php?aid=6877&k=a73656c60b62992624f466a2ec54f505&t=1714914435&sid=vHY6qV



图片附件: 图片2.png (2020-5-4 18:33, 27.31 KB) / 下载次数 184
http://blog.zhuohua.store/attachment.php?aid=6878&k=4379595b8c140196e7600491f09f6d54&t=1714914435&sid=vHY6qV



图片附件: 图片3.png (2020-5-4 18:34, 12.87 KB) / 下载次数 182
http://blog.zhuohua.store/attachment.php?aid=6879&k=42c3ccd3156612782321b3c551696f40&t=1714914435&sid=vHY6qV



图片附件: 图片4.png (2020-5-4 18:34, 33.06 KB) / 下载次数 181
http://blog.zhuohua.store/attachment.php?aid=6880&k=bbbbe2b19d9103e2660db2ac9997e236&t=1714914435&sid=vHY6qV



图片附件: 图片5.png (2020-5-4 18:35, 12.95 KB) / 下载次数 176
http://blog.zhuohua.store/attachment.php?aid=6881&k=bf1bf0a06e5a686ee5dfa334afa61693&t=1714914435&sid=vHY6qV



图片附件: 图片6.png (2020-5-4 18:35, 50.74 KB) / 下载次数 170
http://blog.zhuohua.store/attachment.php?aid=6882&k=f4eac2c31cee715d4ac17784a1e521a3&t=1714914435&sid=vHY6qV



图片附件: 图片7.png (2020-5-4 18:35, 21.92 KB) / 下载次数 167
http://blog.zhuohua.store/attachment.php?aid=6883&k=659fc2064cd03fdbd4524154b86c645d&t=1714914435&sid=vHY6qV



图片附件: 图片8.png (2020-5-4 18:36, 42.46 KB) / 下载次数 182
http://blog.zhuohua.store/attachment.php?aid=6884&k=179045cfe5b44b6d1cb85bafe1f2943c&t=1714914435&sid=vHY6qV



图片附件: 图片9.png (2020-5-4 18:36, 14.72 KB) / 下载次数 184
http://blog.zhuohua.store/attachment.php?aid=6885&k=b3de8a8530fd735e9ecb9196bad3716a&t=1714914435&sid=vHY6qV



图片附件: guo.png (2020-5-19 14:07, 470.68 KB) / 下载次数 59
http://blog.zhuohua.store/attachment.php?aid=7098&k=bef279bba422971f5fe14db84f6f0996&t=1714914435&sid=vHY6qV



图片附件: huoguo.png (2020-5-19 14:07, 444 KB) / 下载次数 68
http://blog.zhuohua.store/attachment.php?aid=7099&k=d527513d4ac9cda9b35452aa278c28cd&t=1714914435&sid=vHY6qV






欢迎光临 blog.zhuohua.store (http://blog.zhuohua.store/) Powered by Discuz! 7.2