1): 请求报文, 相应报文, 都需要经过我们分发器, 如果数据量大, 分发器将是我们的瓶颈
2): 只需要一个公网IP就可以完成集群的构建, 相对来说, 安全性还不错
3): VIP DIP RIP CIP 
4): director是一个单点的, 如果director挂了, 这个集群就完蛋了
5): ip_vs在低版本中, 是不具有健康状态监测, 在高版本中, 有非常弱的监测功能, 不适合生产使用
1.1 实例1: LVS NAT模式
实验前期准备:
1、准备3台主机
2、iptables -F , 清除规则
3、/etc/selinux/config,关SELinux
#getenforce
Disabled
1.2 真实环境中的拓扑图

1.3 集群各节点IP注解:
客户端计算机的IP(CIP):
可能是一个本地的、与VIP在同一网络的私有ip地址,或者是一个因特网上的公共ip地址。用作向集群发送请求的源ip地址
虚拟IP(VIP):
Director用于向客户端提供服务的ip地址
Director的IP(DIP):
在Director的VIP上接收访问集群服务的请求,这些请求通过DIP转发出去抵达各个集群节点
真实real server IP(RIP):
在LVS术语中,向外部世界提供服务的节点叫做真实服务器,因此在真实服务器上使用的ip地址叫做真实ip地址(RIP)。
精简版,实验拓扑图:

1.4 配置LVS:
k8s02配置成分发器:
1、打开路由转发功能
[root@k8s02 sysctl.d]# cat /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
让配置生效:
sysctl -p
2、配置网络环境:
添加一个网卡(需要两张网卡), 配置成以下网络环境:
ens37  192.168.20.129  模式:br0    模拟公网
ens33  192.168.10.132  模式:vmnet4    模拟内网
cd  /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens37
[root@k8s02 network-scripts]# cat ifcfg-ens37
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
DEFROUTE=yes
BOOTPROTO=static
IPADDR=192.168.20.129
NETMASK=255.255.255.0
GATEWAY=192.168.20.2
DNS1=192.168.1.1
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens37
DEVICE=ens37
ONBOOT=yes
systemctl restart network
Director分发器:需不需要开启80(服务的)端口  ?
1.5 安装: LVS管理工具: ipvsadmin
rpm -ivh ipvsadm-1.25-9.el6.x86_64.rpm
或:
yum install ipvsadm
1.6 使用ipvsadm命令设置规则:
ipvsadm -A -t 192.168.20.129:80 -s rr       rr代表轮循  
选项:
 -A 添加虚拟服务器
 -t 表示TCP的服务  VIP:PORT
 -s 指定调度算法  rr表示round-robin 轮循
ipvsadm -a -t 192.168.20.129:80 -r 192.168.10.133 -m
ipvsadm -a -t 192.168.20.129:80 -r 192.168.10.134 -m
选项:
 -a 表示添加real server的地址
 -r 指定real server的IP地址
 -m 表示masquerade 也就是NAT方式的LVS
1.7 查看
Ipvsadm命令,用于配置及查看内核IPVS表和算法的工具,类似于iptables
[root@k8s02 network-scripts]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.20.129:80 rr
  -> 192.168.10.133:80            Masq    1      0          0
  -> 192.168.10.134:80            Masq    1      0          0
1.8 保存配置或规则
[root@k8s02 ~]# ipvsadm --save >/etc/sysconfig/ipvsadm
[root@k8s02 ~]# cat !$
cat /etc/sysconfig/ipvsadm
-A -t k8s02:http -s rr
-a -t k8s02:http -r k8s03:http -m -w 1
-a -t k8s02:http -r k8s04:http -m -w 1
1.9 配置真实服务器
RealServer:在k8s03和k8s04上面配置:
准备:
1、配置IP:REAL SERVER自己的网络相关信息配置成如下:
k8s03: ens33:192.168.10.133  网关: 192.168.10.132
k8s04: ens33:192.168.10.134  网关: 192.168.10.132
##网关配置为k8s02的ip
cat /etc/sysconfig/network-scripts/ifcfg-ens33
GATEWAY=192.168.10.132
2、配置k8s03为realserver, 并启web服务
yum install -y httpd
systemctl restart httpd
echo "192.168.10.133" > /var/www/html/index.html    #(实验期间,各个服务器的页面不同)
3、配置k8s04为realserver, 并启web服务
yum install -y httpd
systemctl restart httpd
echo "192.168.10.134" > /var/www/html/index.html    #(实验期间,各个服务器的页面不同)
1.10 测试:
在k8s02上测试:
yum install -y elinks   
测试realserver :
[root@k8s02 ~]# elinks 192.168.10.133 --dump
   192.168.10.133
[root@k8s02 ~]# elinks 192.168.10.134 --dump
   192.168.10.134
