搭建服务器集群
集群
服务器集群,是通过多个服务器独特解决负荷,实现负载平衡分担压力的一种措施.可是随之而来也有一些问题:依据用户的反向代理的调用.用户不分明本人到底拜访的是哪台服务器.那么应该如何测试负载平衡呢???
咱们能够通过1个url申请获取拜访服务器端口号即可.
当初我的项目中application.yml文件中批改端口为8081,再通过@value动静赋值为属性,代码如下:
@RestControllerpublic 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;