测试环境
- 一台调度机,两台真实机,使用ipvsadm+ldirectord搭建vs-tun的linux集群
- 3台服务器都安装centos5.4
- 调度机IP:eth0:192.168.1.210
- 调度机VIP:eth0:0:192.168.1.219
- 真实机1IP:eth0:192.168.1.223
- 真实机1VIP:tunl0:192.168.1.219
- 真实机2IP:eth0:192.168.1.224
- 真实机2VIP:tunl0:192.168.1.219
- ipvsadm与ldirectord都只需在调度机安装,真实机不用安装软件。
调度机操作
#安装ipvsadm
yum install ipvsadm
#安装heartbeat-ldirectord
yum install heartbeat-ldirectord
#配置VIP地址到eth0:0
ifconfig eth0:0 192.168.11.20 netmask 255.255.255.255 broadcast 192.168.11.20 up
#增加eth0:0路由
route add -host 192.168.11.20 dev eth0:0
#配置网络系统参数(eth0为绑定VIP的网卡设备)
echo "1" >/proc/sys/net/ipv4/ip_forward //DR模式需要开启转发
echo "1" >/proc/sys/net/ipv4/conf/all/send_redirects
echo "1" >/proc/sys/net/ipv4/conf/default/send_redirects
echo "1" >/proc/sys/net/ipv4/conf/eth0/send_redirects
#配置IPVS的服务类型、VIP地址以及对应的真实机信息
ipvsadm -C #清空规则
ipvsadm -A -t 192.168.1.219:8198 -s wlc
ipvsadm -a -t 192.168.1.219:8198 -r 192.168.1.223:8198 -g -w 1
ipvsadm -a -t 192.168.1.219:8198 -r 192.168.1.224:8198 -g -w 1
-A:为add-service的意思,此参数表示随后的设定将为群集新增一个网路服务
-t:表示此网络使用TCP通讯协议
192.168.11.20:80表示对外的VIP和端口
-s:设定此网路服务器将采用哪一种调度演算法进行负载均衡的调度,
wlc:为加权最少链接调度算法的所写
---------------------------
-a:为add-server的意思,表示随后将为群集添加一个真实服务器
-t:使用TCP
192.168.11.20:80表示对外的VIP和端口
-r:设定真实服务器IP
-m:设定网路服务采用的运作方式, -m:VS-NAT; -g:VS-DR; -i:VS-TUN
-w:权重
ipvsadm还有一个“--persistent”的参数,可以让真实服务器间保持固定连线,也就是虚拟服务器将某个使用者的第一次连线分配至真实服务器,未来同一个使用者的连线都会被分配到相同的真实服务器。
[root@lb1 ~]# ipvsadm //检查运行状况
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.1.219:8198 wlc
-> 192.168.1.223:8198 Route 1 0 0
-> 192.168.1.224:8198 Route 1 0 0
Route:lvs运作的方式
1:真实服务器的权重,越大权重越高,说明服务器性能越高
0:正在连线至该真实服务器的数目
0:已连线至该真实服务器的连线数目
[root@lb1 ~]# ipvsadm -lnc //检查连接情况
#复制ldirectord配置文件到/etc/ha.d/目录
cp /usr/share/doc/heartbeat-ldirectord-2.1.3/ldirectord.cf /etc/ha.d/
#默认启动不了ldirectord,需要修改/etc/rc.d/init.d/ldirectord
注释掉该行: . /etc/ha.d/shellfuncs
#修改/etc/ha.d/ldirectord.cf 配置文件:
# Global Directives
checktimeout=3 //检查超时
checkinterval=1 //检查间隔
autoreload=yes //是否自动重载
logfile="/var/log/ldirectord.log"
logfile="local0"
quiescent=yes //为yes时,设置真实机器权值为0即不可达,设置为no时,则删除不可达的真实机器
# Sample for an http virtual service
virtual=192.168.1.219:8198
real=192.168.1.223:8198 gate 1 // gate(VSDR)、masq(VSNAT)或ipip(VSTUN)指出要使用的转发方法 1表示权重
real=192.168.1.224:8198 gate 1
service=http
scheduler=wlc
#persistent=600
protocol=tcp
checktype=connect //检测端口是否可达
#checktype=negotiate
checkport=8198
#request="index.html" //checktype=negotiate时候检查的页面文件
#receive="Test Page" //返回的内容
#启动ldirectord
service ldirectord start
真实机操作(两台)
echo 1 > /proc/sys/net/ipv4/ip_forward
ifconfig lo:0 192.168.200.200 netmask 255.255.255.255 broadcast 192.168.200.200 up
route add -host 192.168.200.200 dev lo:0
如果使用tun模式配置的那2条会出现socket应用的负载均衡VIP访问不成功(比如:riak数据库socket模式),DR模式应该使用如下命令即可:
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X //这4条清除所有规则.
iptables -t nat -A PREROUTING -p tcp -d 192.168.1.219 --dport 8198(应用端口) -j REDIRECT
#关闭转发功能
echo "0" >/proc/sys/net/ipv4/ip_forward
#解决arp问题
echo 1 > /proc/sys/net/ipv4/conf/tunl0/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/tunl0/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
#解决源地址验证问题
echo 0 > /proc/sys/net/ipv4/conf/tunl0/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
#启动两台真实机的apache应用首页index.htm写入不同的内容,访问测试.
附:lvs.sh
#!/bin/sh
# VIP installation for LVS-DR
IPEND=25
VIP=10.100.63.$IPEND
NETWORK_INIT_SCRIPT="/etc/init.d/network"
service=LVS
case "$1" in
start)
echo -n "Starting $service: "
# Down the network
$NETWORK_INIT_SCRIPT stop
echo ""
# Alter ARP behaviour
echo "Modifying kernel ARP params..."
echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
# Bring the interface back up
# (doing it this way prevents ARP broadcasts you don't want)
$NETWORK_INIT_SCRIPT start
#install_realserver_vip
/sbin/ifconfig lo:$IPEND $VIP broadcast $VIP netmask 255.255.255.255 up
echo "Added VIP locally:"
/sbin/ifconfig lo:$IPEND
# installing route for VIP $VIP on device lo:$IPEND
/sbin/route add -host $VIP dev lo:$IPEND
echo "Modified routing table:"
/bin/netstat -rn
;;
stop)
echo -n "Stopping $service: "
/sbin/ifconfig lo$IPEND down
;;
esac
如果您喜欢本站,点击这儿可以捐赠本站
这些信息可能会帮助到你: 联系作者 | 报毒说明
修改版本软件,加群提示等均为修改者自留,非本站信息,注意鉴别
这些信息可能会帮助到你: 联系作者 | 报毒说明
修改版本软件,加群提示等均为修改者自留,非本站信息,注意鉴别
评论(0)