Nginx+keepalived实现七层的负载均衡的高可用

目录

Nginx+keepalived实现七层的负载均衡的高可用

一、准备服务器

1、主机清单

[2、配置安装nginx 所有的机器,关闭防火墙和selinux](#2、配置安装nginx 所有的机器,关闭防火墙和selinux)

[3.安装nginx, 全部4台](#3.安装nginx, 全部4台)

二、部署负载均衡

1、修改nginx的配置文件,添加以下内容,

2、重启nginx

3.修改server1、server2的web页面测试

4..访问负载均衡

三、Keepalived实现调度器HA

[1、 主/备调度器安装软件](#1、 主/备调度器安装软件)

2、备份keepalived配置文件

3、修改配置文件

4、启动keepalived(主备均启动)

四、解决nginx服务故障

1、作用

2、检查nginx健康的脚本

3、测试


Nginx+keepalived实现七层的负载均衡的高可用

一、准备服务器

1、主机清单
主机名 ip 系统
Proxy-master 10.12.153.105 centos7.5
Proxy-slave 10.12.153.176 centos7.5
Real-server1 10.12.153.114 Centos7.5
Real-server2 10.12.153.187 centos7.5
2、配置安装nginx 所有的机器,关闭防火墙和selinux
cpp 复制代码
[root@proxy-master ~]# systemctl stop firewalld         //关闭防火墙
[root@proxy-master ~]# sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/sysconfig/selinux        //关闭selinux,重启生效
[root@proxy-master ~]# setenforce 0                //关闭selinux,临时生效
3.安装nginx, 全部4台
cpp 复制代码
[root@proxy-master ~]# cd /etc/yum.repos.d/
[root@proxy-master yum.repos.d]# vim nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
[root@proxy-master yum.repos.d]# yum install yum-utils -y
[root@proxy-master yum.repos.d]# yum install nginx -y

二、部署负载均衡

1、选择两台nginx服务器作为代理服务器。

2、给两台代理服务器安装keepalived制作高可用生成VIP

3、配置nginx的负载均衡

#两台代理配置一样

1、修改nginx的配置文件,添加以下内容,

#注意:将/etc/nginx/conf.d/default.conf改名,不然转发不过去

cpp 复制代码
[root@proxy-slave conf.d]# mv default.conf default.conf.back
cpp 复制代码
upstream backend {
    server 10.12.153.114:80 weight=1 max_fails=3 fail_timeout=20s;
    server 10.12.153.187:80 weight=1 max_fails=3 fail_timeout=20s;
    }
    server {
        listen 80;
        server_name localhost;
        location / {
        proxy_pass http://backend;
        proxy_set_header Host $host:$proxy_port;
        proxy_set_header X-Forwarded-For $remote_addr;
}
}
2、重启nginx
cpp 复制代码
[root@proxy-master ~]# nginx -s reload
3.修改server1、server2的web页面测试
cpp 复制代码
[root@server2 ~]# cat >>/usr/share/nginx/html/index.html<<EOF
> 187
> EOF


[root@server1 html]# cat >/usr/share/nginx/html/index.html<<EOF
> 114
> EOF
4..访问负载均衡

负载均衡正常

三、Keepalived实现调度器HA

注:主/备调度器均能够实现正常调度

1、 主/备调度器安装软件
cpp 复制代码
[root@proxy-master ~]# yum install -y keepalived
[root@proxy-slave ~]# yum install -y keepalived
2、备份keepalived配置文件
cpp 复制代码
[root@proxy-master ~]# cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
3、修改配置文件

①修改master

cpp 复制代码
[root@proxy-master ~]# vim /etc/keepalived/keepalived.conf
cpp 复制代码
! Configuration File for keepalived

global_defs {
   router_id directory1   #辅助改为directory2
}
:
vrrp_instance VI_1 {
    state MASTER        #定义主还是备
    interface ens33     #VIP绑定接口
    virtual_router_id 80  #整个集群的调度器一致
    priority 100         #back改为50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.12.153.151/24   # vip
    }
}

②修改slave

cpp 复制代码
[root@proxy-slave ~]# vim /etc/keepalived/keepalived.conf
cpp 复制代码
! Configuration File for keepalived

global_defs {
   router_id directory2
}

vrrp_instance VI_1 {
    state BACKUP    #设置为backup
    interface ens33
    nopreempt        #设置到back上面,不抢占资源
    virtual_router_id 80
    priority 50   #辅助改为50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.12.153.151/24
    }
}
4、启动keepalived(主备均启动)
cpp 复制代码
[root@proxy-master ~]# systemctl enable keepalived
[root@proxy-slave ~]# systemctl start keepalived

5、通过停止keepalived来测试VIP是否飘逸

①在master,slave上查看

②停掉master的keepalived来模仿master宕机,看VIP是否飘逸

由此可见nginx的高可用成功

到此:

可以解决心跳故障keepalived

不能解决Nginx服务故障

四、解决nginx服务故障

扩展对调度器Nginx健康检查(可选)两台都设置

1、作用

让Keepalived以一定时间间隔执行一个外部脚本,脚本的功能是当Nginx失败,则关闭本机的Keepalived

2、检查nginx健康的脚本
cpp 复制代码
! Configuration File for keepalived

global_defs {
   router_id directory1   #辅助改为directory2
}
:
vrrp_script check_nginx {
   script "/etc/keepalived/check_nginx_status.sh"
   interval 5
}
vrrp_instance VI_1 {
    state MASTER        #定义主还是备
    interface ens33     #VIP绑定接口
    virtual_router_id 80  #整个集群的调度器一致
    priority 100         #back改为50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.12.153.151/24   # vip
    }
  track_script {
        check_nginx         
    }
}

注:必须先启动nginx,再启动keepalived

3、测试

停止master的nginx,VIP会飘逸到salve上,

再次启动master的nginx,重启master的keepalived,VIP会飘到master上。

相关推荐
青山木3 分钟前
RocketMQ 入门到原理(三):消息存储原理
java·后端·中间件·架构·rocketmq
MayBaymax3 分钟前
Spring AI Alibaba Graph 实战:客服工单智能处理
java·ai·ai编程
光依旧34 分钟前
MCP实战手记系列(五):让工具返回一个能点的界面(文末附github源码链接)
java·spring ai·前端集成·mcp·mcp apps
APIshop40 分钟前
淘宝选品接口实战:从召回、详情、佣金到转链的 Java 接入笔记
java
泡茶喝茶写代码1 小时前
量化数据进阶:多维实战篇(第 11 篇):历史涨跌停价:涨跌停序列与止损线测算
java·python·股票数据api·股票数据·股票数据api接口·股票api数据接口·股票量化数据api
景熙55231 小时前
单体项目编写思路和落地形式
java·开发语言
Ivanqhz1 小时前
Slope One 算法详解:与矩阵分解、共现矩阵的异同
java·服务器·网络·人工智能·深度学习
Bs_MoneyMagnet2 小时前
基于springboot+vue的非遗物质文化遗产系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·spring·毕业设计·计算机毕业设计
万物智能2 小时前
波形发生AD9833模块配置—【万物智能之开源鸿蒙OpenHarmony系统实战开发系列教程】
java
计算机毕设定制辅导-无忧学长2 小时前
《基于SpringBoot的未成年人健康知识科普平台的设计与实现》
java·开发语言·vue.js·spring boot·未成年人健康知识科普平台