LVS-NAT集群:
client1 :客户端 IP :1.0.0.1
lvs集群:服务器 IP1:1.0.0.254 IP2:192.168.1.254
ser10/ser20:网页应用服务器 ser10IP:192.168.1.10 ser20IP:192.168.1.20
ser10 yum -y install httpd
service httpd start ;chkconfig httpd on
echo ser10 > /var/www/html/index.html
ser20 yum -y install httpd
service httpd start ;chkconfig httpd on
echo ser20 > /var/www/html/index.html
ser10 + ser20
[root@ser20 ~]# route add default gw 192.168.1.254 #给网页服务器配置路由网关
[root@ser20 ~]# route -n #查看路由信息
ser10 #四台电脑都能互相ping通
ping 192.168.1.254
ping 1.0.0.254
ping 1.0.0.1
vip 分发器 与公网通信的接口
dip 分发器 与内网通信的接口
rip 内网服务器的ip地址
cip 公网客户端地址
配置LVS服务(NAT模式)
rpm -q ipvsadm
rpm -ivh /mnt/Packages/ipvsadm-1.26-2.el6.x86_64.rpm
开启内核路由转发功能,使其能够收发不同网段的ip包
# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
:wq
[root@LVS 桌面]# sysctl -p #刷新路由转发功能
编写分发策略
ipvsadm -A -t 1.0.0.254:80 -s rr #创建LVS虚拟集群服务器
ipvsadm -a -t 1.0.0.254:80 -r 192.168.1.10 -m 为集群添加real server(指定IP)
ipvsadm -a -t 1.0.0.254:80 -r 192.168.1.20 -m 为集群添加real server(指定IP)
ipvsadm -Ln --stats #查看LVS状态
/etc/init.d/ipvsadm save #保存LVS左右规则
cat /etc/sysconfig/ipvsadm #查看规则文件
/etc/init.d/ipvsadm restart #重启LVS服务
ipvsadm -C #清空所有规则
-------------------------------------------------
LVS/DR模式 (分发器 和 realserver 都是公网ip地址)
lvs集群部署服务器 IP1:1.0.0.254
ser10/ser20:网页应用服务器 ser10IP:1.0.0.10 ser20IP:1.0.0.20
client1 :客户端 IP :1.0.0.1
1 让两个realserver 拥有VIP地址
ifconfig lo:1 1.0.0.253/32
2 让两个realserver 不应答访问分发器的请求
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
lvs的配置
ifconfig eth1:1 1.0.0.253/32
ipvsadm -A -t 1.0.0.253:80 -s rr
ipvsadm -a -t 1.0.0.253:80 -r 1.0.0.10 -g -w 1 #权重为1(轮流时访问一次)
ipvsadm -a -t 1.0.0.253:80 -r 1.0.0.20 -g -w 3 #权重为3 (轮流时连续访问三次)
service ipvsadm save
ipvsadm -Ln --stats
elinks --dump http://1.0.0.253 //交替出现 2 个 realserver 的 web 页面就 ok 了
LVS 没有对 realserver 做健康性检查的功能,要自己写检查脚本。
*当把某个 realserver 上的 web 服务停止后,分发器仍然会把客户端的请求分发给此 realserver,
并且也不会把其从策略中删除。
[root@localhost ~]# yum -y nmap 先安装检测软件
[root@localhost ~]# vim /root/check_lvs.sh
1 #!/bin/bash
2 RIP1=1.0.0.10
3 RIP2=1.0.0.20
4 VIP=1.0.0.253
5
6 while [ 1 ]
7 do
8 for IP in $RIP1 $RIP2
9 do
10 RSTAT=$(nmap -n -sT -p 80 $IP | grep open)
11 if [ -z "$RSTAT" ];then
12 RLVS=$(ipvsadm -Ln | grep $IP)
13 if [ -n "$RLVS" ];then
14 ipvsadm -d -t ${VIP}:80 -r $IP
15 fi
16 fi
17 done
18
19 for IP in $RIP1 $RIP2
20 do
21 RSTAT=$(nmap -n -sT -p 80 $IP | grep open)
22 if [ -n "$RSTAT" ];then
23 RLVS=$(ipvsadm -Ln | grep $IP)
24 if [ -z "$RLVS" ];then
25 if [ "$IP" = "$RIP1" ];then
26 ipvsadm -a -t ${VIP}:80 -r $IP -m
27 else
28 ipvsadm -a -t ${VIP}:80 -r $IP -m -w 2
29 fi
30 fi
31 fi
32 done
33 sleep 3
34 done
:wq