ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

LVS 负载均衡服务器搭建

2021-02-16 22:51:06  阅读:167  来源: 互联网

标签:arp 负载 请求 LVS 172.16 1.100 IP地址 服务器


一、介绍

LVS的英文全称是Linux Virtual Server,即Linux虚拟服务器。由章文嵩博士主导开发的开源负载均衡项目,从2.6内核开始已经被集成到linux内核模块中了。

二、LVS负载均衡调度算法

1. 轮询 rr

调度器通过“轮叫”调度算法将外部请求按顺序轮流分配到集群中的真实服务器(Real Server)上,它均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载。

2. 加权轮询 wrr

调度器通过“加权轮叫”调度算法根据真实服务器(Real Server)的不同处理能力来调度访问请求。这样可以保证处理能力强的服务器能处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。

3. 最小连接 lc

调度器通过“最少连接”调度算法动态地将请求调度到已建立的链接数最少的服务器上。如果集群系统的真实服务器(Real Server)具有相近的系统性能,采用“最小连接”调度算法可以较好地均衡负载。

4. 加权最小连接 wlc

在集群系统中的服务器性能差异较大的情况下,调度器采用“加权最少链接”调度算法优化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负载。服务器的缺省权值为1,系统管理员可以动态地设置服务器的权限。

5. 基于局部的最小连接 lblc

基于局部性的最少链接”调度算法是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。该算法根据请求的目标IP地址找出该目标IP地址最近使用的服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用“最少链接” 的原则选出一个可用的服务器,将请求发送到该服务器。

6. 带复制的基于局部性最少链接 lblcr

带复制的基于局部性最少链接”调度算法也是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。它与LBLC算法的不同之处是它要维护从一个目标 IP地址到一组服务器的映射,而LBLC算法维护从一个目标IP地址到一台服务器的映射。该算法根据请求的目标IP地址找出该目标IP地址对应的服务器组,按“最小连接”原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器;若服务器超载,则按“最小连接”原则从这个集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复制的程度。

7. 目标地址散列 dh

目标地址散列”调度算法根据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。

8. 源地址散列 sh

源地址散列”调度算法根据请求的源IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。

三、ipvsadm命令介绍

用法
ipvsadm     选项  服务器地址   -s  算法
ipvsadm     选项  服务器地址   -r  真是服务器地址     [工作模式]  [权重]

选项
    A               添加一个虚拟服务器
    E               编辑一个虚拟服务器
    D               删除一个虚拟服务器
    C               清空虚拟服务器列表
    R               从标准输入中还原虚拟服务器规则
    S               将虚拟服务器规则保存至标准输出
    a                添加一个真实服务器
    e                编辑一个真实服务器
    d                删除一个真实服务器
    l/L            查看分发列表
    t                 使用tcp协议
    u                使用udp协议
    s                指定算法
    r                设置真实服务器的IP地址和端口信息
    g                DR模式
    i                 tun模式
    m               nat模式
    w               设置真实服务器的权重
    c                查看连接状态,需要配合L使用
    n                以数字形式输出

四、部署LVS NAT集群

1. 工作原理

当用户请求到达director之后,director将请求报文的目标地址(即VIP)改成选定的realserver地址,同时将报文的目标端口也改成选定的realserver的相应端口,最后将报文请求发送到指定的realserver。在服务器端得到数据后,realserver将数据返给director,而director将报文的源地址和源端口改成VIP和相应端口,然后把数据发送给用户,完成整个负载调度过程。

2. 环境说明

操作系统 IP地址 角色
CentOS7 dip:172.16.120.100 vip:172.16.1.100 LVS
CentOS7 rip:172.16.120.101 RS1
CentOS7 rip:172.16.120.102 RS2

3. RS配置

配置IP地址,网关指向LVS主机

4. LVS配置

#开启转发
echo 1 > /proc/sys/net/ipv4/ip_forward
#安装软件
yum install -y ipvsadm
#添加分发规则
ipvsadm -A -t 172.16.1.100:80 -s rr
ipvsadm -a -t 172.16.1.100:80 -r 172.16.120.101:80 -m
ipvsadm -a -t 172.16.1.100:80 -r 172.16.120.102:80 -m

