搭建服务器集群
集群
服务器集群,是通过多个服务器共同处理负荷,实现负载均衡分担压力的一种措施.可是随之而来也有一些问题:根据用户的反向代理的调用.用户不清楚自己到底访问的是哪台服务器.那么应该如何测试负载均衡呢???
我们可以通过1个url请求获取访问服务器端口号即可.
现在项目中application.yml文件中修改端口为8081,再通过@value动态赋值为属性,代码如下:
@RestController
public class PortController {
/**
* 通过Spring容器动态获取YML配置文件中的端口即可
*/
@Value("${server.port}")
private int port;
@RequestMapping("/getPort")
public String getPort(){
return "当前访问的端口号为:"+port;
}
}
这样当我们访问项目的getPort映射时就会显示对应服务器的端口号,可以依据此端口号来进行测试.
搭建tomcat服务器集群
我们将项目系统打成3个war包程序. 端口号分别为8081/8082/8083,之后通过java命令(java -jar 808X.war)启动3个cmd窗口也就是3台服务器.
项目打包:
先修改端口号之后,将maven进行clean/install打包操作.
通过java -jar 808X.war将项目发布后然后依次在浏览器进行访问测试.
Nginx集群配置
集群配置
我们现在需要通过manage.com的方式访问服务器时,要求通过反向代理的方式实现.要求配置nginx中集群.
#配置后台管理系统
server {
listen 80;
server_name manage.jt.com;
location / {
#root 代表文件目录
#index 代表默认的访问页面
#proxy_pass 代表发起url请求
proxy_pass http://jtW;
}
}
#配置集群的关键字 通过集群配置tomcat服务器即可
#默认: 1.轮询的机制
upstream jtW {
server 127.0.0.1:8081;
server 127.0.0.1:8082;
server 127.0.0.1:8083;
}
负载均衡策略说明
- 轮询策略:
根据配置文件的顺序,之后依次访问服务器. 该策略也是默认的机制.
#默认: 1.轮询的机制
upstream jtW {
server 127.0.0.1:8081;
server 127.0.0.1:8082;
server 127.0.0.1:8083;
}
- 权重策略--weight:
公司采购服务器都是有时间间隔的. 但是由于服务器新旧不同,硬件版本不同,导致服务器处理能力不同.
如果上述的问题不做处理,依然采用轮询的机制,则会出现严重的负载不均衡的现象.
所以需要通过权重的方式平衡压力,weight值越大.
#配置集群的关键字 通过集群配置tomcat服务器即可
#默认: 1.轮询的机制 2.权重策略
upstream jtW {
server 127.0.0.1:8081 weight=6;
server 127.0.0.1:8082 weight=3;
server 127.0.0.1:8083 weight=1;
}
- IPHASH策略--ip_hash:
当某些业务需要用户特定的访问固定的服务器时,就要选用iphash机制.
#默认: 1.轮询的机制 2.权重策略 3.IPHASH
upstream jtW {
ip_hash;
server 127.0.0.1:8081 weight=6;
server 127.0.0.1:8082 weight=3;
server 127.0.0.1:8083 weight=1;
}
可以了解一下iphash是如何选择服务器的:
会通过ip地址的hash值对服务器数量进行取模,然后只访问取模为零的服务器,只有该服务器宕机后才会再访问其他的.
负载均衡补充
- down属性:
如果tomcat服务器发生了宕机的现象,则通过配置文件标识down的属性,则nginx将不会再次访问故障机.server 127.0.0.1:8081 down;
- backup属性:
通常情况下 都会部署一些备用机防止由于主机宕机,剩余的机器不能实现高负责从而导致整个服务宕机的问题.
如果设置了备用机,则正常情况下用户不会访问.但是当主机宕机或者主机遇忙时才会访问.server 127.0.0.1:8083 backup;
- tomcat高可用配置:
1).max_fails=1 配置nginx访问服务器的最大的失败次数.
2).fail_timeout=60s; 理解为一个时间周期. 如果发现服务器宕机,则在60秒内不会再次访问故障机.server 127.0.0.1:8081 max_fails=1 fail_timeout=60s;
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。