centos6.4 下lvs負載均衡


linux virtual server(LVS) ------章文嵩開發
MFS---分佈式文件系統

負載均衡方式:


1.NAT

2.TUN

3.DR


負載調度算法:

1.RR(round-robin scheduling) ---輪叫調度
平均對待每一臺real server,而無論服務器上的實際負載均衡情況和鏈接狀態。

2.WRR(Weighted Round-Robin Scheduling) ---加權輪叫調度
根據real server的不一樣處理能力來調度請求,能夠對每臺real server設置不一樣的調度權值

3.LC(Least-Connection Scheduling)---最小鏈接調度
動態地將網絡請求調度到已創建的鏈接數最少的服務器上。若是集羣系統的real server具備相近的性能,能夠較好的均衡負載。

4.WLC(Weighted Least-Connection Scheduling)---加權最小鏈接調度
每一個服務器節點的能夠用相應的權值來表示其處理能力,而系統管理源能夠動態的設置相應的權值,默認值爲1.加權最小鏈接調度在分配新鏈接請求時儘量使服務節點的已創建鏈接數和其權值成正比。


5.基於局部性的最少連接(Locality-Based Least Connections Scheduling)
6.帶複製的基於局部性最少連接(Locality-Based Least Connections with Replication Scheduling)
7.目標地址散列調度(Destination Hashing Scheduling)
8.源地址散列調度(Source Hashing Scheduling)


1.下載軟件
wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz
  wget http://www.keepalived.org/software/keepalived-1.2.9.tar.gz



2.編譯ipvsadm

//安裝依賴包
yum -y install wget libnl* popt* gcc.x86_64 gcc-c++.x86_64 gcc-objc++.x86_64 kernel-devel.x86_64 make popt-static.x86_64

//編譯ipvsadm
[root@Cent64 softs]# tar xvf ipvsadm-1.26.tar.gz
[root@tech2 lvs]# cd ipvsadm-1.26
[root@tech2 ipvsadm-1.26]# make && make install

//確認lvs模塊
[root@tech2 ipvsadm-1.26]# modprobe -l|grep ipvs
kernel/net/netfilter/ipvs/ip_vs.ko
kernel/net/netfilter/ipvs/ip_vs_rr.ko
kernel/net/netfilter/ipvs/ip_vs_wrr.ko
kernel/net/netfilter/ipvs/ip_vs_lc.ko
kernel/net/netfilter/ipvs/ip_vs_wlc.ko
kernel/net/netfilter/ipvs/ip_vs_lblc.ko
kernel/net/netfilter/ipvs/ip_vs_lblcr.ko
kernel/net/netfilter/ipvs/ip_vs_dh.ko
kernel/net/netfilter/ipvs/ip_vs_sh.ko
kernel/net/netfilter/ipvs/ip_vs_sed.ko
kernel/net/netfilter/ipvs/ip_vs_nq.ko
kernel/net/netfilter/ipvs/ip_vs_ftp.ko

3.編譯keepalived
[root@tech2 lvs]# tar xvf keepalived-1.2.9.tar.gz
[root@tech2 keepalived-1.2.9]# ls

//基礎軟件包
  In order to compile Keepalived needs the following libraries :

  * OpenSSL, <www.openssl.org>
  * popt

[root@tech2 keepalived-1.2.9]# yum install -y net-snmp.x86_64 net-snmp-devel.x86_64

[root@tech2 keepalived-1.2.9]# ./configure --prefix=/usr/local/keepalived --enable-snmp --sysconfdir=/etc

Keepalived configuration
------------------------
Keepalived version       : 1.2.9
Compiler                 : gcc
Compiler flags           : -g -O2
Extra Lib                : -Wl,-z,relro -Wl,-z,now -L/usr/lib64 -lnetsnmpagent -lnetsnmphelpers -lnetsnmpmibs -lnetsnmp -Wl,-E -Wl,-rpath,/usr/lib64/perl5/CORE -lssl -lcrypto -lcrypt  -lnl
Use IPVS Framework       : Yes
IPVS sync daemon support : Yes
IPVS use libnl           : Yes
Use VRRP Framework       : Yes
Use VRRP VMAC            : Yes
SNMP support             : Yes
SHA1 support             : No
Use Debug flags          : No

