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缓存查看命令
1 | arp -n # 若无此命令,则需要安装 net-tools |
2.3 手动缓存其他设备的mac地址,只需手动在该设备上ping对应设备的IP地址
1 | [root@lb01 ~]# arp -n |
2.4 通过抓包查看缓存mac地址过程
1 | Vmware_86:09:1d Broadcast ARP 60 Who has 10.0.0.7? Tell 10.0.0.5 #Broadcast为广播 |
5问:谁有7的mac地址?
7回:我有,地址是…….
7问:谁有5的mac地址?
5回:我有,地址是……
说明:第一次讯问为广播,一旦有回应之后,则进行缓存,下次再讯问则不是广播,而是直接按照缓存去一对一连接。
2.5 删除arp 缓存命令
1 | # arp -d ip地址,例如: |
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地址。
- 特点:
- lvs与RE服务器可以不再同一局域网
- 用户访问端口和后端RS服务器响应的端口可以不一致
- nat模式流量出入都要经过lvs,效率、性能不高
4.3 dr模式
用户访问过程:
用户发出请求时携带源IP(CIP)、目标IP(VIP)到达复杂均衡服务器,lvs将用户数据包的目标IP的mac地址修改为RS服务器的mac地址(随机选择任一台RS服务器)发给RS服务器,RS服务器收到后校对mac地址时发现与自己mac地址一致,所以接受并解封装数据包,因为所有RS服务器的lo网卡已经绑定了VIP,所以拆数据包时发现目标IP与自己绑定的VIP一致,所以RS服务器将处理结果直接发给用户。
小知识:windows中删除arp缓存方法
1
2# 用管理员权限打开cmd
arp -d
为什么要做arp抑制
因为所有RS服务器的lo回环网卡都绑定了VIP,所以lvs服务器以及所有RS服务器都有了VIP,当用户查询具有VIP的服务器的mac地址时,如果不做抑制,则lvs服务器以及所有RS服务器都会同时响应用户的请求,这样就发生混乱导致用户不能正常访问,给所有RS服务器做arp抑制之后,用户请求时,RS服务器不会响应,仅lvs服务器响应,则用户可以正常访问。
特点
- lvs dr模式中,lvs只负责转发并修改用户请求的目标mac地址,称为dmact
- lvs dr模式中,后端RS服务器处理完的数据直接响应给用户
- lvs dr模式中,RS服务器也要有公网IP
- lvs dr模式中,支持更高的并发数,几万甚至几十万
- lvs dr模式中,lvs服务器和后端RS服务器必须在同一个局域网
- lvs dr模式中,用户请求过来的端口是不能修改的,所以后端RS服务器就要开启用户访问的端口
4.4 dr模式环境准备
4.4.1 配置web01、web02
1 | # web01要能够访问http://10.0.0.7/oldboy.html |
4.4.2 配置lb01、lb02
1 | # 关闭lb01、lb02的keeplived nginx负载均衡 |
4.4.3 配置RS服务器(web)
1 | # 所有RS服务器lo网卡绑定vip(永久) |
4.4.4 lvs规则的备份与恢复
1 | # 将ipvs规则打印到屏幕上 |
5. lvs与keepalived配合使用
1 | # 清除lb上手动添加的VIP,最简单的办法是重启网卡 |