keepalived实现nginx的负载均衡和高可用

keepalived实现nginx的高可用

注意:这里nginx以及keepalived已经装好了,如果没有装好请参考我的安装部署文档

1、修改 Keepalived 配置文件(keepalived.conf)

(1) MASTER 节点配置文件(192.168.44.71)
 vim /etc/keepalived/keepalived.conf
先查一下本机 IP 地址所在的网络接口相同, 我的是 eth0,后面用得着

在这里插入图片描述

以下两张图片分开截的

! Configuration File for keepalived

global_defs {
router_id 192.168.44.71  ## 标识本节点的字条串,通常为 hostname
}
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh" ## 检测 nginx 状态的脚本路径
interval 2 ## 检测时间间隔
weight -20 ## 如果条件成立,权重-20
}


vrrp_instance VI_1 {
state MASTER   ## 主节点为 MASTER, 对应的备份节点为 BACKUP
interface eth0  ## 绑定虚拟 IP 的网络接口,与本机 IP 地址所在的网络接口相同, 我的是 eth0
virtual_router_id 71  ## 虚拟路由的 ID 号, 两个节点设置必须一样, 可选 IP 最后一段使用, 相同的 VRID 为一个组,他将决定多播的 MAC 地址
mcast_src_ip 192.168.44.71 ## 本机 IP 地址
priority 100  ## 节点优先级, 值范围 0-254, MASTER 要比 BACKUP 高
nopreempt ## 优先级高的设置 nopreempt 解决异常恢复后再次抢占的问题
advert_int 1  ## 组播信息发送间隔,两个节点设置必须一样, 默认 1s


authentication {
    auth_type PASS
	
    auth_pass 1111
}

track_script {
	chk_nginx ## 执行 Nginx 监控的服务
} 

virtual_ipaddress {
    192.168.44.70  ## 虚拟 ip,可以定义多个
}

}

在这里插入图片描述

在这里插入图片描述

(2)BACKUP 节点配置文件(192.168.44.73) 
vim /etc/keepalived/keepalived.conf
先查一下本机 IP 地址所在的网络接口相同, 我的是 eth0,后面用得着

在这里插入图片描述

! Configuration File for keepalived

global_defs {
router_id 192.168.44.73  ## 标识本节点的字条串,通常为 hostname
}

vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh"
interval 2
weight -20
}

vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 71
mcast_src_ip 192.168.44.73 ## 本机 IP 地址
priority 90
advert_int 1
authentication {
    auth_type PASS
    auth_pass 1111
}

## 将 track_script 块加入 instance 配置块
track_script {
	chk_nginx ## 执行 Nginx 监控的服务
} 

# 虚拟 IP 池, 两个节点设置必须一样
virtual_ipaddress {
    192.168.44.70
  }
}

在这里插入图片描述

2、编写 Nginx 状态检测脚本 主从服务器上都要,所以两份

编写 Nginx 状态检测脚本 /etc/keepalived/nginx_check.sh (已在 keepalived.conf 中配置)脚本要求:如果 nginx 停止运行,尝试启动,如果无法启动则杀死本机的 keepalived 进程, keepalied将虚拟 ip 绑定到 BACKUP 机器上。 内容如下:

vim /etc/keepalived/nginx_check.sh

#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx
sleep 2
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi


保存后,给脚本赋执行权限: 
chmod +x /etc/keepalived/nginx_check.sh

3、启动 Keepalived nginx

/usr/local/nginx/sbin/nginx -s reload
service keepalived start

4、Keepalived+Nginx 的高可用测试

同时启动192.168.44.71和192.168.44.73上的Nginx和Keepalived,我们通过VIP(192.168.44.70)来访问Nginx,如下:
注意:我这里由于网络原因配置隧道转发,所以用127.0.0.1分别配置了端口号!!!

1)启动192.168.44.71来访问Nginx

在这里插入图片描述

在这里插入图片描述

2)启动192.168.44.73来访问Nginx

在这里插入图片描述

3)启动192.168.44.70来访问Nginx

在这里插入图片描述

在这里插入图片描述

5、开始测试

我们关闭192.168.44.71(主)上的Keepalived和Nginx
cd /usr/local/nginx/sbin/
./nginx -s stop
pkill keepalived



此时,我们再通过VIP(192.168.44.70)来访问Nginx,如下

在这里插入图片描述

我们再开启192.168.44.71上的Keepalived和Nginx

在192.168.44.71执行如下命令:
./nginx -s reload
service keepalived start

在这里插入图片描述

因为我们写了脚本nginx_check.sh,这个脚本会为我们自动自动Nginx。
此时,我们再通过VIP(192.168.44.70)来访问Nginx,如下

在这里插入图片描述

6、至此,Keepalived + Nginx 实现高可用 Web 负载均衡搭建完毕 ##。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值