本帖最后由 20000 于 2022-2-9 10:18 编辑
附:LVS的负载均衡算法(1)静态算法静态:根据LVS本身自由的固定的算法分发用户请求。 - 轮询(Round Robin 简写’rr’):轮询算法假设所有的服务器处理请求的能力都一样的,调度器会把所有的请求平均分配给每个真实服务器。(同Nginx的轮询)
- 加权轮询(Weight Round Robin 简写’wrr’):安装权重比例分配用户请求。权重越高,被分配到处理的请求越多。(同Nginx的权重)
- 源地址散列(Source Hash 简写’sh’):同一个用户ip的请求,会由同一个RS来处理。(同Nginx的ip_hash)
- 目标地址散列(Destination Hash 简写’dh’):根据url的不同,请求到不同的RS。(同Nginx的url_hash)
(2)动态算法动态:会根据流量的不同,或者服务器的压力不同来分配用户请求,这是动态计算的。 - 最小连接数(Least Connections 简写’lc’):把新的连接请求分配到当前连接数最小的服务器。
- 加权最少连接数(Weight Least Connections 简写’wlc’):服务器的处理性能用数值来代表,权重越大处理的请求越多。Real Server 有可能会存在性能上的差异,wlc动态获取不同服务器的负载状况,把请求分发到性能好并且比较空闲的服务器。
- 最短期望延迟(Shortest Expected Delay 简写’sed’):特殊的wlc算法。举例阐述,假设有ABC三台服务器,权重分别为1、2、3 。如果使用wlc算法的话,当一个新请求进来,它可能会分给ABC中的任意一个。使用sed算法后会进行如下运算:
- A:(1+1)/1=2
- B:(1+2)/2=3/2
- C:(1+3)/3=4/3
最终结果,会把这个请求交给得出运算结果最小的服务器。最少队列调度(Never Queue 简写’nq’):永不使用队列。如果有Real Server的连接数等于0,则直接把这个请求分配过去,不需要在排队等待运算了(sed运算)。 八、搭建Keepalived+Lvs+Nginx高可用集群负载均衡如果原先服务器上配置了LVS+nginx需要清空ipvsadm中的配置
如果配置了Keepalived+Nginx双主集群也需要去除掉Keepalived中原先的配置,按照的后文进行配置 (1)使用keepalived配置Master LVS在LVS的机器上安装keepalived,安装过程参考上文 (1)修改keepalived的配置 - global_defs {
- router_id keep_151
- }
- vrrp_instance VI_1 {
- state MASTER
- interface ens33
- virtual_router_id 41
- priority 100
- advert_int 1
- authentication {
- auth_type PASS
- auth_pass 1111
- }
- virtual_ipaddress {
- 192.168.1.150
- }
- }
- #配置集群访问的ip+端口,端口和nginx保持一致
- virtual_server 192.168.1.150 80{
- #健康检查的时间,单位:秒
- delay_loop 6
- #配置负载均衡的算法,默认的轮询
- lb_algo rr
- #设置LVS的模式 NAT|TUN|DR
- lb-kind DR
- #设置会话持久化的时间
- persistence_timeout 5
- #协议
- protocol TCP
-
- #配置负载均衡的真实服务器,也就是nginx节点的具体的ip地址
- real_server 192.168.1.171 80{
- #轮询权重配比
- weight 1
- #设置健康检查
- TCP_CHECK {
- #检查80端口
- connect_port 80
- #超时时间
- connect_timeout 2
- #重试次数
- nb_get_retry 2
- #重试间隔时间
- delay_before_retry 3
- }
- }
- real_server 192.168.1.171 80{
- weight 1
- TCP_CHECK {
- connect_port 80
- connect_timeout 2
- nb_get_retry 2
- delay_before_retry 3
- }
- }
- }
复制代码
(2)启动/重启keepalived
- systemctl restart keepalived
复制代码
(2)使用keepalived配置Backup LVS配置在备用机上 - global_defs {
- router_id keep_152
- }
- vrrp_instance VI_1 {
- state BACKUP
- interface ens33
- virtual_router_id 41
- priority 50
- advert_int 1
- authentication {
- auth_type PASS
- auth_pass 1111
- }
- virtual_ipaddress {
- 192.168.1.150
- }
- }
- #配置集群访问的ip+端口,端口和nginx保持一致
- virtual_server 192.168.1.150 80{
- #健康检查的时间,单位:秒
- delay_loop 6
- #配置负载均衡的算法,默认的轮询
- lb_algo rr
- #设置LVS的模式 NAT|TUN|DR
- lb-kind DR
- #设置会话持久化的时间
- persistence_timeout 5
- #协议
- protocol TCP
-
- #配置负载均衡的真实服务器,也就是nginx节点的具体的ip地址
- real_server 192.168.1.171 80{
- #轮询权重配比
- weight 1
- #设置健康检查
- TCP_CHECK {
- #检查80端口
- connect_port 80
- #超时时间
- connect_timeout 2
- #重试次数
- nb_get_retry 2
- #重试间隔时间
- delay_before_retry 3
- }
- }
- real_server 192.168.1.171 80{
- weight 1
- TCP_CHECK {
- connect_port 80
- connect_timeout 2
- nb_get_retry 2
- delay_before_retry 3
- }
- }
- }
复制代码
|