LVS
LVS
# LVS : Linux Virtual Server Linux虚拟服务器
当配置LVS的时候,不能直接配置内核中的ipvs, 而需要使用ipvs的管理工具ipvsadm进行管理,
之后我们通过keepalived软件进行管理lpvs,不在通过ipvsadm管理工具
即 keepalived和Ipvsadm 是同级别的
# 官网:http://www.linuxvirtualserver.org/zh/
LVS认知小结:
- 真正实现负载调度的工具是IPVS,工作在Linux内核层
- LVS自带的IPVS管理工具ipvsadm,工作在用户层
- keepalived实现管理IPVS及对负载均衡的高
- Red hat 工具Piranha WEB 管理实现跳读工具IIPVS
名称 | 缩写 | 说明 |
---|---|---|
虚拟IP地址(Virtual Ip Address) | VIP | VIP为Director 用于向客户端计算机提供服务的IP地址, 比如:www.123.com域名就要解析到VIP上提供服务 |
真实IP地址(Real Ip Address) | RIP | 集群下面节点使用的IP地址,物理地址 |
Director的IP地址 | DIP | Diretor用于连接内外网的IP地址,物理网卡上的IP地址, 是负载均衡器上的IP地址 |
客户端主机IP地址(Client Ip Address) | CIP | 客户端用户计算机请求集群服务器的IP地址 该地址用于发送给集群的请求的源IP地址 |
LVS的三种模式:
VS/NAT技术(Virtual Server via Network Adress Translation)
入站DNAT,出站SNAT, 入出站都需要经过LVS,可以修改端口,私有网络
VS/DR (Direcot Routing)****重点内容
修改数据包的目的MAC地址,入站经过LVS,出站不经过LVS,直接返回客户,不能改端口,LAN内使用
TUN (IP Tunneling)
不改变数据包内容,数据包外部封装一个IP头,入站经过LVS,出站不经过LVS,直接返回客户,不能改端口,LAN或者WAN内使用,LVS和节点之间通过隧道通信
FULLNAT
ARP协议
Address Resolution Protocol 地址解析协议
作用:实现通过IP 地址获取对应主机的物理地址MAC(48位)
ARP 协议要求通信的主机双方必须在同一物理网段,即局域网环境
ARP协议是三层协议,工作在2层
MAC (Medium Access Control 媒体访问控制,物理地址)
定义网络设备的位置,在OSI模型中,第三层网络层负责IP地址,第二层数据链路层负责MAC地址,每一台主机都有自己的MAC地址,而每一个网络位置又具有一个它专属的IP地址
IP地址解析为MAC地址
- 主机10.1.1.1想要与10.1.1.2通信,首先查看自己的缓存,没有的话下一步
- 主机10.1.1.1 发送ARP广播
- 所有的主机都接收到了10.1.1.1的ARP广播,但是只有10.1.1.2给它单播回复,并缓存10.1.1.1的MAC地址
- 主机10.1.1.1 将10.1.1.2的MAC地址保存到缓存中,发送数据
查看APR的命令:arp -a
APR缓存是把双刃剑,
案例:路由器不稳定,公司新增加了路由器,要求无缝切换,如何实现?
- 旧的配置导入到新的配置里
- linux服务器命令arping可以将arp表记录失效
LVS DR模式原理:
- 通过更改数据包的目标MAC地址实现数据包的转发的
- 所有节点和LVS要处于一个局域网
LVS 调度算法:
固定调度算法:rr wrr wlc dhs shs 轮训,权重轮训,加权最小连接调度,目的哈希,源哈希
安装lvs
yum install -y ipvsadm
[root@mix nginx]# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
[root@mix nginx]# lsmod | grep ip_vs
ip_vs 145497 0
nf_conntrack 139264 7 ip_vs,nf_nat,nf_nat_ipv4,nf_nat_ipv6,xt_conntrack,nf_conntrack_ipv4,nf_conntrack_ipv6
libcrc32c 12644 4 xfs,ip_vs,nf_nat,nf_conntrack
[root@mix nginx]# rpm -qc ipvsadm
/etc/sysconfig/ipvsadm-config
[root@mix nginx]# rpm -qa ipvsadm
ipvsadm-1.27-8.el7.x86_64
[root@mix nginx]# rpm -ql ipvsadm
/etc/sysconfig/ipvsadm-config
/usr/lib/systemd/system/ipvsadm.service
/usr/sbin/ipvsadm
/usr/sbin/ipvsadm-restore
/usr/sbin/ipvsadm-save
/usr/share/doc/ipvsadm-1.27
/usr/share/doc/ipvsadm-1.27/README
/usr/share/man/man8/ipvsadm-restore.8.gz
/usr/share/man/man8/ipvsadm-save.8.gz
/usr/share/man/man8/ipvsadm.8.gz
# 命令的使用
ipvsadm -C # 清空全部表
ipvsadm -a # 虚拟服务器 -t服务地址:端口 -s rr 算法 -a 添加 -d 删除 -s 调度算法
ipvsadm -L -n # 查看信息