Nginx配置负载均衡

什么是负载均衡

把之前发送到一台服务器上的请求分发到多个服务器上 进行协同工作

前言

配置负载均衡至少需要准备三台虚拟机 其中一台虚拟机作为主虚拟机配置负载均衡进行分配,剩下两个虚拟机里面配置启动一个springboot项目,正常情况下剩下的两台虚拟机除了ip地址以外其余完全一样,我这里对项目进行了一点小小的改变便于分辨

一. Nginx使用服务启动

配置nginx快速启动,这里跟本章内容没有关系,不需要可直接跳过从 二 开始

1.创建nginx.service文件

切换到/lib/systemd/system/目录

创建命令

vim nginx.service

2.添加如下内容

在新建的nginx.service里面添加如下内容

⚠️注意 下方路径不一定跟我一样 务必使用自己的路径

[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/opt/nginx/nginxserver/sbin/nginx  -c /opt/nginx/nginxserver/conf/nginx.conf
ExecReload=/opt/nginx/nginxserver/sbin/nginx -s  reload
ExecStop=/opt/nginx/nginxserver/sbin/nginx  -s stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target

3. 命令 

保存之后在控制台输入下方命令使配置生效

 systemctl daemon-reload

之后使用之前的命令 找到nginx所在位置 先关闭nginx

 nginx -s stop

然后使用配置完之后的命令启动

systemctl start nginx 

查看状态

systemctl status nginx 

4.常用命令

配置之后需要使文件生效
systemctl daemon-reload
退出并保存文件,执行systemctl enable nginx.service使nginx开机启动
#开机自启动
systemctl enable nginx.service
#停止开机自启动
systemctl disable nginx.service
#查询当前状态
systemctl status nginx.service
#启动服务
systemctl start nginx.service
#重新启动服务
systemctl restart nginx.service
#停止服务
systemctl stop nginx.service
#重新加载配置
systemctl reload nginx.service

二. 克隆虚拟机

首先准备工作,准备至少三台虚拟机,一个配置好的虚拟机,剩下两个建立副本修改ip

1.克隆虚拟机

1) 关闭虚拟机ContOS 7 001

2) 右键虚拟机——>管理——>克隆——>下一步——>下一步——>创建完整的克隆——>修改虚拟机的名称和安装路径——>完成

2.修改ip地址

因为配置负载均衡需要使用三台服务器,所以服务器的ip不能重复,下面开始更改ip

命令:

        ⚠️注意 复制或者看着输入的时候 vim /etc/sysconfig/network-scripts/ifcfg-ens到这里按tab键因为后面这两个XX你或许跟我会不太一样

vim /etc/sysconfig/network-scripts/ifcfg-ensXX 

进来之后更改这个IPADDR即可然后重启虚拟机就更改完毕了 

重新连接之后查看ip会发现更改成功就行了 

3.克隆第二个虚拟机

        同上⬆️⬆️ 

三. 配置

 这里就是我所有的虚拟机,下面会在69这个虚拟机的nginx.conf配置文件里面将70 96配置到里面,在70和96里面分别运行两个项目,正常情况这两个项目是一样的,便于分辨我对这两个的数据库进行了一些修改

1.配置70 96 虚拟机 

70 96 这两个虚拟机不需要进行任何的配置 只需要将打包好的jar包上传进来之后运行进行访问测试即可

我这里是用的是这两个打包好的springboot项目(自行准备或者私我问我要)

 2.启动测试 70 96 虚拟机 

 3.对69服务器进行负载均衡配置

配置方向代理

4.访问 

第一次访问

刷新页面之后 

这样就配置完成了 

四. 负载均衡策略

1.轮询(默认)

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。

如:现在我有两个后台服务器 默认的规则轮询是先访问到的是服务器一后访问的是服务器二,再访问就还是服务器一......

upstream eduserver{
            server 192.168.190.129:8082;
            server 192.168.190.129:8083;
    }

2.加权轮询weight

weight 代表权重,可在配置的server后面加个weight=number,默认为 1,权重越高被分配的客户端越多

访问到35 的概率是70%

访问到36 的概率是30%

3.ip_hash

ip_hash 每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器  

根据访问的ip地址 算出来hash

根据hash 分配服务器

以后每次访问的时候都值指向第一个访问的那个服务器

 

 

4.least_hash

最少连接数,哪一个服务器连接最少就分发给哪个服务器

upstream myserver {
        least_conn;
        server 208.208.128.122:8082;
        server 208.208.128.122:8083;
    }

5.url_hash

按访问的url的hash结果分配请求,是每个url定向到同一后端服务器上。

 upstream myserver {
        url_hash;
        server 208.208.128.122:8082;
        server 208.208.128.122:8083;
    } 

6.fair(第三方)

fair(第三方),按后端服务器的响应时间来分配请求,响应时间短的优先分配。

   upstream myserver {
        server 208.208.128.122:8082;
        server 208.208.128.122:8083;
        fair;
    }

区别

  • 调度算法在设置upstream中配置,例如在此大括号里面写入ip_hash表示使用ip_hash的方式分配

  • 轮询只是简单实现请求的顺序转发,并没有考虑不同服务器的性能差异;

  • 加权轮询设置了初始时服务器的权重,但是没有考虑运行过程中的服务器状态;

  • IP Hash保证同一个客户端请求转发到同一个后台服务器实现了session保存,然而当某一后台服务器发生故障时,某些客户端将访问失败;

  • 最少连接数只是考虑了后端服务器的连接数情况,并没有完全考虑服务器的整体性能。

 

  • 20
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值