利用Nginx反向代理WebSocket服务器集群
1、假设现在有两个java线程
线程a 监听8888端口,提供http服务
线程b 监听9999端口,提供ws服务
请求http服务:http://192.168.0.30:8888/test_http
返回:200 ok
请求ws服务:socket=new WebSocket("ws://192.168.0.30:9999/test_ws")
连接成功
2、配置ngnix如下
server{
listen 8777;
server_name localhost;
location /do_ws {
proxy_pass http://0.0.0.0:9999/test_ws;
}
location /do_http {
proxy_pass http://0.0.0.0:8888/test_http;
}
}
请求http服务:http://192.168.0.30:8777/do_http
返回:200 ok
请求ws服务:socket=new WebSocket("ws://192.168.0.30:8777/do_ws");
连接成功
关于“负载均衡高可用”
转发器:位于网站架构的最前端,专职于:接受用户请求,转发请求。
借助于转发器就可以将处理请求的负载分布到后台N个真正的服务器上去,这就是负载均衡。
负载均衡器:实现某种均衡负载算法的转发器
高可用(HA-high Availability):狭义上是指单个主机的故障率低,广义上是指整个系统不会因为某几台主机停止服而停止服务。一般的,高可用性指的是系统的高可用性。
如何实现高可用?分两部分,第一部分:负载均衡器的高可用(负载均衡主机的狭义HA);第二部分:后端集群的高可用
关于虚拟服务器VS-Visual Server
无论采用什么样的转发器(负载均衡器)和后端集群向外提供服务,从用户角度,看到的始终是一个具备完整功能的服务器,而看不到亦不关心这个服务器内部是否发生了请求转发。这时,用户看到的服务器就是虚拟服务器。
虚拟服务器的实现请求转发的方式有如下几种方式
VS/NTA
VS/TUN
VS/DR
虚拟服务器采用的调度算法(负载均衡算法)有如下几种
轮叫调度
加权调度
最少连接
加权最少连接
基于局部性的最少连接
带复制的基于局部性的最少连接
目标地址散列
源地址散列