LVS模式-DR工作原理:
client向目标vip发出请求,Director接收;
VS根据负载均衡算法选择一台active的realserver,将此RIP所在网卡的mac地址作为目标mac地址,发送到局域网里;
realserver在局域网中收到这个帧,拆开后发现目标IP(VIP)与本地匹配,于是处理这个报文。随后重新封装报文,发送到局域网;
如果client与VS同一网段,那么client将收到这个回复报文。如果跨了网段,那么报文通过gateway/路由器经由Internet返回给用户。
ipvsadm参数 -A 增加一台新的虚拟服务器 -E 编辑内核虚拟服务器表中的一条虚拟服务器记录 -D 删除内核虚拟服务器表中的一条虚拟服务器记录 -C 清除内核虚拟服务器表中的所有记录 -R 恢复虚拟服务器规则 -S 保存虚拟服务器规则,输出为-R 选项可读的格式 -a 在一个虚拟服务器中增加一台新的真实服务器 -e 编辑一条虚拟服务器记录中的某条真实服务器记录 -d 删除一条虚拟服务器记录中的某条真实服务器记录 -L或-l 显示内核虚拟服务器表 -Z 虚拟服务表计数器清零 -c 显示LVS 目前的连接 -n 输出IP 地址和端口的数字形式 -t 说明虚拟服务器提供的是tcp 的服务 -u 说明虚拟服务器提供的是udp 的服务 -f 说明是经过iptables 标记过的服务类型 -s 使用的调度算法
rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq
默认的调度算法是:wlc-p 同一个客户的多次请求,被同一台RS处理
timeout 的默认值为300 秒-r 真实的服务器 -g 指定LVS 的工作模式为直接路由模式(也是LVS 默认的模式) -i 指定LVS 的工作模式为隧道模式 -m 指定LVS 的工作模式为NAT 模式 -w 真实服务器的权值 -h 显示帮助
DR模式的部署:
虚拟机1:--->负载均衡器
yum install -y ipvsadm #安装 ipvsadm
ipvsadm -L #显示内核中的虚拟服务规则
ipvsadm -Ln #显示内核中的虚拟服务规则,以数字形式显示ip端口
配置负载均衡器: ipvsadm -A -t 172.25.11.100:80 -s rr #添加集群
ipvsadm -a -t 172.25.11.100:80 -r 172.25.11.2:80 -g #添加rs到集群
ipvsadm -a -t 172.25.11.100:80 -r 172.25.11.3:80 -g
ipvsadm -Ln
ip addr add 172.25.11.100/24 dev eth0 #添加ip地址
配置真实服务器:
虚拟机2:----->服务器1
yum install -y httpd #下载httpd
systemctl start httpd #开启httpd服务
echo server2 > /var/www/html/index.html 给默认发布目录导入信息
curl localhost #curl本机
ip addr add 172.25.11.100/32 dev eth0 #添加ip地址
ip addr
虚拟机3:----->服务器2
yum install -y httpd
systemctl start httpd
echo server3 > /var/www/html/index.html
curl localhost
ip addr add 172.25.11.100/32 dev eth0
ip addr
测试:
curl 172.25.11.100
#在真机中反复执行此命令可以发现:虚拟机2和3两者curl是交换的,两者出现次数是均衡的。
arp -an | grep 100
一下是真实服务器屏蔽客户端:即客户端访问不到server2和3 ,只能访问到调度器
真实服务器server2中:
yum install -y arptables
arptables -L
arptables -A INPUT -d 172.25.11.100 -j DROP
arptables -A OUTPUT -s 172.25.11.100 -j mangle --mangle-ip-s 172.25.11.2
删除之前实验绑定的MAC地址
真实服务器server3中:
yum install -y arptables
arptables -L
arptables -A INPUT -d 172.25.11.100 -j DROP
arptables -A OUTPUT -s 172.25.11.100 -j mangle --mangle-ip-s 172.25.11.3
测试: