【Web集群】LVS负载均衡集群-DR模式实战

架构图

 

构建代码

方式一:手工配置

一、Director-Server配置

      1、安装 ipvsadm包

[root@node3 ~]# yum install -y ipvsadm

     2、配置LVS虚拟IP(VIP)

#采用子接口配置
[root@node3 ~]# ifconfig ens33:100 192.168.74.100 netmask 255.255.255.0 up
#查看地址
[root@node3 ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.74.153  netmask 255.255.255.0  broadcast 192.168.74.255
        ether 00:0c:29:99:83:dd  txqueuelen 1000  (Ethernet)
        RX packets 1331  bytes 100169 (97.8 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 523  bytes 55138 (53.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens33:100: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.74.100  netmask 255.255.255.0  broadcast 192.168.74.255
        ether 00:0c:29:99:83:dd  txqueuelen 1000  (Ethernet)

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

     3、手工添加LVS服务并增加两台Real-Server

#删除之前配置
[root@node3 ~]# ipvsadm -C
#指定Director-Server
[root@node3 ~]# ipvsadm -A -t 192.168.74.100:80 -s rr
#指定Real-Server
[root@node3 ~]# ipvsadm -a -t 192.168.74.100:80 -r 192.168.74.155:80 -g
[root@node3 ~]# ipvsadm -a -t 192.168.74.100:80 -r 192.168.74.156:80 -g

     4、查看配置

[root@node3 ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.74.100:80 rr
  -> 192.168.74.155:80            Route   1      0          0         
  -> 192.168.74.156:80            Route   1      0          0    

    5、安装httpd包并启动服务

[root@node3 ~]# yum install -y httpd
[root@node3 ~]# systemctl start httpd

二、Web1配置

   1、安装httpd包并启动服务写入网页文件

[root@node4 ~]# yum install -y httpd
[root@node4 ~]# systemctl start httpd
[root@node4 ~]# echo "web1 test page" > /var/www/html/index.html

   2、绑定VIP并添加本机访问VIP的路由

[root@node4 ~]# ifconfig lo:100 192.168.74.100 netmask 255.255.255.255 up
[root@node4 ~]# route add -host 192.168.74.100 dev lo

   3、抑制ARP响应

[root@node4 ~]# echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore 
[root@node4 ~]# echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce 
[root@node4 ~]# echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore 
[root@node4 ~]# echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce

    4、查看IP

[root@node4 ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.74.155  netmask 255.255.255.0  broadcast 192.168.74.255
        ether 00:0c:29:47:69:57  txqueuelen 1000  (Ethernet)
        RX packets 38691  bytes 50796960 (48.4 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 8853  bytes 799350 (780.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo:100: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 192.168.74.100  netmask 255.255.255.255
        loop  txqueuelen 1000  (Local Loopback)

三、web2配置

   1、安装httpd包并启动服务写入网页文件

[root@node5 ~]# yum install -y httpd
[root@node5 ~]# systemctl start httpd
[root@node5 ~]# echo "web2 test page" > /var/www/html/index.html

    2、绑定VIP并添加本机访问VIP的路由

[root@node5 ~]#  ifconfig lo:100 192.168.74.100 netmask 255.255.255.255 up
[root@node5 ~]#  route add -host 192.168.74.100 dev lo

    3、抑制ARP响应

[root@node5 ~]# echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore 
[root@node5 ~]# echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce 
[root@node5 ~]# echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore 
[root@node5 ~]# echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce

    4、查看IP

[root@node5 ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.74.156  netmask 255.255.255.0  broadcast 192.168.74.255
        ether 00:0c:29:13:2a:fb  txqueuelen 1000  (Ethernet)
        RX packets 38058  bytes 50759244 (48.4 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 8299  bytes 767038 (749.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo:100: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 192.168.74.100  netmask 255.255.255.255
        loop  txqueuelen 1000  (Local Loopback)

四、测试

[root@node6 ~]# for ((i=1;i<=10;i++))
> do
> curl 192.168.74.100
> done
web1 test page
web2 test page
web1 test page
web2 test page
web1 test page
web2 test page
web1 test page
web2 test page
web1 test page
web2 test page
#查看LVS集群配置
[root@node3 ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.74.100:80 rr
  -> 192.168.74.155:80            Route   1      0          5         
  -> 192.168.74.156:80            Route   1      0          5         

方式二:脚本配置

 一、Director-Server配置

   1、配置DS脚本

[root@node3 ~]# vim /etc/init.d/lvs_dr
#!/bin/sh
# 
# Startup script handle the initialisation of LVS
# chkconfig: - 28 72
# description: Initialise the Linux Virtual Server for DR
# 
### BEGIN INIT INFO
# Provides: ipvsadm
# Required-Start: $local_fs $network $named
# Required-Stop: $local_fs $remote_fs $network
# Short-Description: Initialise the Linux Virtual Server
# Description: The Linux Virtual Server is a highly scalable and highly
#   available server built on a cluster of real servers, with the load
#   balancer running on Linux.
# description: start LVS of DR
LOCK=/var/lock/ipvsadm.lock
VIP=192.168.74.100
RIP1=192.168.74.155
RIP2=192.168.74.156
DipName=ens33

. /etc/rc.d/init.d/functions
start() {
		PID=`ipvsadm -Ln | grep ${VIP} | wc -l`
		if  [ $PID -gt 0 ];
		then
		    echo "The LVS-DR Server is already running !"
		else
            #Set the Virtual IP Address
            /sbin/ifconfig ${DipName}:100 $VIP broadcast $VIP netmask 255.255.255.255 up
            /sbin/route add -host $VIP dev ${DipName}:100
            #Clear IPVS Table
            /sbin/ipvsadm -C
            #Set Lvs
            /sbin/ipvsadm -At $VIP:80 -s rr
            /sbin/ipvsadm -at $VIP:80 -r $RIP1:80 -g
            /sbin/ipvsadm -at $VIP:80 -r $RIP2:80 -g
            /bin/touch $LOCK
            #Run Lvs
            echo "starting LVS-DR Server is ok !"
        fi
} 
stop()      {

            #clear Lvs and vip
            /sbin/ipvsadm -C
            /sbin/route del -host $VIP dev ${DipName}:100
            /sbin/ifconfig ${DipName}:100 down >/dev/null
            rm -rf $LOCK
            echo "stopping LVS-DR server is ok !"
} 
status() {
       if [ -e $LOCK ];
       then
            echo "The LVS-DR Server is already running !"
       else
            echo "The LVS-DR Server is not running !"
       fi
} 
case "$1" in
  start)
       start
       ;;
  stop)
       stop
       ;;
  restart)
       stop
       start
       ;;
  status)
       status
       ;;
*)
       echo "Usage: $1 {start|stop|restart|status}"
       exit 1
esac
exit 0

    2、添加脚本到系统服务

#给脚本一个执行权限
[root@node3 ~]# chmod +x /etc/init.d/lvs_dr 
#将脚本添加至系统服务
[root@node3 ~]# chkconfig --add lvs_dr
#并开机自启动服务
[root@node3 ~]# chkconfig lvs_dr on
#启动服务
[root@node3 ~]# systemctl start lvs_dr

     3、查看配置

[root@node3 ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.74.100:80 rr
  -> 192.168.74.155:80            Route   1      0          0         
  -> 192.168.74.156:80            Route   1      0          0   

二、web配置(web1与web2配置相同,此处以web1为例)

    1、配置RS脚本

[root@node4 ~]# vim /etc/init.d/lvs_rs
#!/bin/sh
# 
# Startup script handle the initialisation of LVS
# chkconfig: - 28 72
# description: Initialise the Linux Virtual Server for DR
# 
### BEGIN INIT INFO
# Provides: ipvsadm
# Required-Start: $local_fs $network $named
# Required-Stop: $local_fs $remote_fs $network
# Short-Description: Initialise the Linux Virtual Server
# Description: The Linux Virtual Server is a highly scalable and highly
#   available server built on a cluster of real servers, with the load
#   balancer running on Linux.
# description: start LVS of DR-RIP
LOCK=/var/lock/ipvsadm.lock
VIP=192.168.74.100
. /etc/rc.d/init.d/functions
start() {
	 PID=`ifconfig | grep lo:100 | wc -l`
	 if [ $PID -ne 0 ];
	 then
	     echo "The LVS-DR-RIP Server is already running !"
	 else
	    /sbin/ifconfig lo:100 $VIP netmask 255.255.255.255 broadcast $VIP up
	    /sbin/route add -host $VIP dev lo:100
	    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/ens33/arp_ignore
	    echo "2" >/proc/sys/net/ipv4/conf/ens33/arp_announce
	    echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
	    echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
	    /bin/touch $LOCK
	    echo "starting LVS-DR-RIP server is ok !"
	 fi
	 } 
	 
stop() {
       /sbin/route del -host $VIP dev lo:100
       /sbin/ifconfig lo:100 down >/dev/null
       echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
       echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
       echo "0" >/proc/sys/net/ipv4/conf/ens33/arp_ignore
       echo "0" >/proc/sys/net/ipv4/conf/ens33/arp_announce
       echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
       echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
       rm -rf $LOCK
       echo "stopping LVS-DR-RIP server is ok !"
}

status() {
     if [ -e $LOCK ];
     then
        echo "The LVS-DR-RIP Server is already running !"
     else
        echo "The LVS-DR-RIP Server is not running !"
     fi
} 

case "$1" in
   start)
        start
        ;;
   stop)
        stop
        ;;
   restart)
        stop
        start
        ;;
   status)
        status
        ;;
   *)
        echo "Usage: $1 {start|stop|restart|status}"
        exit 1
esac
exit 0

   2、添加脚本到系统服务

#给脚本添加执行权限
[root@node4 ~]# chmod +x /etc/init.d/lvs_rs 
#将脚本添加至系统服务
[root@node4 ~]# chkconfig --add lvs_rs
#设置开机自启动服务
[root@node4 ~]# chkconfig lvs_rs on
#启动服务
[root@node4 ~]# systemctl start lvs_rs

   3、查看IP

[root@node4 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet 192.168.74.100/32 scope global lo:100
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:47:69:57 brd ff:ff:ff:ff:ff:ff
    inet 192.168.74.155/24 brd 192.168.74.255 scope global dynamic ens33
       valid_lft 1374sec preferred_lft 1374sec

   4、查看路由

[root@node4 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.74.2    0.0.0.0         UG    0      0        0 ens33
192.168.74.0    0.0.0.0         255.255.255.0   U     0      0        0 ens33
192.168.74.100  0.0.0.0         255.255.255.255 UH    0      0        0 lo

 三、测试

[root@node6 ~]# for ((i=1;i<=10;i++))
> do
> curl 192.168.74.100
> done
web2 test page
web1 test page
web2 test page
web1 test page
web2 test page
web1 test page
web2 test page
web1 test page
web2 test page
web1 test page

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值