五、部署LVS DR集群

1. 工作原理

当用户请求到达director之后,director将请求报文中的源MAC地址修改为DIP的MAC地址,将目标MAC地址修改RIP的MAC地址,将请求发送到指定mac的realserver,而realserver将响应直接返回给客户端,不经过director。这个方式是三种调度中性能最好的,也是我们生产环境中使用最多的。

2. 环境说明

操作系统 IP地址 角色
CentOS7 dip:172.16.120.100 vip:172.16.1.100 LVS
CentOS7 rip:172.16.120.101 lo:0:172.16.1.100 RS1
CentOS7 rip:172.16.120.102 lo:0:172.16.1.100 RS2

3. RS配置

#设置VIP
ifconfig lo:0 172.16.1.100 netmask 255.255.255.255 up
#修改内核参数
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

4. LVS配置

#配置VIP
ip addr add 172.16.1.100/24 dev eth0:0
#添加分发规则
ipvsadm -A -t 172.16.1.100:80 -s rr
ipvsadm -a -t 172.16.1.100:80 -r 172.16.120.101:80 -g
ipvsadm -a -t 172.16.1.100:80 -r 172.16.120.102:80 -g

六、部署LVS TUN集群

1. 工作原理

当用户请求到达director之后,director进行IP Tunnel封装,即在原有的包头加上IP Tunnel的包头然后发送出去。realserver服务器得根据IP Tunnel包头信息收到请求包,然后解开IP Tunnel包头信息,得到客户的请求包并进行响应处理。而realserver将响应直接返回给客户端,不经过director。

2. 环境说明

操作系统 IP地址 角色
CentOS7 dip:172.16.120.100 vip:172.16.1.100 LVS
CentOS7 rip:172.16.120.101 tunl0:172.16.1.100 RS1
CentOS7 rip:172.16.120.102 tunl0:172.16.1.100 RS2

3. RS配置

#添加隧道
modprobe ipip
ip link set up tunl0
#配置VIP
ifconfig tunl0 172.16.1.100 netmask 255.255.255.255 up
#修改内核参数
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter

4. LVS配置

#修改内核参数
echo 1 > /proc/sys/net/ipv4/ip_forward
#添加分发规则
ipvsadm -A -t 172.16.1.100:80 -s rr
ipvsadm -a -t 172.16.1.100:80 -r 172.16.120.101:80 -i
ipvsadm -a -t 172.16.1.100:80 -r 172.16.120.102:80 -i

补充:

arp_ignore 控制系统在收到外部的arp请求时,如何响应。常用的取值主要有0,1,2,3~8较少用到:

0:响应任意网卡上接收到的对本机IP地址的arp请求(包括环回网卡上的地址),而不管该目的IP是否在接收网卡上。

1:只响应目的IP地址为接收网卡上的本地地址的arp请求。

2:只响应目的IP地址为接收网卡上的本地地址的arp请求,并且arp请求的源IP必须和接收网卡同网段。

arp_announce 控制系统在对外发送arp请求时,如何选择arp请求数据包的源IP地址。常用的取值有0,1,2。

0:允许使用任意网卡上的IP地址作为arp请求的源IP

1:尽量避免使用不属于该发送网卡子网的本地地址作为发送arp请求的源IP地址。

2:忽略IP数据包的源IP地址,选择该发送网卡上最合适的本地地址作为arp请求的源IP地址。
rp_filter 参数用于控制系统是否开启对数据包源地址的校验
0:关闭反向路由校验
1:开启严格的反向路由校验。对每个进来的数据包,校验其反向路由是否是最佳路由。如果反向路由不是最佳路由,则直接丢弃该数据包。

2:开启松散的反向路由校验。对每个进来的数据包,校验其源地址是否可达,即反向路由是否能通(通过任意网口),如果反向路径不通,则直接丢弃该数据包。

标签:arp,负载,请求,LVS,172.16,1.100,IP地址,服务器
来源: https://blog.51cto.com/7965676/2629842

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有