[root@tech2 keepalived-1.2.9]# make && make install

[root@tech2 sbin]# cp /usr/local/keepalived/sbin/keepalived  /sbin/
[root@tech2 bin]# cp /usr/local/keepalived/bin/genhash /bin/
//配值文件目錄
[root@tech2 keepalived]# ls ---keepalived軟件不對keepalived語法進行檢查,在編輯前須要先備份
keepalived.conf  samples


有三部分組成:/etc/keepalived/keepalived.conf
global_defs
vrrp_instance
virtual_server


案例1:LVS的DR模式

1.網絡架構

hostname:centos61
DIRECT SERVER:10.10.54.61   
vip:10.10.54.69
mysqlmaster:10.10.54.64
slave(real server):10.10.54.67(80 3306) vip:10.10.54.69
slave(real server):10.10.54.63(80 3306) vip:10.10.54.69

2.調度器(Director)配置


//在real server(10.10.54.67/63)上啓動
[root@tech03 ~]# cat /etc/init.d/realserver
#!/bin/bash
#chkconfig: - 80 90
#description:start realserver
#script_name:realserver_config
#####################虛擬ip
VIP=10.10.54.63/67
source /etc/init.d/functions
case "$1" in
start)
echo "start LVS of realserver."
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
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/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/lo/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@CentOS63 ~]# chmod +x /etc/init.d/realserver
[root@CentOS63 ~]# chkconfig --add realserver
[root@Cent67 ~]# /etc/init.d/realserver start
###自動創建虛擬ip接口
[root@CentOS63 html]# ifconfig
lo:0      Link encap:Local Loopback  
          inet addr:10.10.54.69  Mask:255.255.255.255
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
[root@Cent67 ~]# ifconfig
lo:0      Link encap:Local Loopback  
          inet addr:10.10.54.69  Mask:255.255.255.255
          UP LOOPBACK RUNNING  MTU:16436  Metric:1

########arp抑制
arp_ignore:
0---爲默認值,迴應任何網絡接口上對任何本地IP地址的ARP查詢請求
1---只回答目標IP地址是來訪問網路接口本地地址的ARP查詢請求


arp_announce:對網路接口上,本地IP地址發出的ARP請求,做出相應級別的限制:肯定不一樣程度的限制,宣佈對來自本地源IP地址發出ARP請求的接口。
0---爲默認值,在任意網絡接口上的任何本地地址。
2---對查詢目標使用最適當的本地地址。




3.配置direct server(10.10.54.61)
在direct server上編譯ipvsadm,keepalived軟件包

//配置文件
[root@centos61 ~]# vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
   notification_email {
     yangry@shiwei.com
   }
   notification_email_from yangry@shiwei.com
   smtp_server mail.shiwei.com
   smtp_connect_timeout 30
   router_id LVS_MASTER1  #表示運行keepalived服務器的一個標識,發郵件時顯示在郵件主題中的信息
}

vrrp_instance VI_2 {   #vrrp實例
    state MASTER     #MASTER/BACKUP
    interface eth0
    virtual_router_id 51  #虛擬路由標識,是一個數字,同一個VRRP實例使用惟一的標識,master和backup要同樣
    priority 100          #用於主從模式,優先級主高於100,從低於100
    advert_int 1           #msater和backup檢查的時間間隔
    authentication {        #認證用於主從模式,mater和backup配置同樣
        auth_type PASS          #PASS和AH
        auth_pass 1111
    }
    virtual_ipaddress {
###########虛擬ip       
 10.10.54.69/24 dev eth0 label eth0:1
    }
}

######real serve配置
virtual_server 10.10.54.69 80 {
    delay_loop 6          #設置運行狀況檢查時間爲6s
    lb_algo rr
    lb_kind DR             ####DR模式
    #nat_mask 255.255.255.0
    #persistence_timeout 50
    protocol TCP

    real_server 10.10.54.63 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3   #重試的次數
            delay_before_retry 3   #重試的時間間隔
            connect_port 80       
        }
    }
    real_server 10.10.54.67 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }

real_server 10.10.54.67 3306 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 3306
}
}
real_server 10.10.54.67 3306 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 三、
        connect_port 3306
}
}
}
 [root@centos61 ~]# /etc/init.d/keepalived restart
######自動創建虛擬ip          
[root@centos61 ~]# ifconfig

eth0:1    Link encap:Ethernet  HWaddr 08:00:27:C7:54:F1  
          inet addr:10.10.54.69  Bcast:0.0.0.0  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

4.測試10.10.54.60

telnet 10.10.54.69 80/3306
Trying 10.10.54.69...
Connected to 10.10.54.69.
Escape character is '^]'.
5.在63/67上安裝apache
yum install -y httpd.x86_64 httpd-devel.x86_64 httpd-tools.x86_64

vim /etc/httpd/conf/httpd.conf
ServerName localhost:80
 
vim /var/www/html/index.html
10.10.54.63/67-html

/etc/init.d/httpd start

6.查看鏈接數10.10.54.63/67的mysql/httpd都是啓動的
[root@centos61 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.10.54.69:80 rr
  -> 10.10.54.63:80               Route   1      0          0         
  -> 10.10.54.67:80               Route   1      0          0     
TCP  10.10.54.69:3306 rr
  -> 10.10.54.67:3306             Route   1      0          0    
  -> 10.10.54.63:3306             Route   1      0          0  

在ubuntu下輸入
http://10.10.54.69/刷新後能在10.10.54.63/67下跳轉

案例2:LVS(MASTER-BACKUP-DR)
1.網絡架構
hostname:centos61
DIRECT SERVER:10.10.54.61   
vip:10.10.54.69



hostname:centos64
DIRECT BACKUP:10.10.54.64
vip:10.10.54.69

mysqlmaster:10.10.54.64
slave(real server):10.10.54.67(80 3306) vip:10.10.54.69
slave(real server):10.10.54.63(80 3306) vip:10.10.54.69

2.在MASTER DIRECTOR SERVER上編譯ipvsadm,keepalived

3.在BACKUP DIRECTOR SERVER上編譯ipvsadm,keepalived

4.配置MASTER DIRECTOR SERVER並測試經過

//在real server(10.10.54.67/63)上啓動
[root@tech03 ~]# cat /etc/init.d/realserver
#!/bin/bash
#chkconfig: - 80 90
#description:start realserver
#script_name:realserver_config
#####################虛擬ip
VIP=10.10.54.63/67
source /etc/init.d/functions
case "$1" in
start)
echo "start LVS of realserver."
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
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/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/lo/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@CentOS63 ~]# chmod +x /etc/init.d/realserver
[root@CentOS63 ~]# chkconfig --add realserver
[root@Cent67 ~]# /etc/init.d/realserver start
###自動創建虛擬ip接口
[root@CentOS63 html]# ifconfig
lo:0      Link encap:Local Loopback  
          inet addr:10.10.54.69  Mask:255.255.255.255
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
[root@Cent67 ~]# ifconfig
lo:0      Link encap:Local Loopback  
          inet addr:10.10.54.69  Mask:255.255.255.255
          UP LOOPBACK RUNNING  MTU:16436  Metric:1

########arp抑制
arp_ignore:
0---爲默認值,迴應任何網絡接口上對任何本地IP地址的ARP查詢請求
1---只回答目標IP地址是來訪問網路接口本地地址的ARP查詢請求


arp_announce:對網路接口上,本地IP地址發出的ARP請求,做出相應級別的限制:肯定不一樣程度的限制,宣佈對來自本地源IP地址發出ARP請求的接口。
0---爲默認值,在任意網絡接口上的任何本地地址。
2---對查詢目標使用最適當的本地地址。





#####10.10.54.61
[root@Cent64 keepalived-1.2.9]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
     yangry@shiwei.com
   }
   notification_email_from yangry@shiwei.com
   smtp_server mail.shiwei.com
   smtp_connect_timeout 30
   router_id LVS_MASTER1  #表示運行keepalived服務器的一個標識,發郵件時顯示在郵件主題中的信息
}

