搭建服务器集群
集群
服务器集群, 是通过多个服务器独特解决负荷, 实现负载平衡分担压力的一种措施. 可是随之而来也有一些问题: 依据用户的反向代理的调用. 用户不分明本人到底拜访的是哪台服务器. 那么应该如何测试负载平衡呢???
咱们能够通过 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;