- 负载均衡是网络基础架构的一个非常关键的组成部分,有了负载均衡,我们可以把应用服务器部署多台,避免了服务宕机,也增强了服务的性能及可用性。
- 负载均衡的算法有很多 ,这里只是简单提下,
- 轮询:从第一个请求的服务器开始,按循序往后依次选择
- 加权轮询:每台服务器负载能力不一样,能力弱点的,可以为其分配较小的权重,降低其系统压力,能力强的可以加大其权重,加权轮询可以很好处理这些。nginx的负载均衡默认算法是加权轮询算法。
- 随机算法:从服务器中随机选择一个处理请求
- 最小连接:选择连接数最小、压力最小的服务器,来处理请求
- 散列:根据请求源的IP的散列(hash)来选择请求的服务器。该算法很好的规避了多节点web项目中的session同步问题。
- 负载均衡的方式也分为软/硬件,方式也很多,接下来我们来讲nginx怎么配置负载均衡,前几篇已经写了nginx的安装以及https的配置,有需要可以浏览下。
1、准备服务
- 我放了两个tomcat在服务器上,端口分别改为8085、8086
- 首先确认服务正常
2、修改nginx配置
-
进入/etc/nginx/conf.d
-
upstream模块,将使nginx跨越单机的限制,完成网络数据的接收、处理和转发。
-
demo:
upstream test{
ip_hash;
server 127.0.0.1:8081weight=1;
server 127.0.0.1:8082 down;
server 127.0.0.1:8083 backup;
server 127.0.0.1:8084 weight=2;
}
-ip_hash:对请求的IP进行hash后的结果进行分配,这样每个用户固定请求同一个服务器
-
down: 表示单前的服务临时不參与负载.
-
backup: 其他全部的非backup机器down或者忙的时候,请求backup机器,这台机器压力会最轻
-
加权轮询:weight表示权重的意思,数字越大,权重越高。上面配置,8084是8081的权重的两倍,就是三次请求,8084处理两次,8081处理一次
-
我们这样配置来测试:
vi upstream.conf
upstream tomcat {
server 127.0.0.1:8085;
server 127.0.0.1:8086;
}
vi https.www.flighting.top.conf
# HTTPS redirect
server {
listen 443 ssl;
server_name www.flighting.top;
# SSL
ssl_certificate /etc/nginx/crt/test.crt;
ssl_certificate_key /etc/nginx/crt/test.key;
# security
#include conf.d/include/security.conf;
# logging
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log warn;
# reverse proxy
location / {
proxy_pass http://tomcat;
#include conf.d/include/proxy.conf;
}
# additional config
#include conf.d/include/general.conf;
}
}
- 启动nginx,访问https://47.101.201.179
3、测试负载均衡
- 首先我们把8085的服务停止
- 访问http://47.101.201.179:8085/
- 访问https://47.101.201.179,服务仍是好着的
- 我们再把8086的服务停止
- 访问http://47.101.201.179:8086/
- 访问https://47.101.201.179,服务宕机
- 启动8085的服务,再访问https://47.101.201.179
- 至此负载均衡测试成功,关于ip_hash、weight大家有兴趣可以自己写个页面测试看,在此不多说
- 关注公众号"双城人",搬砖过程遇到的问题,大家一起探讨,资源共享