nginx+keepalived负载均衡及高可用

一、环境准备

|-------------|-----------------------------------------|-----------------|
| 主机名 | ip地址 | 备注 |
| openEuler-1 | 192.168.121.11(本机) 192.168.131.11(心跳连接) | nginx主负载均衡调度器 |
| openEuler-2 | 192.168.121.12(本机) 192.168.131.12(心跳连接) | nginx-2主负载均衡调度器 |
| openEuler-3 | 192.168.121.13 | web1 |
| openEuler-4 | 192.168.121.14 | web2 |
| Rocky-1 | 192.168.121.51 | client |

二、配置nginx反向代理

复制代码
[root@openEuler-1 ~]# cd /etc/nginx/conf.d/
[root@openEuler-1 conf.d]# vim lb.conf
upstream webs {
        server 192.168.121.13:80;
        server 192.168.121.14:80;
}

server {
        location / {
                proxy_pass http://webs;
        }
}
[root@openEuler-1 conf.d]# scp lb.conf 192.168.121.12:$PWD

# 重启nginx服务

三、配置keepalived

复制代码
[root@openEuler-1 conf.d]# cd /etc/keepalived/
[root@openEuler-1 keepalived]# vim keepalived.conf
! Configuration File for keepalived

global_defs {
   router_id LVS_1
}

vrrp_script check_nginx {
        script "killall -0 nginx"
}

vrrp_instance VI_1 {
    state MASTER
    interface ens160
    lvs_sync_daemon_interface ens192
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }

    track_script {
        check_nginx
    }

    virtual_ipaddress {
        192.168.121.10
    }
}

# 副负载均衡调度器上稍作修改
[root@openEuler-1 keepalived]# scp keepalived.conf 192.168.121.12:$PWD
修改为;
! Configuration File for keepalived

global_defs {
   router_id LVS_2
}

vrrp_script check_nginx {
        script "killall -0 nginx"
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens160
    lvs_sync_daemon_interface ens192
    virtual_router_id 51
    priority 80
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }

    track_script {
        check_nginx
    }

    virtual_ipaddress {
        192.168.121.10
    }
}

# 两台调度器都重启keepalived服务

四、测试

复制代码
# 关闭nginx主负载调度器
[root@openEuler-1 ~]# systemctl stop nginx.service

# 副负载调度器接管服务
[root@openEuler-2 ~]# tail -f /var/log/messages
Mar  2 16:25:16 openEuler-2 Keepalived_vrrp[3078]: Sending gratuitous ARP on ens160 for 192.168.121.10
Mar  2 16:25:16 openEuler-2 Keepalived_vrrp[3078]: Sending gratuitous ARP on ens160 for 192.168.121.10
Mar  2 16:25:16 openEuler-2 kernel: [ 9964.205163] IPVS: stopping backup sync thread 3081 ...
Mar  2 16:25:16 openEuler-2 kernel: [ 9964.208213] IPVS: sync thread started: state = MASTER, mcast_ifn = ens192, syncid = 0, id = 0
Mar  2 16:25:21 openEuler-2 Keepalived_vrrp[3078]: (VI_1) Sending/queueing gratuitous ARPs on ens160 for 192.168.121.10
Mar  2 16:25:21 openEuler-2 Keepalived_vrrp[3078]: Sending gratuitous ARP on ens160 for 192.168.121.10
Mar  2 16:25:21 openEuler-2 Keepalived_vrrp[3078]: Sending gratuitous ARP on ens160 for 192.168.121.10
Mar  2 16:25:21 openEuler-2 Keepalived_vrrp[3078]: Sending gratuitous ARP on ens160 for 192.168.121.10
Mar  2 16:25:21 openEuler-2 Keepalived_vrrp[3078]: Sending gratuitous ARP on ens160 for 192.168.121.10
Mar  2 16:25:21 openEuler-2 Keepalived_vrrp[3078]: Sending gratuitous ARP on ens160 for 192.168.121.10
相关推荐
花落人散处43 分钟前
SpringAI——接入高德MCP服务
java·后端
超浪的晨43 分钟前
Java 代理机制详解:从静态代理到动态代理,彻底掌握代理模式的原理与实战
java·开发语言·后端·学习·代理模式·个人开发
天天摸鱼的java工程师44 分钟前
🧠 MySQL 索引结构有哪些?优缺点是什么?【原理 + 场景实战】
java·后端·面试
java叶新东老师1 小时前
idea提交时忽略.class、.iml文件和文件夹或目录的方法
java·开发语言
飞翔的佩奇1 小时前
Java项目:基于SSM框架实现的社区团购管理系统【ssm+B/S架构+源码+数据库+毕业论文+答辩PPT+远程部署】
java·数据库·vue.js·毕业设计·mybatis·答辩ppt·社区团购
TDengine (老段)1 小时前
TDengine 转化函数 TO_TIMESTAMP 用户手册
java·大数据·数据库·物联网·时序数据库·tdengine·涛思数据
Warren981 小时前
Java Collections工具类
java·开发语言·笔记·python·学习·oracle·硬件工程
java叶新东老师2 小时前
CMakelists.txt 实现多级目录编译
java·服务器·数据库
_风不会停息2 小时前
JDK1.8升级 JDK21 实践踩坑
java
SimonKing2 小时前
一文搞定:SpringBoot集成语音识别模型FunASR
java·人工智能·后端