vrrp_instance VI_2 {   #vrrp實例
    state MASTER     #MASTER/BACKUP
    interface eth0
    virtual_router_id 51  #虛擬路由標識,是一個數字,同一個VRRP實例使用惟一的標識,master和backup要同樣
    priority 100          #用於主從模式,優先級主高於100,從低於100
    advert_int 1           #msater和backup檢查的時間間隔
    authentication {        #認證用於主從模式,mater和backup配置同樣
        auth_type PASS          #PASS和AH
        auth_pass 1111
    }
    virtual_ipaddress {
###########虛擬ip       
 10.10.54.69/24 dev eth0 label eth0:1
    }
}

######real serve配置
virtual_server 10.10.54.69 80 {
    delay_loop 6          #設置運行狀況檢查時間爲6s
    lb_algo rr
    lb_kind DR             ####DR模式
    #nat_mask 255.255.255.0
    #persistence_timeout 50
    protocol TCP

    real_server 10.10.54.63 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3   #重試的次數
            delay_before_retry 3   #重試的時間間隔
            connect_port 80       
        }
    }
    real_server 10.10.54.67 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }

real_server 10.10.54.67 3306 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 3306
}
}
real_server 10.10.54.67 3306 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 三、
        connect_port 3306
}
}
}
 [root@centos61 ~]# /etc/init.d/keepalived restart



5.複製MASTER DIRECTOR SERVER配置文件到BACKUP DIRECTOR SERVER
10.10.54.64
#######################
修改SLAVE config:
   router_id LVS_SLAVE   ---change
   state BACKUP          ---change
    priority 80          ---change
########################
[root@Cent64 ~]# vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
   notification_email {
     yangry@shiwei.com
   }
   notification_email_from yangry@shiwei.com
   smtp_server mail.shiwei.com
   smtp_connect_timeout 30
   router_id LVS_SLAVE  #表示運行keepalived服務器的一個標識,發郵件時顯示在郵件主題中的信息
}

vrrp_instance VI_2 {   #vrrp實例
    state BACKUP     #MASTER/BACKUP
    interface eth0
    virtual_router_id 51  #虛擬路由標識,是一個數字,同一個VRRP實例使用惟一的標識,master和backup要同樣
    priority 80          #用於主從模式,優先級主高於100,從低於100
    advert_int 1           #msater和backup檢查的時間間隔
    authentication {        #認證用於主從模式,mater和backup配置同樣
        auth_type PASS          #PASS和AH
        auth_pass 1111
    }
    virtual_ipaddress {
###########虛擬ip       
 10.10.54.69/24 dev eth0 label eth0:1
    }
}

######real serve配置
virtual_server 10.10.54.69 80 {
    delay_loop 6          #設置運行狀況檢查時間爲6s
    lb_algo rr
    lb_kind DR             ####DR模式
    #nat_mask 255.255.255.0
    #persistence_timeout 50
    protocol TCP

    real_server 10.10.54.63 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3   #重試的次數
            delay_before_retry 3   #重試的時間間隔
            connect_port 80       
        }
    }
    real_server 10.10.54.67 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
#######mysql balance 一個virtual server 對應一個端口
real_server 10.10.54.67 3306 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 3306
}
}
real_server 10.10.54.67 3306 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 三、
        connect_port 3306
}
}
}
 [root@centos61 ~]# /etc/init.d/keepalived start
[root@Cent64 keepalived-1.2.9]# ifconfig
沒有虛擬ip接口當10.10.54.61即master的keepalived啓動時
eth0:1    Link encap:Ethernet  HWaddr 08:00:27:CD:5C:3B  
          inet addr:10.10.54.69  Bcast:0.0.0.0              Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

6.測試LVS高可用

##########中止MASTER

在BACKUP上面查看10.10.54.69(vip)是否漂移過來
非direct sever10.10.54.60上
  telnet 10.10.54.64  80

[root@centos61 ~]# /etc/init.d/keepalived stop
[root@Cent64 ~]# ifconfig

出現虛擬ip
eth0:1    Link encap:Ethernet  HWaddr 08:00:27:CD:5C:3B  
          inet addr:10.10.54.69  Bcast:0.0.0.0  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
