linux DR模式,linux集群之DR模型的配置

LVS集群的介绍

lvs工作在TCP/IP的第四层,可以实现根据用户请求的IP或端口的不同由Director_Server分发给不同的后端RS_Server;因为工作在第四层,所以最多只解析到4层协议,而对更高层的应用层是什么内容不做任何处理,所以相对于工作在第七层的Nginx/Haproxy其负载均衡效果更好;但也因为对高层协议不解析其支持的高级性能很少,如不能根据用户请求的Web资源(URL/URI)来做负载均衡

LVS有三种工作模式:

(1)NAT 类似Iptables的DNAT

特点集群的所有节点必须在同一个网段

Rip一般为私有IP仅用于各节点通信

报文的出入栈都要经过Director-Server,所以其压力很大。容易成为集群瓶颈

支持端口映射.client请求80端口,可以转发到后端Rs的8080等端口

RS上的RIP其网关为DIP

(2)DR client请求Director的VIP后,报文经由Director转发到后端Server时,其源于目标地址不变,依然为CIP与VIP,而只改变报文的二层MAC地址为director指定分发的RS的MAC地址,报文返回时其源与目标地址为VIP,CIP

特点

集群的所有节点必须位于同一个物理网络中(因为Director要靠MAC地址将报文转发RS)最多只能隔个交换机

RIP可以为公有地址

只有报文的入栈才经过Director,而相对出栈报文,入栈报文要轻量级的多,所以Director压力相比NAT模式大大降低,所以DR模式支持的集群节点数量也比NAT要多得多

RS的网关不是DIP,而是指向前段的路由器

不支持端口映射(因为出栈不仅过Director)

(3)TUN 隧道

其特点是报文入栈时源和目标地址分别为CIP,VIP,进过Director后会在加一个IP报头:源IP为     DIP,目标IP为选定的RS的RIP;报文到达RS 后会将新加的IP报头去掉,报文返回时源IP为VIP,     目标IP为CIP

支持跨区域,如不同的节点甚至可以位于不同的城市

RIP必须为公有IP,因为要通过互联网传输报文

Director之处理入栈报文

不支持端口映射

其中DR模式为最常用的一种,下面将进行DR模式的配置演示:

Director_Server: eth0 192.168.139.3  Dip

eth0:1 192.168.139.6 Vip

Rs1_Server:    eth0 192.168.139.2  Rip1

lo:0 192.168.139.6  Vip

Rs2_Server:    eth0 192.168.139.4  Rip2

lo:0 192.168.139.6  Vip

配置好RS1和RS2上的VIP,因为报文返回时其源IP必须为VIP,所以每个节点都要有VIP地址

但RS上的VIP也仅仅用来作为响应报文的源IP。

因为每个节点都有VIP,但进行ARP响应时必须只能有Director上的VIP响应(要是VIP所在网卡都响应ARP广播就乱了,因为每个节点都有VIP),所以RS上的VIP必须隐藏起来让其不进行ARP响应。为了让RS上的VIP隐藏起来,必须对RS进行如下设置

echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

linux有个特点,报文从哪个接口出去其报文的源IP就会改成这个接口上的IP,所以报文返回时如果经RIP所处网卡出去,会将响应报文的源IP改为RIP(因为client请求的是VIP),所一必须加一条路由信息:

route add -host VIP dev lo:0 (让出栈报文进过VIP所处的接口返回,这样就可以将返回报文                          源IP改为VIP,与请求报文的目标IP一致)

(1)首先在RS1上配置

RS1#ifconfig eth0 192.168.139.2 netmask 255.25.255.0 up //设置RIP1

(2)#bash rs.sh start  //运行这个脚本配置VIP,及设置路由和参数

脚本内容如下(可以设置VIP,停止VIP。及查看状态)

#!/bin/bash

#

VIP=192.168.139.6

STATUS() {

if [ -e /var/lock/subsys/ipvs_lock ] ;then

echo -e "\033[40;31m initial OK \033[0m "

else

echo -e "\033[40;31m initial not ok \033[0m "

fi

}

case $1 in

start)

/sbin/ifconfig lo down

/sbin/ifconfig lo up

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

/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up

/sbin/route add -host $VIP dev lo:0

/bin/touch /var/lock/subsys/ipvs_lock

;;

stop)

/sbin/ifconfig lo:0 down

/sbin/route del $VIP &> /dev/null

echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore

echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore

echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce

echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce

/bin/rm -f /var/lock/subsys/ipvs_lock

;;

status)

STATUS;;

*)

echo "Usage: `basename $0` START|STOP"

exit 7

esac

(3)

[root@www sh]# ./rs.sh status //查看脚本是不是运行了

initial OK

~                                                                                                                         (4)

[root@www sh]# ifconfig  //查看RIP1与VIP的设置

eth0      Link encap:Ethernet  HWaddr 00:0C:29:1C:13:12

inet addr:192.168.139.2  Bcast:192.168.139.255  Mask:255.255.255.0

inet6 addr: fe80::20c:29ff:fe1c:1312/64 Scope:Link

UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

RX packets:3700 errors:0 dropped:0 overruns:0 frame:0

TX packets:1752 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:393174 (383.9 KiB)  TX bytes:236163 (230.6 KiB)

lo        Link encap:Local Loopback

inet addr:127.0.0.1  Mask:255.0.0.0

inet6 addr: ::1/128 Scope:Host

UP LOOPBACK RUNNING  MTU:65536  Metric:1

RX packets:105215 errors:0 dropped:0 overruns:0 frame:0

TX packets:105215 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:9448156 (9.0 MiB)  TX bytes:9448156 (9.0 MiB)

lo:0      Link encap:Local Loopback

inet addr:192.168.139.6  Mask:255.255.255.255

UP LOOPBACK RUNNING  MTU:65536  Metric:1

(5)

[root@www sh]# vim /usr/local/apache24/htdocs/index.html //在Apache的主页面加入www.RS1.com

www.RS1.com

~

如果Apache不是编译安装,而是通过#yum install httpd

则# vim /var/www/html/index/html

www.RS1.com

(6)

[root@www sh]# apachectl  start //启动Apache

yum或RPM包装的Apache用

#service httpd start

(7)

[root@www sh]# netstat -tnlp //查看80端口是否打开

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name

tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1411/sshd

tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1490/master

tcp        0      0 :::80                       :::*                        LISTEN      1794/httpd

tcp        0      0 :::22                       :::*                        LISTEN      1411/sshd

tcp        0      0 ::1:25                      :::*                        LISTEN      1490/master

二                                                            在RS2上进行同样操作但eth0的IP 为192.168.139.4

Director进行配置

#ifconfig eth0 192.168.139.2 netmask 255.25.255.0 up //设置DIP

[root@www sh]# vim lvs.sh //配置脚本,可以启动,关闭并且查看Ipvsadm及设置VIP

#!/bin/bash

#

VIP=192.168.139.6

RIP1=192.168.139.2

RIP2=192.168.139.4

STATUS() {

if [ -e /var/lock/subsys/ipvsadm.lock ];then

echo "ipvs is running..."

/sbin/ipvsadm -L -n --stats

else

echo "ipvs is stop..."

fi

}

case $1 in

start)

/sbin/ifconfig eth0:1 $VIP  netmask 255.255.255.0 up

/sbin/route add -host $VIP dev eth0:1

echo 1  > /proc/sys/net/ipv4/ip_forward #打开路由转发功能,让Director可以向后端RS转                                #发请求报文

/sbin/iptables -F                 #清空iptables规则,iptables不能与lvs一起使用

/sbin/iptables -Z

/sbin/ipvsdam -C                 #清空之前的ipvsadm规则

/sbin/ipvsadm -A -t $VIP:80 -s wlc

/sbin/ipvsadm -a -t $VIP:80  -r $RIP1 -m -w 1

/sbin/ipvsadm -a -t $VIP:80  -r $RIP2 -m -w 2

/bin/touch /var/lock/subsys/ipvsadm.lock;;

stop)

/sbin/ipvsadm -C

/sbin/ifconfig eth0:1 down

echo  0 > /proc/sys/net/ipv4/ip_forward

/bin/rm -f /var/lock/subsys/ipvsadm.lock

;;

status)

STATUS;;

*)

echo "Usage: `basement $0` start|stop|status "

[root@www sh]# ./lvs.sh start    //启动脚本

[root@www sh]# ./lvs.sh status   //启动完成查看

ipvs is running...

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes

-> RemoteAddress:Port

TCP  192.168.139.6:80                    3        6        0      312        0

-> 192.168.139.2:80                    1        2        0      104        0

-> 192.168.139.4:80                    2        4        0      208         0

[root@www sh]# ifconfig  //启动DR集群后的IP配置

eth0      Link encap:Ethernet  HWaddr 00:0C:29:6F:EB:02

inet addr:192.168.139.3  Bcast:192.168.139.255  Mask:255.255.255.0

inet6 addr: fe80::20c:29ff:fe6f:eb02/64 Scope:Link

UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

RX packets:14654 errors:0 dropped:0 overruns:0 frame:0

TX packets:9495 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:2335616 (2.2 MiB)  TX bytes:1422724 (1.3 MiB)

eth0:1    Link encap:Ethernet  HWaddr 00:0C:29:6F:EB:02

inet addr:192.168.139.6  Bcast:192.168.139.255  Mask:255.255.255.0

UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

lo        Link encap:Local Loopback

inet addr:127.0.0.1  Mask:255.0.0.0

inet6 addr: ::1/128 Scope:Host

UP LOOPBACK RUNNING  MTU:65536  Metric:1

RX packets:121 errors:0 dropped:0 overruns:0 frame:0

TX packets:121 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:12859 (12.5 KiB)  TX bytes:12859 (12.5 KiB)

浏览器测试

10b3b8d6c176023991f315b9f6fade04.png

Ctrl+F5强制刷新~                                                                                                               30864a6967c8107880d029d3fd62231a.png

~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值