nginx+keepalived集群实现高可用

nginx+keepalived集群实现高可用

1.安装nginx

master和baskup(server1和server2)都安装nginx:

tar zxf nginx-1.16.1.tar.gz
cd nginx-1.16.1/
yum install gcc zlib zlib-devel openssl-devel -y	#解决依赖性
./configure --prefix=/usr/local/nginx
make && make install

在这里插入图片描述
当看到Makefile和objs时说明安装成功
编写一个nginx的html文件:

vim /usr/local/nginx/html/index.html

在这里插入图片描述
在这里插入图片描述
编写nginx启动脚本:

vim /etc/init.d/nginxd

脚本内容:

#!/bin/bash
. /etc/init.d/functions		#加载系统函数库
path=/usr/local/nginx/sbin	#设定nginx启动命令路径
function start() {
	if [ `netstat -antlpe | grep nginx | wc -l` -eq 0 ]	#如果等于0
	then
		$path/nginx					#打开nginx
		RETVAL=$?
		if [ $RETVAL -eq 0 ]
		then
			action "nginx is started" /bin/true
			return $RETVAL
		else
			action "nginx is started" /bin/false
			return $RETVAL
		fi
	else
		echo "nginx is running"
		return 0
	fi
}

function stop() {
	if [ `netstat -antlpe | grep nginx | wc -l` -ne 0 ]	#如果不等于0
	then
		$path/nginx -s stop
		RETVAL=$?
		if [ $RETVAL -eq 0 ]
		then
			action "nginx is stoped" /bin/true
			return $RETVAL
		else
			action "nginx is stoped" /bin/false
                        return $RETVAL
                fi
	else
		echo "nginx is stoped"
		return 0
	fi
}

case "$1" in		#通过特殊参数$1接收脚本参数的字符串
	start)
	start
	;;
	stop)
	stop
	;;
	restart)
	stop
	sleep 1
	start
	;;
	*)
	echo $"usage: $0 {start | stop | restart}"
	exit 1
esac
exit $RETVAL

给脚本添加执行权限:

chmod +x /etc/init.d/nginxd

测试:

/etc/init.d/nginxd start

在这里插入图片描述
注意:安装好nginx以后一定要测试它的启动脚本是否能够正常使用,nginx是否能够启动

2.安装keepalived

master和baskup(server1和server2)都安装编译keepalived:

tar zxf keepalived-2.0.20.tar.gz 
ls
cd keepalived-2.0.20
ls
yum install gcc openssl-devel -y		#解决依赖性
./configure --prefix=/usr/local/keepalived --with-init=systemd	#编译keepalived的源码包
make && make install

制作软连接方便keepalived的管理与设置:

ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig
ln -s /usr/local/keepalived/etc/keepalived/ /etc/
ln -s /usr/local/keepalived/sbin/keepalived/ /sbin/

在这里插入图片描述
制作启动链接:

ln -s /root/keepalived-2.0.20/keepalived/etc/init.d/keepalived /etc/init.d
chmod +x /etc/init.d/keepalived 

在这里插入图片描述
还原之前实验部分内容:
删除VIP并关闭nginx服务:

ip addr del 172.25.254.100/24 dev eth0
ip addr show
/etc/init.d/nginxd stop

在这里插入图片描述

3.修改keepalived的配置文件

step1 编写脚本用于检查本地nginx是否存活:

#!/bin/bash
killall -0 nginx
if [[ $? -ne 0 ]]
then
        /etc/init.d/keepalived stop	#如果nginx不存活,则关闭keepalived实现服务切换
fi

step2 在master上修改keepalived的配置文件:

! Configuration File for keepalived

global_defs {
   notification_email {
        root@localhost   #健康检查报告通知邮箱
}
   notification_email_from keepalived@localhost         #发送邮件的地址
   smtp_server 172.0.0.1        #邮件服务器
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_script_chk_nginx {
        script"/data/sh/check_nginx.sh"         #检查本地nginx是否存活脚本(脚本需要自己写)
        interval 2
        weight 2
}

#VIP1
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 5        #健康检测频率
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.254.100    #VIP
}
        track_script {
                chk_nginx
}
}

step3 配置文件和脚本发给备机server2并修改配置文件:

scp keepalived.conf root@172.25.254.2:/etc/keepalived/
scp /data/sh/check_nginx.sh root@172.25.254.2:/data/sh/

只需要修改两处:
在这里插入图片描述
step4 重新启动nginx:

/etc/init.d/nginxd restart

4.测试

启动nginx:

/etc/init.d/nginxd start

启动keepalved

/etc/init.d/keepalived start

在真机中测试:

curl 172.25.254.100

在这里插入图片描述
可以查看到VIP配在了server1上:
在这里插入图片描述
server1宕掉时:
server2开始工作:
在这里插入图片描述
VIP漂移到了server2上:
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值