[root@Cent64 ~]#  ip add list
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:cd:5c:3b brd ff:ff:ff:ff:ff:ff
    inet 10.10.54.64/24 brd 10.10.54.255 scope global eth0
    inet 10.10.54.69/24 scope global secondary eth0:1
    inet6 fe80::a00:27ff:fecd:5c3b/64 scope link
       valid_lft forever preferred_lft forever

[root@Cent64 ~]# ipvsadm -ln

在ubuntu下輸入
http://10.10.54.69/刷新後能在10.10.54.63/67下跳轉
##########開啓MASTER
在MASTER上查看54.69(vip)是否漂移過來
[root@centos61 ~]# /etc/init.d/keepalived start

eth0:1    Link encap:Ethernet  HWaddr 08:00:27:C7:54:F1  
          inet addr:10.10.54.69  Bcast:0.0.0.0  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

[root@Cent61 ~]# ipvsadm -ln

在BACKUP上查看是否還存在54.69(vip)

在非direct sever上
telnet 10.10.54.69  80

在ubuntu下輸入
http://10.10.54.69/刷新後能在10.10.54.63/67下跳轉


案例3:LVS(MASTER---NAT)

1.網絡架構
hostname:centos61
DIRECT SERVER:
10.10.54.61(eth0)
gatway:10.10.54.254
vip1:10.10.54.69

192.168.10.102(eth1)
vip2:192.168.10.200

hostname:centos63
//gateway:192.168.10.200
real server:192.168.10.10(80,3306-slave)           ----eth0

hostname:centos67
//gateway:192.168.10.200
real server:192.168.10.11(80,3306-slave)      ----eth0  

2.配置網卡eth1 (10.120.54.61)
[root@centos61 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1

#HWADDR=08:00:27:03:97:4F

TYPE=Ethernet
#UUID=e7363c2b-030b-4a7c-a162-d2048b8c72e0

ONBOOT=yes

NM_CONTROLLED=yes

BOOTPROTO=static

IPADDR=192.168.10.102
NETMASK=255.255.255.0

[root@centos61 ~]# /etc/init.d/network restart

3.在centos63/67
# vim /etc/sysconfig/network-scripts/ifcfg-eth0
IPADDR=192.168.10.10/11
GATEWAY=192.168.10.200
4.開啓內核轉發
[root@centos61 ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
使設置生效
[root@tech2 softs]# sysctl -p


4.如今MASTER(10.10.54.61)上安裝ipvsadm,keepalived


5.在MASTER上修改keepalived.conf文件

! Configuration File for keepalived

global_defs {
   notification_email {
    # acassen@firewall.loc
     #failover@firewall.loc
     guoyf@ssr.com
   }
   notification_email_from guoyf@ssr.com
   smtp_server mail.shiwei.com
   smtp_connect_timeout 30
   router_id LVS_MASTER1
}

vrrp_instance VI_2 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.10.54.69/24 dev eth0 label eth0:1
    }
virtual_ipaddress {
        192.168.10.200/24 dev eth1 label eth1:1
                                                             
  }
}
}

