Lvs 学习与使用
· 阅读需 12 分钟
1. 核心内容
- 负载均衡 lvs 负责对数据进行转发
- 一次请求,一次响应
- 反向代理 nginx/haproxy 负责代替用户找数据,找到后再发送给用户
- 两次请求,两次响应
2. arp
- DNS 为域名解析,将域名解析为IP地址
- arp协议 为地址解析协议 将IP地址解析到mac地址
- ip地址为网络层,3层
- mac地址为2层
- arp协议属于3层协议,但工作在2层
2.1 arp解析过程
- 假如有A、B、C、D四台设备连接在同一个交换机上,A想连接B,A知道B的IP地址10.0.0.8,但 不知道B的mac地址,A将会发广播:Who has 10.0.0.8?Tell 10.0.0.7(谁知道10.0.0.8的mac地址?请告诉A10.0.0.7”),B、C、D设备都会接受到该广播,但C、D设备的IP地址 都不是10.0.0.8,则会丢弃该广播,B设备收到广播后知道A是要自己的mac地址,则B会悄悄(一对一)的将自己的mac地址发送给A,A收到B返回的信息后会缓存一份数据,用于下次连接B的时候用。
2.2 linux的arp缓存查看命令
arp -n # 若无此命令,则需要安装 net-tools
2.3 手动缓存其他设备的mac地址,只需手动在该设备上ping对应设备的IP地址
[root@lb01 ~]# arp -n
Address HWtype HWaddress Flags Mask Iface
10.0.0.1 ether 00:50:56:c0:00:08 C eth0
10.0.0.254 ether 00:50:56:f2:d4:34 C eth0
[root@lb01 ~]# ping 10.0.0.7
PING 10.0.0.7 (10.0.0.7) 56(84) bytes of data.
64 bytes from 10.0.0.7: icmp_seq=1 ttl=64 time=3.37 ms
64 bytes from 10.0.0.7: icmp_seq=2 ttl=64 time=1.27 ms
^C
--- 10.0.0.7 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 1.272/2.324/3.376/1.052 ms
[root@lb01 ~]# arp -n
Address HWtype HWaddress Flags Mask Iface
10.0.0.1 ether 00:50:56:c0:00:08 C eth0
10.0.0.7 ether 00:0c:29:8e:5d:df C eth0
10.0.0.254 ether 00:50:56:f2:d4:34 C eth0
[root@lb01 ~]#
2.4 通过抓包查看缓存mac地址过程
Vmware_86:09:1d Broadcast ARP 60 Who has 10.0.0.7? Tell 10.0.0.5 #Broadcast为广播
Vmware_8e:5d:df Vmware_86:09:1d ARP 60 10.0.0.7 is at 00:0c:29:8e:5d:df
Vmware_c0:00:08 Vmware_86:09:1d ARP 42 Who has 10.0.0.5? Tell 10.0.0.1
Vmware_86:09:1d Vmware_c0:00:08 ARP 60 10.0.0.5 is at 00:0c:29:86:09:1d
5问:谁有7的mac地址?
7回:我有,地址是.......
7问: 谁有5的mac地址?
5回:我有,地址是......
说明:第一次讯问为广播,一旦有回应之后,则进行缓存,下次再讯问则不是广播,而是直接按照缓存去一对一连接。
2.5 删除arp 缓存命令
# arp -d ip地址,例如:
arp -d 10.0.0.7
2.6 arp欺骗
- 描述:A和B都连接与同一个交换机,并都通过这个交换机上网,即A和B也都缓存着这个交换机的mac地址,突然有一天B大量的发出广播“交换机的mac地址是我B设备的mac地址”,慢慢的其他设备会逐渐替换并缓存B广播的这个假消息,导致其他设备误认为B设备为交换机,导致不能上网了。
3. lvs
- lvs专业名称为:linux virtual server 即linux虚拟服务器
- 因为lvs处理请求支持的并发特别高,以至于lvs模块嵌入到了linux内核中,即 ip_vs
- 管理 ip_vs 有两种方式:通过ipvsadm管理命令 和 keepalived(keepalived for lvs)
4. lvs的工作模式
- dr direct routing 直接路由模式(使用较多)
- nat (使用较多)
- tun 隧道模式(使用少)
- full nat(使用少)
4.1 预备知识
- 名词
- 用户
- 用的IP地址为:CIP
- 负载均衡
- 负载均衡利用高可用软件生成的的IP地址为:VIP
- 负载均衡设备本身的IP地址为:DIP
- 真实服务器(RS服务器)
- 真实服务器的IP地址为:RIP
- 用户
4.2 nat模式
- 用户访问过程:
- 用户发出请求时携带源IP(CIP)、目标IP(VIP)到达复杂均衡服务器,lvs执行DNAT,将用户数据包的目标IP地址修改为RIP(网络设备会保存修改记录用于相同访问使用)发给RS服务器,RS服务器收到并处理后将RIP设为源IP、CIP设为目标IP发送给lvs,lvs执行SNAT,将RS服务器发来的源IP由RIP修改为VIP,即此时的数据包源IP为VIP,目标IP为CIP,由负载均衡发给用户。
- 此过程只涉及IP地址,不涉及mac地址。