keepalived
一、关于本文
本文记录使用keepalived搭建高可用nginx服务的过程。
环境:
两台配置好Nginx服务的主机,同一网段。
二、步骤
2.1 配置master服务器
2.1.1 安装keepalived服务。
[root@ruanwenwu-001 ~]# yum -y install keepalived 已加载插件:fastestmirror, priorities base | 3.6 kB 00:00:00 file:///mnt/repodata/repomd.xml: [Errno 14] curl#37 - "Couldn't open file /mnt/repodata/repomd.xml"
2.1.2 配置keepalived配置文件
/etc/keepalived/keepalived.conf
! Configuration File for keepalived global_defs { router_id lb01 } vrrp_script check { #定义脚本 script "/usr/local/sbin/check_ng.sh" interval 2 weight 2 } vrrp_instance VI_1 { state MASTER interface ens33 virtual_router_id 51 priority 150 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.38.139 } track_script { #调用脚本 check } }
注意看注释,重要的解释都在里面。
我们在看虚拟ip的时候这样看:
2.1.3 配置进程监控脚本/usr/local/sbin/check_ng.sh
#!/bin/bash #时间变量,用于记录日志 d=`date --date today +%Y%m%d_%H:%M:%S` #计算nginx进程数量 n=`ps -C nginx --no-heading|wc -l` #如果进程为0,则启动nginx,并且再次检测nginx进程数量, #如果还为0,说明nginx无法启动,此时需要关闭keepalived if [ $n -eq "0" ]; then /etc/init.d/nginx start n2=`ps -C nginx --no-heading|wc -l` if [ $n2 -eq "0" ]; then echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log systemctl stop keepalived fi fi
改变check_ng.sh的权限为755,其实就是为它增加可执行权限。
2.1.4 开启keepalived服务
[root@ruanwenwu-001 ~]# systemctl start keepalived [root@ruanwenwu-001 ~]# vim /var/log/messages [root@ruanwenwu-001 ~]# ps aux|grep keep root 10508 0.0 0.1 120228 1392 ? Ss 17:37 0:00 /usr/sbin/keepalived -D root 10509 0.0 0.2 120228 2348 ? S 17:37 0:00 /usr/sbin/keepalived -D root 10510 0.0 0.2 124484 2640 ? S 17:37 0:00 /usr/sbin/keepalived -D root 10623 0.0 0.0 112680 972 pts/1 R+ 17:37 0:00 grep --color=auto keep
2.2 配置slave的keepalived
! Configuration File for keepalived global_defs { router_id lb01 } vrrp_script check { #定义脚本 script "/usr/local/sbin/check_ng.sh" interval 2 weight 2 } vrrp_instance VI_1 { state MASTER interface ens33 virtual_router_id 51 priority 150 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.38.139 } track_script { #调用脚本 check } }
我们发现,备的配置和主的配置只有3点不同。
1.stat
2.priority
3.router_id
三、访问测试
现在我们在192.168.38.128上开启了Nginx服务,在192.168.38.129上也开启了nginx服务。修改服务器上的文件,让他们显示不同的内容。
192.168.38.128上:
192.168.38.129上:
虚拟ip上:
发现一切都跟我们预想的一样。那么,如果这时候,我们关闭192.168.38.128上的keepalived服务。看看。
[root@ruanwenwu-001 html]# systemctl stop keepalived [root@ruanwenwu-001 html]# ps aux|grep keep root 17654 0.0 0.0 112680 972 pts/1 S+ 18:16 0:00 grep --color=auto keep
然后再通过虚拟ip访问:
已经自动跳到bak机器192.168.38.129上了。keepalived配置成功!
坚持!