nginx的集群是用了服务器的冗余技术,将多个服务器都映射到同一个server名称,再通过负载均衡的手段来平衡每台服务器的压力。
nginx作为统一的前台服务器,接收客户端的请求,根据反向代理的手段将请求域名映射到内部真实域名,而内部的服务器名后面可能对应者多台运行着同样服务的服务器,可以根据衡量每台物理设备的性能来分配负载均衡的权重。
springcloud里面的ribbon同样也是可以做负载均衡,由于springcloud针对rpc通讯,是不同服务之间的通讯,而单个服务可能为了应对高并发的情形采取了冗余的手段,即一个服务名后面对应着多台真实服务器,他们在不同的主机上或者在同一台主机不同端口上运行。为了平衡内部不同服务之间进行通讯产生的压力,同样需要负载均衡的存在。ribbon就是这样的一个技术。
ribbon的负载均衡的做法就是在服务调用方使用@Loadbalanced注解,服务提供方使用同样的服务名称即可。
nginx的负载均衡的做法是在nginx里面配置如下所示:
#gzip on;
upstream backserver{
server 127.0.0.1:8763;
server 127.0.0.1:8765;
}
server {
listen 80;
server_name www.anlysqx.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://backserver;
index index.html index.htm;
}
#error_page 404 /404.html;
这样就是把前台来的对www.anlysqx.com的请求映射到后端真实的服务器域名 -> backserver
backserver 采用了冗余,负载均衡的原则决定使用其中一个来处理请求,如转发给应用127.0.0.1:8763
负载均衡的设置:
#gzip on;
upstream backserver{
server 127.0.0.1:8763 weight=1;
server 127.0.0.1:8765 weight=3;
}