2013年8月23日星期五

我也来玩LVS之DR

当时自己整理写出来的,共享一下。
    神马都是浮云,LVS 架构看过N次了,就是没有时间折腾,今天抽空,从DR 模式开始整整了。
我的环境:VMware workstation + 3台 Ubuntu Server 10 版本的。以下相关IP 及主机名:

系统      主机名             IP                          内存           硬盘            安装服务             备注
ubuntu    web1          192.168.104.129     512MB     15GB         LAMP+OpenSSH    (网关设置为192.168.104.2)
ubuntu    web2          192.168.104.130     512MB     15GB         LAMP+OpenSSH    (网关设置为192.168.104.2)
ubuntu    dispatch      192.168.104.132     384MB    10GB         OpenSSH+lvsadm  (网关设置为192.168.104.2)

VIP   192.168.104.135


    ubuntu 服务器安装就不多说了,敲着回车键一路过,到最后选择软件包的时候注意下就行了
  (ipvsadm 需要等系统装好后再安装)

调度机器上的配置过程如下:

使用root 用户(其他用户用sudo方式安装iplvsadm)

root@dispatch:~# apt-get install ipvsadm
Reading package lists... Done
Building dependency tree      
Reading state information... Done
Suggested packages:
  heartbeat keepalived ldirectord
The following NEW packages will be installed:
  ipvsadm
0 upgraded, 1 newly installed, 0 to remove and 60 not upgraded.
Need to get 45.6 kB of archives.
After this operation, 197 kB of additional disk space will be used.
Get:1 http://us.archive.ubuntu.com/ubuntu/ natty/main ipvsadm i386 1:1.25.clean-1ubuntu1 [45.6 kB]
Fetched 45.6 kB in 2s (16.1 kB/s) 
Preconfiguring packages ...
Selecting previously deselected package ipvsadm.
(Reading database ... 48251 files and directories currently installed.)
Unpacking ipvsadm (from .../ipvsadm_1%3a1.25.clean-1ubuntu1_i386.deb) ...
Processing triggers for man-db ...
Processing triggers for ureadahead ...
ureadahead will be reprofiled on next reboot
Setting up ipvsadm (1:1.25.clean-1ubuntu1) ...
update-rc.d: warning: ipvsadm start runlevel arguments (2 3 4 5) do not match LSB Default-Start values (2 3 5)
* ipvsadm is not configured to run. Please run dpkg-reconfigure ipvsadm

打开内核IP转发功能
root@dispatch:~# echo "1" >/proc/sys/net/ipv4/ip_forward  (永久生效修改内核文件sysctl.conf)

编辑lvsdr 配置文件(安装时不会有的,手工创建):

root@dispatch:~# vim /etc/init.d/lvsdr

意思不多说,内容如下

#!/bin/bash

#description:start LVS of Directorserver DR

VIP=192.168.104.135

RIP1=192.168.104.129

RIP2=192.168.104.130

#./etc/rc.d/init.d/functions

case "$1" in

        start)

        echo "start LVS of DirectorServer DR"

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

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

        echo "1">/proc/sys/net/ipv4/ip_forward

        /sbin/ipvadm -C
        /sbin/ipvsadm -A -t $VIP:80 -s rr          
        /sbin/ipvsadm -a -t $VIP:80 -r $RIP1 -g    
        /sbin/ipvsadm -a -t $VIP:80 -r $RIP2 -g
        /sbin/ipvsadm
        ;;

        stop)

        echo "stop LVS of DirectorServer DR"

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

        /sbin/ipvsadm -C

        /sbin/ifconfig eth0:0 down

        ;;

        *)

        echo "Usage:$0{start|stop}"

        exit 1

esac


给个执行权限:

root@dispatch:~# chmod +x /etc/init.d/lvsdr


启动该服务:

root@dispatch:~# /etc/init.d/lvsdr start
start LVS of DirectorServer DR
/etc/init.d/lvsdr: line 25: /sbin/ipvadm: No such file or directory
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.104.135:www rr
  -> 192.168.104.129:www Route 1 0 0        
  -> 192.168.104.130:www Route 1 0 0        
root@dispatch:~#


真实服务器配置如下:


root@web1:~# vi /etc/init.d/lvsdr
#!/bin/bash

#descrpption :start realserver DR

VIP=192.168.104.135

#./etc/rc.d/init.d/functions

case "$1" in

        start)

        echo "start LVS of RealServer DR"

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

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

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

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

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

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

        ;;

        stop)

        /sbin/ifconfig lo:0 down

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

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

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

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

        ;;

        *)

        echo "Usage:$0 {start|stop}"

        exit 1

esac


给执行权限,启动服务
root@web1:~# chmod +x /etc/init.d/lvsdr
root@web1:~#/etc/init.d/lvsdr start
start LVS of RealServer DR

建立一个测试主页面,两个页面的内容可以不一样(便于看效果)
打开IE,浏览器,输入http://192.168.104.135 多刷新几次,(用 Ctrl + F5 吧)

root@dispatch:~# ipvsadm -lnc
IPVS connection entries
pro expire state source virtual destination
TCP 01:00 SYN_RECV 192.168.104.1:55950 192.168.104.135:80 192.168.1.129:80
TCP 01:00 SYN_RECV 192.168.104.1:55993 192.168.104.135:80 192.168.1.129:80
TCP 01:00 SYN_RECV 192.168.104.1:55970 192.168.104.135:80 192.168.1.130:80
TCP 01:00 SYN_RECV 192.168.104.1:55957 192.168.104.135:80 192.168.1.130:80
TCP 01:00 SYN_RECV 192.168.104.1:55969 192.168.104.135:80 192.168.1.129:80
TCP 01:00 SYN_RECV 192.168.104.1:55966 192.168.104.135:80 192.168.1.130:80
TCP 01:00 SYN_RECV 192.168.104.1:55965 192.168.104.135:80 192.168.1.129:80
TCP 01:00 SYN_RECV 192.168.104.1:55949 192.168.104.135:80 192.168.1.130:80

root@dispatch:~# ipvsadm --list
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.104.135:www rr
  -> 192.168.104.129:www Route 1 1 0        
  -> 192.168.104.130:www Route 1 0 0  

没有评论:

发表评论