LVS术语
- Director Server:调度服务器
将负载分发到Real Server的服务器 - Real Server:真实服务器
真正提供应用服务的服务器 - VIP:虚拟IP地址
公布给用户访问的虚拟IP地址 - RIP:真实IP地址
集群节点上使用的IP地址 - DIP:调度器连接节点服务器的IP地址
静态方法:仅根据算法本身进行调度 - RR:RoundRobin,轮巡;
- WRR:Weighted RR,加权轮巡;
- SH:Source Hashing,实现session sticky,源IP地址hash,将来自于同一个IP地址的请求始终发往第一次选中的RS主机,从而实现会话绑定。
- DH:Destination Hashing:目标地址哈希相同,将发往同一个目标地址的请求始终发往选中的RS主机,典型使用正向代理缓存场景中的负载均衡。
动态方法:根据RS主机负载均衡状态即使调整算法进行调度 - LC:Least Connections:RS进行比较最少连接的。
- WLC:Weighted LC 加权最少连接,最优算法;
- SED:Shortest Expection Delay 最短期望延迟
- NQ:Never Queue
- LBLC:Locality-based LC:动态的DH算法
- LBLCR:LBLC with Replocation,带复制功能的LBLC
LVS工作模式
-
VS/NAT
通过网络地址转换实现的虚拟服务器
大并发访问时,调度器的性能成为瓶颈 -
VS/DR
直接使用路由技术实现虚拟服务器
节点服务器需要配置VIP,注意MAC地址广播 -
VS/TUN
通过隧道方式实现虚拟服务器 -
VS/FULLNAT
修改请求报文的源和目标IP
LVS-DR配置
主机IP | 配置 |
---|---|
192.168.201.138 | DR |
192.168.201.139 | RS1 |
192.168.201.140 | RS2 |
director只需要一块网卡,vip配置在lo接口中即可,此处假设dip与rip在同一网段
//配置director的ip地址信息(dip,vip)
//首先安装软件包
[root@DR ~]# yum -y install ipvsadm
//配置dip(编辑物理网卡配置文件/etc/sysconfig/network-scripts/ifcfg-eth0)
由于实验环境已在同一网段,这里不做配置
//配置vip:
[root@DR ~]# ip addr add 192.168.201.250/32 dev lo
[root@DR ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet 192.168.201.250/32 scope global lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:e0:d9:2b brd ff:ff:ff:ff:ff:ff
inet 192.168.201.138/24 brd 192.168.201.255 scope global noprefixroute dynamic ens33
valid_lft 1167sec preferred_lft 1167sec
inet6 fe80::7602:9746:6ebb:4e3a/64 scope link noprefixroute
valid_lft forever preferred_lft forever
//配置rip(编辑物理网卡配置文件/etc/sysconfig/network-scripts/ifcfg-eth0)
由于实验环境已在同一网段,这里不做配置
//修改网卡内核参数:编辑/etc/sysctl.conf文件
[root@RS1 ~]# vim /etc/sysctl.conf
//添加如下内容
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
[root@RS1 ~]# sysctl -p //读取添加内容
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
[root@RS2 ~]# vim /etc/sysctl.conf
//添加如下内容
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
[root@RS2 ~]# sysctl -p //读取添加内容
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
注意:此处必须先修改网卡内核参数然后再配置vip,因为如果先配vip,vip配好后就会立马通告给别人,而修改内核参数就是为了不通告
//配置vip:
[root@RS1 ~]# ip addr add 192.168.201.250/32 dev lo
[root@RS1 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet 192.168.201.250/32 scope global lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:7f:9e:47 brd ff:ff:ff:ff:ff:ff
inet 192.168.201.139/24 brd 192.168.201.255 scope global noprefixroute dynamic ens33
valid_lft 1559sec preferred_lft 1559sec
inet6 fe80::9037:8c14:948d:b7a5/64 scope link noprefixroute
valid_lft forever preferred_lft forever
[root@