高并发 - LVS的DR模型

文章目录
  1. 1. 理论基础
    1. 1.1. 关闭arp解析,隐藏VIP方法
  2. 2. LVS服务配置
    1. 2.1. 添加虚拟IP
    2. 2.2. 添加服务
    3. 2.3. 查看
    4. 2.4. 删除所有集群服务
    5. 2.5. 保存规则
    6. 2.6. 载入规则
    7. 2.7. 调度方法:

理论基础

网卡上有IP和MAC地址,网卡一加电就会将自己公布出去,别的机器只能知道IP地址逻辑的会走ARP协议请求MAC地址。
Linux系统下 /proc 是虚拟目录,开机之后才会有的目录,里面放的内核及所有启动的进程,把里面的变量及参数抽象成文件,
修改文件的值相当于改了内核变量参数的值,目录中的文件的参数值一变,内核立即发生效果。
这些文件修改的时候不能用vi 命令去打开修改。因为会产生隐藏临时文件,只能echo 重定向去覆盖。

lo 回环接口,是内核上的虚拟网卡,虚拟网络接口,并非真实存在,并不真实地从外界接收和发送数据包,而是在系统内部接收和发送数据包,因此虚拟网络接口不需要驱动程序。lo回环地址

eth0 以太网接口,以太网接口与网卡对应,每个硬件网卡(一个MAC)对应一个以太网接口,其工作完全由网卡相应的驱动程序控制。
如果物理网卡只有一个,而却有eth1,eth2等,则可能存在无线网卡或多个虚拟网卡,虚拟网卡由系统创建或通过应用层程序创建,作用与物理网卡类似。

关闭arp解析,隐藏VIP方法

/proc/sys/net/ipv4/conf/eth0 目录下有arp_ignore & arp_announce 两个文件,默认设置都为0

  • arp_ingore: 定义接收到ARP请求时的响应级别
    0: 只要本地配置的有相应地址,就给予响应;
    1: 只有请求的目标(MAC)地址配置请求到达的接口上的时候,才给予响应;
  • arp_announce: 定义将自己地址向外通告时的通告级别
    0: 将本地任何地址的任何接口向外通告;
    1: 试图只向目标网络参与其网络匹配的地址;
    2: 仅向与本地接口上地址匹配的网络进行通知;

1)修改内核:

1
2
3
4
echo 1  >  /proc/sys/net/ipv4/conf/eth0/arp_ignore 
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

2)设置隐藏的vip:

1
ifconfig  lo:3  192.168.79.110  netmask 255.255.255.255

LVS服务配置

  • 安装lvs的管理工具ipvsadm
    1
    yum install ipvsadm -y

添加虚拟IP

添加虚拟IP规则,管理集群服务
ipvsadm -A -t 192.168.79.110:80 -s rr

-A:添加虚拟IP规则
-A -t|u|f service-address [-s scheduler]
-t: TCP协议的集群
-u: UDP协议的集群
service-address: IP:PORT
-f: FWM: 防火墙标记
service-address: Mark Number
修改:-E
删除:-D -t|u|f service-address
scheduler 调度方法,one of rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq, the default scheduler is wlc.

添加服务

在虚拟IP中添加服务规则,管理集群服务中的RS
ipvsadm -a -t 192.168.79.110:80 -r 192.168.79.102 -g -w 1
ipvsadm -a -t 192.168.79.110:80 -r 192.168.79.103 -g -w 1

-a: 添加服务规则
-t|u|f service-address -r server-address [-g|i|m] [-w weight]
-t|u|f service-address:事先定义好的某集群服务
-r server-address: 某RS的地址,在NAT模型中,可使用IP:PORT实现端口映射;
[-g|i|m]: LVS类型
-g: DR
-i: TUN
-m: NAT
[-w weight]: 定义服务器权重
修改:-e
删除:-d -t|u|f service-address -r server-address

查看

-L|l
-n: 数字格式显示主机地址和端口
–stats:统计数据
–rate: 速率
–timeout: 显示tcp、tcpfin和udp的会话超时时长
-:c 显示当前的ipvs连接状况
ipvsadm -lnc 偷窥负载记录

删除所有集群服务

-C:清空ipvs规则

保存规则

-S:保存规则
ipvsadm -S > /path/to/somefile

载入规则

-R 载入此前的规则:
ipvsadm -R < /path/form/somefile

调度方法:

rr: 轮询调度
wrr: 加权轮询调度
sh: 源地址散列调度U
lc: 最小连接调度
wlc: 加权最小连接调度 (默认)
sed: 最短期望延迟
nq: 最少队列调度
lblc: 基于本地的最少连接
dh: 目标地址散列调度
lblcr: 基于本地的带复制功能的最少连接