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 分钟前
AJAX的学习
前端·学习·ajax
此心光明事上练9 分钟前
大厂级企业后端:配置变更与缓存失效的自动化处理方案
运维·缓存·自动化
java_logo21 分钟前
Docker 部署 MinIO 全指南
运维·windows·mongodb·docker·容器
拾光Ծ31 分钟前
【Linux】“ 权限 “ 与相关指令
linux·运维·服务器
我的xiaodoujiao34 分钟前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 19--测试框架Pytest基础 3--前后置操作应用
python·学习·测试工具·pytest
To_再飞行35 分钟前
Linux Bash(一)
linux·运维·服务器·bash
我狸才不是赔钱货38 分钟前
DevOps:打破开发与运维之间的高墙
运维·vscode·docker·devops
lzj_pxxw40 分钟前
嵌入式开发技巧:舍弃标志位,用宏定义函数实现程序单次运行
笔记·stm32·单片机·嵌入式硬件·学习
江苏世纪龙科技1 小时前
【世纪龙科技】新能源汽车动力电池拆装与检测虚拟实训软件介绍
学习
whale fall1 小时前
与deepseek用英语聊天的第一天
学习