virtual_server 10.10.54.69 80 {
    delay_loop 6
    lb_algo rr
    lb_kind NAT    ##nat模式
    #nat_mask 255.255.255.0
    #persistence_timeout 50
    protocol TCP

    real_server 192.168.10.10 80 {
        weight 1

        TCP_CHECK {

            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }

    real_server 192.168.10.11 80 {
        weight 1
    TCP_CHECK {

            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }                   
}
virtual_server 10.10.54.69 3306 {
    delay_loop 6
    lb_algo rr
    lb_kind NAT
    #nat_mask 255.255.255.0
    #persistence_timeout 50
    protocol TCP

    real_server 192.168.10.10 3306{
        weight 1

        TCP_CHECK {

            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 3306
        }
    }

    real_server 192.168.10.11 3306 {
        weight 1
    TCP_CHECK {

            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 3306
        }
    }                   
}

6.測試鏈接數centos61上 ,centos63/67的mysql/啓動
[root@centos61 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.10.54.69:80 rr
  -> 192.168.10.10:80             Masq    1      0          1         
  -> 192.168.10.11:80             Masq    1      0          0         
TCP  10.10.54.69:3306 rr
  -> 192.168.10.10:3306           Route   1      0          0         
  -> 192.168.10.11:3306           Route   1      0          0      

5.在10.10.54.60測試

gyf@gyf :~$ telnet 10.10.54.69  80
Trying 10.10.54.69...
Connected to 10.10.54.69.
Escape character is '^]'.

案例4--lvs的master-backup(NAT模式)
1.網絡架構
hostname:centos61
DIRECT SERVER:
10.10.54.61(eth0)
vip1:10.10.54.69

192.168.10.102(eth1)
vip2:192.168.10.200

hostname:centos64
BACKUP DIRECTOR SERVER:
10.10.54.64(eth0)
vip1:10.10.54.69

192.168.10.103(eth1)
vip2:192.168.10.200



hostname:centos63
//gateway:192.168.10.200
real server:192.168.10.10(80,3306-slave)           ----eth0

hostname:centos67
//gateway:192.168.10.200
real server:192.168.10.11(80,3306-slave)      ----eth0  

2.配置網卡eth1 (10.120.54.61)
[root@centos61 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1

#HWADDR=08:00:27:03:97:4F

TYPE=Ethernet
#UUID=e7363c2b-030b-4a7c-a162-d2048b8c72e0

ONBOOT=yes

NM_CONTROLLED=yes

BOOTPROTO=static

IPADDR=192.168.10.102
NETMASK=255.255.255.0


[root@centos61 ~]# /etc/init.d/network restart

3.配置網卡eth1 (10.120.54.64)
[root@centos64 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1

#HWADDR=08:00:27:03:97:4F

TYPE=Ethernet
#UUID=e7363c2b-030b-4a7c-a162-d2048b8c72e0

ONBOOT=yes

NM_CONTROLLED=yes

BOOTPROTO=static

IPADDR=192.168.10.103
NETMASK=255.255.255.0

[root@centos61 ~]# /etc/init.d/network restart

4.在centos63/67
# vim /etc/sysconfig/network-scripts/ifcfg-eth0
IPADDR=192.168.10.10/11
GATEWAY=192.168.10.200
4.開啓內核轉發
[root@centos61 ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
使設置生效
[root@tech2 softs]# sysctl -p


5.如今MASTER(10.10.54.61/64)上安裝ipvsadm,keepalived


6.在MASTER10.10.54.61上修改keepalived.conf文件

! Configuration File for keepalived

global_defs {
   notification_email {
    # acassen@firewall.loc
     #failover@firewall.loc
     guoyf@ssr.com
   }
   notification_email_from guoyf@ssr.com
   smtp_server mail.shiwei.com
   smtp_connect_timeout 30
   router_id LVS_MASTER1
}

vrrp_instance VI_2 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.10.54.69/24 dev eth0 label eth0:1
    }
virtual_ipaddress {
        192.168.10.200/24 dev eth1 label eth1:1
                                                             
  }
}
}

virtual_server 10.10.54.69 80 {
    delay_loop 6
    lb_algo rr
    lb_kind NAT
    #nat_mask 255.255.255.0
    #persistence_timeout 50
    protocol TCP

    real_server 192.168.10.10 80 {
        weight 1

        TCP_CHECK {

            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }

    real_server 192.168.10.11 80 {
        weight 1
    TCP_CHECK {

            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }                   
}
virtual_server 10.10.54.69 3306 {
    delay_loop 6
    lb_algo rr
    lb_kind NAT
    #nat_mask 255.255.255.0
    #persistence_timeout 50
    protocol TCP

    real_server 192.168.10.10 3306{
        weight 1

        TCP_CHECK {

            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 3306
        }
    }

    real_server 192.168.10.11 3306 {
        weight 1
    TCP_CHECK {

            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 3306
        }
    }                   
}
[root@Cent61 ~]# /etc/init.d/keepalived restart
7.在BACKUP10.10.54.64上修改配置文件
! Configuration File for keepalived

global_defs {
   notification_email {
    # acassen@firewall.loc
     #failover@firewall.loc
     guoyf@ssr.com
   }
   notification_email_from guoyf@ssr.com
   smtp_server mail.shiwei.com
   smtp_connect_timeout 30
   router_id LVS_SLAVE  ######標識改成SLAVE
}

vrrp_instance VI_2 {
    state BACKUP   ######BACKUP
    interface eth0
    virtual_router_id 51
    priority 80   #小於100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.10.54.69/24 dev eth0 label eth0:1
    }
virtual_ipaddress {
        192.168.10.200/24 dev eth1 label eth1:1
                                                             
  }
}
}

virtual_server 10.10.54.69 80 {
    delay_loop 6
    lb_algo rr
    lb_kind NAT
    #nat_mask 255.255.255.0
    #persistence_timeout 50
    protocol TCP

    real_server 192.168.10.10 80 {
        weight 1

        TCP_CHECK {

            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }

    real_server 192.168.10.11 80 {
        weight 1
    TCP_CHECK {

            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }                   
}
virtual_server 10.10.54.69 3306 {
    delay_loop 6
    lb_algo rr
    lb_kind NAT
    #nat_mask 255.255.255.0
    #persistence_timeout 50
    protocol TCP

    real_server 192.168.10.10 3306{
        weight 1

        TCP_CHECK {

            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 3306
        }
    }

    real_server 192.168.10.11 3306 {
        weight 1
    TCP_CHECK {

            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 3306
        }
    }                   
}

[root@Cent64 ~]# /etc/init.d/keepalived restart

8.測試鏈接數centos61上 ,centos63/67的mysql/啓動
[root@centos61 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.10.54.69:80 rr
  -> 192.168.10.10:80             Masq    1      0          1         
  -> 192.168.10.11:80             Masq    1      0          0         
TCP  10.10.54.69:3306 rr
  -> 192.168.10.10:3306           Route   1      0          0         
  -> 192.168.10.11:3306           Route   1      0          0      

5.測試LVS高可用
[root@centos61 ~]# ifconfig
eth0:1    Link encap:Ethernet  HWaddr 08:00:27:C7:54:F1  
          inet addr:10.10.54.69  Bcast:0.0.0.0  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
eth1:1    Link encap:Ethernet  HWaddr 08:00:27:03:97:4F  
          inet addr:192.168.10.200  Bcast:0.0.0.0  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

##########中止MASTER

在BACKUP上面查看10.10.54.69(vip)是否漂移過來
非direct sever10.10.54.60上
  telnet 10.10.54.64  80

[root@centos61 ~]# /etc/init.d/keepalived stop
在10.10.54.64上
[root@Cent64 ~]# ifconfig

出現虛擬ip
eth0:1    Link encap:Ethernet  HWaddr 08:00:27:CD:5C:3B  
          inet addr:10.10.54.69  Bcast:0.0.0.0  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1


eth1:1    Link encap:Ethernet  HWaddr 08:00:27:A2:71:5A  
          inet addr:192.168.10.200  Bcast:0.0.0.0  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1



[root@Cent64 ~]#  ip add list

[root@Cent64 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.10.54.69:80 rr
  -> 192.168.10.10:80             Masq    1      0          0         
  -> 192.168.10.11:80             Masq    1      0          0         
TCP  10.10.54.69:3306 rr
  -> 192.168.10.10:3306           Masq    1      0          0         
  -> 192.168.10.11:3306           Masq    1      0          0      
在ubuntu下輸入
http://10.10.54.69/刷新後能在10.10.54.63/67下跳轉
##########開啓MASTER
在MASTER上查看54.69(vip)是否漂移過來
[root@centos61 ~]# /etc/init.d/keepalived start

[root@Cent61 ~]# ipvsadm -ln

在BACKUP上查看是否還存在54.69(vip)

在非direct sever上
telnet 10.10.54.69  80

測試10.10.54.60

gyf@gyf :~$ telnet 10.10.54.69  80
Trying 10.10.54.69...
Connected to 10.10.54.69.
Escape character is '^]'.

html

相關文章
相關標籤/搜索