nginx搭载负载均衡集群(load balance cluster)
序言
- 单点故障
定义:系统中某个服务以节点形式部署,在某一时刻出现这个服务不可用这种情况称之为单点故障。 - 单点并发压力问题
定义:系统在某一时刻出现大量请求,导致当前服务无法处理大量请求而出现突然宕机 称之为单点压力问题 - 集群 cluster
定义:同一种产品的多个服务组合在一起同时为一个系统提供服务的过程,称之为集群。 - 分布式系统
定义:由不同产品集群组成服务 共同为一个系统提供服务过程 称之为分布式。 - 应用服务器集群
扩展:
由于Nginx是基于C语言开发的,而要想在Linux系统中使用,必须把下载下来的文件编译成Linux可以运行的文件,我们需要安装相关依赖
一、Nginx实现负载均衡
-
安装Nginx
-
准备多台tomcat应用服务器
将安装好的tomcat复制多个,再进行配置文件的修改
三台:tom1 tom2 tom3 -
三个tomcat的config下的server.xml文件中,三个端口都需要修改,shutdown、http、Ajp,防止重复
vi tom/conf/server.xml
- 启动多个tomcat服务器
tom/bin/startup.sh
- 将多个应用服务器交给nginx管理
vim /usr/nginx/nginx.conf
①#gzip on; 在这下面加入以下内容
upstream tomcat-servers{
server 192.168.0.105:9001;
server 192.168.0.105:9002;
server 192.168.0.105:9003;
}
②将location修改为下面的内容即可
location / {
proxy_pass http://tomcat-servers;
proxy_redirect off;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real_IP $remote_addr;
}
- 接下来,将每个tomcat的首页修改一下,改成易于区分的内容。
- 然后在自己的windows电脑访问:
LinuxIP:80
,80端口是默认的可以省略。
然后不停刷新网页,可以看出nginx将用户的请求均衡的分发给每个Tomcat进行处理:默认轮循的方式进行负载均衡,这样就实现了负载均衡。
二、Nginx负载均衡策略(重要)
- 轮循
说明:默认策略,每个请求会按时间顺序逐一分配到不同的后端服务器。 - weight 权重
说明:weight参数用于指定轮循几率,weight的默认值为1,weight的数值与访问比率成正比。
upstream tomcat-servers{
server 192.168.0.105:9001 weight=2;
server 192.168.0.105:9002 weight=1;
server 192.168.0.105:9003 weight=10;
}
注意:
①权重越高分配到需要处理的请求越多
②此策略可以与least_conn和ip_hash结合使用,主要用于后端服务器性能不均
- ip_hash
说明:指定负载均衡器按照基于客户端IP的分配方式,这个方法确保了相同的客户端的请求一直发送到相同的服务器,以保证session会话。这样每个访客都固定访问一个后端服务器,可以解决session不能跨服务器的问题
upstream tomcat-servers{
ip_hash;
server 192.168.0.105:9001;
server 192.168.0.105:9002;
server 192.168.0.105:9003;
}
- least_conn
说明:把请求转发给连接数较少的后端服务器。轮循算法是把请求均发给各个后端,使它们的负载大致相同;但是,有些请求占用的时间很长,会导致其所在的后端负载较高,这种情况下,least_conn这种方式就可以达到更好的均衡效果。
upstream tomcat-servers{
least_conn;
server 192.168.0.105:9001;
server 192.168.0.105:9002;
server 192.168.0.105:9003;
}