LVS 搭建实操
前提准备
准备 VMware,并安装三个 centos 系统。取名 master、node1、node2。
实操
- 在 master 中配一个网卡及地址
192.168.16.100
作为 VIP (虚拟IP)。
- 在 master 中配一个网卡及地址
ifconfig <网卡name>:N 192.168.16.100/24 # 配置一个虚拟网卡并分配地址。N 随意取一个数字就好
- 在配 node1 和 node2 之前需要先配置内核,不然一配置就会被通告出去,造成失败。在 node1、node2 上:
cd /proc/sys/net/ipv4/conf/<网卡name> # (我的是 ens33)
echo 1 > arp_ignore
echo 2 > arp_announce
# 现在只改了一个接口,为保证以后也生效,改一下 all 接口的配置
cd ../all
echo 1 > arp_ignore
echo 2 > arp_announce
- 配置 node 机器上的隐藏的 VIP
ifconfig lo:2 192.168.16.100 netmask 255.255.255.255 # 这里掩码位数不同,不能写 /24 了
- 搭起一个 Real Service,装 httpd 并使生效
yum install httpd -y
service httpd start
- 在 node 上创建一个 http 服务,并能使浏览器访问到此页面。
vi /var/www/html/index.html # 写入一些数据
- 在 master 上安装
ipvsadm
工具
- 在 master 上安装
yum install -y ipvsadm
- 在 master 上添加进包出包规则
ipvsadm -A -t 192.168.16.100:80 -s rr # 进包规则(-A),tcp协议(-t),schedule规则(-s),rr 表示轮询
ipvsadm -ln # 查看 入口规则
ipvsadm -a -t 192.168.16.100:80 -r 192.168.16.107 -g -w 1 # 出包规则(-a),Real Server(-r),轮询(-g),权重(-w)
image.png
- 测试,在浏览器中访问
192.168.16.100
,失败
- 测试,在浏览器中访问
现象: 能 ping 通
xxx.100
,但 curl 连接时报 80 商品拒绝访问。
解释:
- ARP 是做 IP 到 MAC 地址映射的,所以当数据包到达 LVS 的时候,LVS (ipvsadm)将 RS(Real Server)的 MAC 地址拼到数据包上,广播出去。
- 同一网络内的 RS 发现数据包是自己的网卡信息,接收到这个数据包,看到里面的 IP 和端口,和 80 端口建立连接。
附:
ipvsadm 添加集群服务 ipvsadm 管理集群服务 image.png
网友评论