如何配置Web服务器实现负载均衡

如何配置Web服务器实现负载均衡,第1张

网络的负载均衡是一种动态均衡技术,通过一些工具实时地分析数据包,掌握网络中的数据流量状况,把任务合理均衡地分配出去。这种技术基于现有网络结构,提供了一种扩展服务器带宽和增加服务器吞吐量的廉价有效的方法,加强了网络数据处理能力,提高了网络的灵活性和可用性。
以四台服务器为例实现负载均衡:
安装配置LVS
1 安装前准备:
(1)首先说明,LVS并不要求集群中的服务器规格划一,相反,可以根据服务器的不同配置和负载状况,调整负载分配策略,充分利用集群环境中的每一台服务器。如下表:
Srv Eth0 Eth0:0 Eth1 Eth1:0
vs1 10001 10002 192168101 19216810254
vsbak 10003 19216810102
real1 19216810100
real2 19216810101
其中,10002是允许用户访问的IP。
(2)这4台服务器中,vs1作为虚拟服务器(即负载平衡服务器),负责将用户的访问请求转发到集群内部的real1,real2,然后由real1,real2分别处理。
Client为客户端测试机器,可以为任意 *** 作系统。
(3)所有OS为redhat62,其中vs1 和vsbak 的核心是2219, 而且patch过ipvs的包, 所有real
server的Subnet mask 都是24位, vs1和vsbak 的1000 网段是24 位。
2理解LVS中的相关术语
(1) ipvsadm :ipvsadm是LVS的一个用户界面。在负载均衡器上编译、安装ipvsadm。
(2) 调度算法: LVS的负载均衡器有以下几种调度规则:Round-robin,简称rr;weighted
Round-robin,简称wrr;每个新的连接被轮流指派到每个物理服务器。Least-connected,简称lc;weighted
Least-connected,简称wlc,每个新的连接被分配到负担最小的服务器。
(3) Persistent client
connection,简称pcc,(持续的客户端连接,内核2210版以后才支持)。所有来自同一个IP的客户端将一直连接到同一个物理服务器。超时时间被设置为360秒。Pcc是为>

在之前提到的OpenResty/Nginx的负载均衡当中,当服务器启动之后,upstream中的上游服务器就是固定死的了,做不到动态的变更。这里面说到的变更,其实更多指的是增加机器。因为当上游服务器不可用时,upstream会自动将服务器摘除,但是当新增服务器时,upstream就做不到了。传统的负载均衡办法,就是能是修改配置,然后重启服务。下面介绍一下动态负载均衡的方式,一种是通过动态重启服务;另外一种是通过代码的方式动态拉取服务器列表。

Consul是一个分布式服务注册与发现系统。这里面使用Consul来管理上游服务器,当服务器启动时将其注册到注册中心去,当服务关闭时从注册中心列表中剔除。这里面需要注意一点的是:当上游服务器关闭时,Consul本身不会自动从列表中剔除,而是需要在服务器关闭前主动向Consul发起删除服务。

Consul有以下特性:

通过Consul可以获取到upstream中的上游服务器列表,下面要做的事情就是生成upstream中的模板了。这里就需要用到Consul-templete,它可以使用>1921681100 (电信)
1921681101 (电信)
1921681102 (电信)
101010100 (网通)
101010101 (网通)
并且5台服务器都在为>百度词条里的解释是:负载均衡,英文叫Load Balance,意思就是将请求或者数据分摊到多个 *** 作单元上进行执行,共同完成工作任务。
它的目的就通过调度集群,达到最佳化资源使用,最大化吞吐率,最小化响应时间,避免单点过载的问题。

负载均衡可以根据网络协议的层数进行分类,我们这里以ISO模型为准,从下到上分为:
物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。
当客户端发起请求,会经过层层的封装,发给服务器,服务器收到请求后经过层层的解析,获取到对应的内容。

二层负债均衡是基于数据链路层的负债均衡,即让负债均衡服务器和业务服务器绑定同一个虚拟IP(即VIP),客户端直接通过这个VIP进行请求,那么如何区分相同IP下的不同机器呢?没错,通过MAC物理地址,每台机器的MAC物理地址都不一样,当负载均衡服务器接收到请求之后,通过改写>

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;

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/13002471.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-29
下一篇 2023-05-29

发表评论

登录后才能评论

评论列表(0条)

保存