keepalived

mac2022-06-30  25

一、关于本文

本文记录使用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配置成功!

转载于:https://www.cnblogs.com/doubilaile/p/8360884.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)