nginx负载均衡及keepalive高可用

实验前期准备:

5台虚拟机:4台当做服务器,1台当做客户机(当然,也可以使用主机的浏览器),4台服务器中,2台服务器当做后端真实访问服务器;另外2台服务器当做负载均衡服务器。

并且关闭所有防火墙及核心防护

复制代码
systemctl stop firewalld
setenforce 0

后端真实服务器1:

复制代码
yum -y install epel-release
yum -y install nginx
echo '自定义内容1'>/usr/share/nginx/html/index.html
systemctl start nginx
curl 127.1	#查看nginx内容

自定义访问内容

后端真实服务器2:

复制代码
yum -y install epel-release
yum -y install nginx
echo '自定义内容2'>/usr/share/nginx/html/index.html
systemctl start nginx
curl 127.1	#查看nginx内容

自定义访问内容(建议2者不要一样,方便可以观察变化)

负载均衡器1:

复制代码
yum -y install epel-release
yum -y install nginx
vim /etc/nginx/nginx.conf
[#http模块下
upstream web {
server 真实服务器1;
server 真实服务器2;
}

#server模块下
location / {
proxy_pass http://web;
}
]
systemctl start nginx

先做好负载均衡可以使用 'curl 127.1' 命令,查看是否是真实服务1,2的自定义内容。

复制代码
yum -y install keepalive
vim /etc/keepalive/keepalive.conf
[
global_defs {
   router_id LVS_01
   #vrrp_strict
}

vrrp_script check_down {
        script  "/etc/keepalived/ng.sh"
        interval 1
        weight -30
        fall  3
        rise 2
        timeout 2
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 50
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.174.188
    }
    track_script {
    check_down
    }
}
]
vim /etc/keepalived/ng.sh
{
killall -0 nginx
}
systemctl start keepalived.service
systemctl start nginx.service

主配置内容:

全局配置:自定义当前路由器唯一标识符为"LVS_01" ;注释掉严格模式检查。

vrrp健康检查:健康检查路径;每秒执行一次;当脚本检测失败优先级降低30;连续3次失败,鉴定为故障;连续2次成功,鉴定为恢复正常;脚本执行等待时间为2秒。

vrrp配置:初始为主设备;使用ens33网卡;虚拟路由组为50(主从一致);起始优先级为100;vrrp通告间隔为1秒;认证设置为密码认证,密码为1111(主从一致);定义的虚拟IP地址为192.168.174.188;关联的健康检查脚本为check_down。

负载均衡器2:

复制代码
yum -y install epel-release
yum -y install nginx
vim /etc/nginx/nginx.conf
[#http模块下
upstream web {
server 真实服务器1;
server 真实服务器2;
}

#server模块下
location / {
proxy_pass http://web;
}
]
systemctl start nginx

先做好负载均衡可以使用 'curl 127.1' 命令,查看是否是真实服务1,2的自定义内容。

复制代码
yum -y install keepalive 
vim /etc/keepalive/keepalive.conf
[
global_defs {
   router_id LVS_02
   #vrrp_strict
}

vrrp_script check_down {
        script  "/etc/keepalived/ng.sh"
        interval 1
        weight -30
        fall  3
        rise 2
        timeout 2
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 50
    priority 99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.174.188
    }
    track_script {
    check_down
    }
}

]
vim /etc/keepalived/ng.sh
{
killall -0 nginx
}
systemctl start keepalived.service
systemctl start nginx.service

从配置内容:

全局配置:自定义当前路由器唯一标识符为"LVS_02" ;注释掉严格模式检查。

vrrp健康检查:健康检查路径;每秒执行一次;当脚本检测失败优先级降低30;连续3次失败,鉴定为故障;连续2次成功,鉴定为恢复正常;脚本执行等待时间为2秒。

vrrp配置:初始为从设备;使用ens33网卡;虚拟路由组为50(主从一致);起始优先级为99;vrrp通告间隔为1秒;认证设置为密码认证,密码为1111(主从一致);定义的虚拟IP地址为192.168.174.188;关联的健康检查脚本为check_down。

实验验证:

使用浏览器访问192.168.174.188

关闭主配置,再来查看是否对访问造成影响:

此时的从设备:获得了虚拟IP地址

我们重新打开主设备来查看主从的变化:

相关推荐
一隅论数智3 天前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
XiHongShi20163 天前
STM32F407 RTC定时器例程,建议保存
stm32·单片机·学习
虎头金猫3 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
还是大剑师兰特3 天前
解决nginx错误:http://localhost:7000正常,http://localhost:7000/map 报错404
nginx·大剑师
爱吃苹果的日记本3 天前
离散数学第六课
学习·离散数学
AI职业加油站3 天前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展
旖旎夜光3 天前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控
奇思妙想聪明勤奋的小羊3 天前
DeepAgents第5章:子Agent 与上下文隔离—让 Agent学会委派
人工智能·python·学习·语言模型
霍霍的袁3 天前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio