nginx负载均衡策略主要分一下四种:
1)、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器宕机,能自动剔除。
2)、ip_hash 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器。
3)、fair 按后端服务器的响应时间来分配请求,响应时间短的优先分配。
4)、url_hash 按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
二,如果涉及到用户session,做一些鉴权缓存、存放临时信息时,就必须做tomcat的session共享。
目前可参考到的session共享方式主要分为两种。
1)利用tomcat自带的组播机制,实现session复制。
对tomcat及应用的若干配置文件进行配置即可实现,网上有很多资料可参考。但这种方式些弊端,看过一些资料,不建议用session复制的方式。在实际使用过程中,也发现有存在session莫名失踪的现象。
2)利用第三方机制存储session。
比较常见的是tomcat集成memcached服务器来存储session。实际项目中,我们采用过利用redis实现session存储,redis高效的存取性能为高效的访问提供了保障,但是目前redis的集群功能似乎没有发布,如何解决redis的单点故障需要研究。像其他任何Web服务器一样,你可以对Citrix StoreFront、DDC和VMware连接服务器进行负载均衡。下面是实现这种工作负载的一些方式:
DNS轮转:这是一种简单的方式,可以通过在DNS服务器上为StoreFront或连接服务器设定多个名称或者“A”记录的方式实现。比如,用于轮转的DNS列表可以是这样的:STOREFRONT 192168010, STOREFRONT 192168011,等等。DNS服务器使用下一个可用IP地址来解析对于服务器名的后续请求。
这种方式的优点是十分简单、可用性高和开销低(没有开销)。但是缺点是,这并不是真正的负载均衡;只是简单的给出了下一个可用的服务器IP地址。这种方式没有使用先进的负载均衡器(LBs)进行查询和更为先进的关键性能因素。专用的负载均衡服务器可以根据目标服务器的CPU、网络使用率、磁盘输入/输出情况和服务可用性来平衡负载。对于一个出现关键服务离线或者崩溃的服务器来说,将其加入到负载均衡当中没有什么意义。
微软网络负载均衡服务(NLB)。NLB需要使用Windows服务器授权。可以在连接服务器或者StoreFront服务器本地运行NLB,并加入到集群当中,产生一个逻辑名称和IP地址。NLB根据网络流量负载情况来判断主机的繁忙程度,这样可以提供更为有意义的负载均衡。其可以智能地判断出如果集群中的某个主机不可用,那么就不会将负载转发到这个主机上。这个测试不包括集群中的服务器是活动的,但是StoreFront或连接服务没有正常工作的情况。
专用负载均衡器。 Citrix NetScaler、F5 Big IP Local Traffic Manager、Kemp Technologies LoadMaster和Radware 的Alteon工具都可以为XenDesktop和Horizon View提供专用的负载均衡功能。这些负载均衡器可能是物理硬件或者虚拟设备,相比于DNS轮转和NLB方式,它们有很多优势。
专用的负载均衡器可以在VDI实施过程中识别更多因素。它会持续评估目标服务器的健康程度,包括像内存和CPU使用率这样的性能指标。负载均衡器可以对服务器进行评估和常规测试,以判断服务器是否工作正常。如果在健康检查时发现问题,其可以将服务器从用户的可用列表中删除,实现宕机时间的透明化。
负载均衡只是这些产品诸多特性中的一个。负载均衡服务器提供的内容缓存、压缩、优先级和其他网络流量优化可以通过降低VDI服务器自身负载来改善性能表现。1921681100 (电信)
1921681101 (电信)
1921681102 (电信)
101010100 (网通)
101010101 (网通)
并且5台服务器都在为>
Nginx中常见的几种负载均衡方式:
1、轮询(Nginx自带、默认)
该策略是Nginx默认的负载均衡策略,每一个客户端请求按时间顺序轮流分配到不同的服务器上,如果后端服务不可以用,会自动过滤掉。
upstream my_test_server {
server 1921680100:8080;
server 1921680101:8080;
}
2、weight 权重(Nginx自带)
weight代表权重的意思,用于指定轮询的几率,默认权重都是1可以手动设置调整,权重越高,被分配的次数越多,weight权重和访问比例是成正比的,用于解决后端服务器性能不均衡时,调整访问比例。
upstream my_test_server {
server 1921680100:8080 weight=1;
server 1921680101:8080 weight=2;
server 1921680102:8080 weight=3;
}
3、ip_hash(Nginx自带)
ip_hash是将每个请求按照访问ip的hash结果进行分配,这种方式可以保证同一个用户会固定访问一个后端服务器。优点:可以保证session会话,解决服务器之间session不能共享的问题。
upstream my_test_server {
ip_hash;
server 1921680100:8080;
server 1921680101:8080;
}
4、least_conn(Nginx自带)
将请求转发给连接数较少的后端服务器。每个后端服务器配置可能不同,处理的请求也有可能不同,对于处理的请求有快有慢,least_conn是根据后端服务器的连接情况,动态的选择连接数量较少的一台服务器来处理当前的请求。
upstream my_test_server {
least_conn;
server 1921680100:8080;
server 1921680101:8080;
}
5、fair(第三方)
fair是按照服务器端的响应时间来分配请求,响应时间短的服务器优先分配。第三方的负载均衡策略需要安装第三方的插件。
upstream my_test_server {
fair;
server 1921680100:8080;
server 1921680101:8080;
}
6、url_hash(第三方)
url_hash是根据url的hash结果进行分配请求,每一个url会固定到同一个服务器上,配合缓存使用,可以减少不必要的下载和资源时间的浪费。每次同一个url请求到达同一个服务器上,第一次加载后放入缓存,后面再次请求,直接取缓存资源。如果不采用url_hash,可能会导致请求到达不同的服务器,资源出现重新加载的情况。第三方的负载均衡策略需要安装第三方的插件。
upstream my_test_server {
hash $request_uri;
server 1921680100:8080;
server 1921680101:8080;
}
为了应对高并发,我们引入了负载均衡,就是将原本需要一台服务器处理的业务,分配给了多台服务器进行处理,而分配的规则就是SLB算法。SLB(server load balance)是负载均衡的缩写。
负载均衡主要有三种算法:
①轮训法
通过将用户的请求轮流分配给配置好的服务器进行解析
②随机法
通过随机因子分配给不同的服务器,通过分散性,达到均衡
③最小连接法
通过选择最少连接的服务器进行分配,就是能者多劳
负载均衡主要有三种实现方法:
①dns轮训
通过dns解析到不同的ip来进行负载均衡
②反向代理
一般通过nginx进行代理解析,服务请求先到达nginx代理服务器,然后又nginx进行转发
③NAT(LVS)
该技术通过一个地址转换网关将每个外部连接均匀转换为不同的内部服务器地址,因此外部网络中的计算机就各自与自己转换得到的地址上的服务器进行通信,从而达到负载均衡的目的
目前阿里云提供的SLB服务还是很方便使用的,只需要登录管理后台,然后选择开通SLB服务,然后添加配置对应的ECS服务器就可以使用了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)