1.11 测试VIP
[root@k8s02 network-scripts]# elinks 192.168.20.129 --dump
   192.168.10.134
[root@k8s02 network-scripts]# elinks 192.168.20.129 --dump
   192.168.10.133
1.12 扩展ipvsadm 更多参数说明
-L -n  ==>  查看规则,显示内核虚拟服务器表
 -L -n -c ==> 查看客户端连接分发器和real server 的情况
例1:
[root@k8s02 network-scripts]# ipvsadm -L -n -c
IPVS connection entries
pro expire state       source             virtual            destination
TCP 01:59  FIN_WAIT    192.168.20.1:51184 192.168.20.129:80  192.168.10.134:80
TCP 00:36  TIME_WAIT   192.168.20.1:51153 192.168.20.129:80  192.168.10.134:80
TCP 00:38  TIME_WAIT   192.168.20.1:51103 192.168.20.129:80  192.168.10.134:80
TCP 01:38  TIME_WAIT   192.168.20.1:51132 192.168.20.129:80  192.168.10.133:80
TCP 01:07  TIME_WAIT   192.168.20.1:51166 192.168.20.129:80  192.168.10.133:80
选项:
-L -n --stats  ==>  查看分发情况
-L -n --rate  ==> 查看速率
-Z --zero 虚拟服务表计数器清零(清空当前的连接数量等)
例2:
ipvsadm -Z
ipvsadm -L -n --stats
IP Virtual Server version 1.2.1 (size=4096)
选项:
-Z --clear 清空IPVS的数据、等信息
例3: 
ipvsadm -C
选项:
-C  清空所有规则
LVS的规则配置文件:/etc/sysconfig/ipvsadm
附录:ipvsadm命令选项解释:
-A --add-service    在内核的虚拟服务器表中添加一条新的虚拟服务器记录。也就是增加一台新的虚拟服务器。  
-E --edit-service      编辑内核虚拟服务器表中的一条虚拟服务器记录。  
-D --delete-service  删除内核虚拟服务器表中的一条虚拟服务器记录。  
-C --clear                 清除内核虚拟服务器表中的所有记录。  
-R --restore             恢复虚拟服务器规则  
-S --save                 保存虚拟服务器规则,输出为-R 选项可读的格式  
-a --add-server       在内核虚拟服务器表的一条记录里添加一条新的真实服务器记录。也就是在一个虚拟服务器中增加一台新的真实服务器  
-e --edit-server       编辑一条虚拟服务器记录中的某条真实服务器记录  
-d --delete-server    删除一条虚拟服务器记录中的某条真实服务器记录  
-L|-l --list                  显示内核虚拟服务器表  
-Z --zero                  虚拟服务表计数器清零(清空当前的连接数量等)  
--set tcp tcpfin udp  设置连接超时值  
--start-daemon        启动同步守护进程。他后面可以是master 或backup,用来说明LVS Router 是master 或是backup。在这个功能上也可以采用keepalived的VRRP 功能。  
--stop-daemon        停止同步守护进程  
-h --help                  显示帮助信息  
其他的选项:  
-t --tcp-service service-address        说明虚拟服务器提供的是tcp 的服务[vip:port] or [real-server-ip:port]  
-u --udp-service service-address      说明虚拟服务器提供的是udp 的服务[vip:port] or [real-server-ip:port]  
-f --fwmark-service fwmark               说明是经过iptables 标记过的服务类型。  
-s --scheduler scheduler                   使用的调度算法,有这样几个选项rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,默认的调度算法是: wlc.  
-p --persistent [timeout]                   持久稳固的服务。这个选项的意思是来自同一个客户的多次请求,将被同一台真实的服务器处理。timeout 的默认值为300 秒。  
-M --netmask                                    netmask persistent granularity mask  
-r --real-server server-address         真实的服务器[Real-Server:port]  
-g --gatewaying                                指定LVS 的工作模式为直接路由模式(也是LVS 默认的模式)  
-i --ipip                                              指定LVS 的工作模式为隧道模式  
-m --masquerading                           指定LVS 的工作模式为NAT 模式  
-w --weight weight                           真实服务器的权值  
--mcast-interface interface              指定组播的同步接口  
-c --connection                                  显示LVS 目前的连接 如:ipvsadm -L -c  
--timeout                                        显示tcp tcpfin udp 的timeout 值 如:ipvsadm -L --timeout  
--daemon                                          显示同步守护进程状态  
--stats                                              显示统计信息  
--rate                                                显示速率信息  
--sort                                                对虚拟服务器和真实服务器排序输出  
--numeric -n                                      输出IP 地址和端口的数字形式
超时时间用ipvsadm --set tcp tcpfin udp设置,比如
#ipvsadm --set 120 20 100
表示tcp空闲等待时间为120 秒
客户端关闭链接等待时间为20秒
udp空闲等待为100秒
