LVS工具ipvsadm
环境说明
四台机器:
Director负载均衡调度器,网卡(公网IP,实验用nat)eth0:192.168.134.140
Vip:etho:0:192.168.134.150
Real server1真实机器、真实服务器,网卡(公网IP,实验用nat)eth0:192.168.134.137
Real server2真实机器、真实服务器,网卡(公网IP,实验用nat)eth0:192.168.134.138
Client 客户端 网卡(公网IP,实验用nat)eth0:192.168.134.131-- 用来测试curl
1
Director负载均衡调度器安装yum install-y ipvsadm
两台真实服务器都安装yum install –y nginx
直接在Director调度器编写脚本
vim /usr/local/sbin/lvs_dr.sh
#! /bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
ipv=/sbin/ipvsadm - 做个变量
vip=192.168.134.150 --可以说是定义变量VIP为192.168.134.150
rs1=192.168.134.137 -- 定义Realserver1真实机器、真实服务器IP为192.168.134.137
rs2=192.168.134.138 -- 定义Realserver2真实机器、真实服务器IP为192.168.134.138
#ifconfig eth0:0 down -- 重启脚本时要先删除eth0:0,才能在添加vip
ifconfig eth0:0 $vip broadcast $vip netmask255.255.255.255 up - 添加一张网卡echo:0引用VIP这个变量,设置broadcast引用VIP这个变量设置子网掩码为255.255.255.255,
目的是为了让它能出网,而不能接收回来,这就是DR原理,直接通过服务器发给客户端,这
里主要是设置vip的
route add -host $vip dev eth0:0 添加网关
$ipv –C 把之前的规则清空掉
$ipv -A -t $vip:80 -s wrr --- -A 添加 –t 添加VIP –s添加算法,轮询算法,均摊分配
$ipv -a -t $vip:80 -r $rs1:80 -g -w 3 - –g 指DR模式 ,-w表示权重
$ipv -a -t $vip:80 -r $rs2:80 -g -w 1
两台Real server真实服务器上也要编写脚本
vim /usr/local/sbin/lvs_dr_rs.sh
#! /bin/bash
vip=192.168.134.150 #注意这个是VIP
ifconfig lo:0 $vip broadcast $vip netmask255.255.255.255 up
route add -host $vip lo:0
echo "1">/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2">/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2">/proc/sys/net/ipv4/conf/all/arp_announce
然后director上执行: bash /usr/local/sbin/lvs_dr.sh
ipvdadm –ln -- 查看集体的IP是谁
两台rs上执行: bash /usr/local/sbin/lvs_dr_rs.sh
最后就是测试了
在client 客户端测试
curl 192.168.134.150 -- 测试vip,测试多次。(测试成功)