4.安裝配置LVS
4.1 准備工作
地址規划:
服務器名 |
IP地址 |
網關 |
虛擬設備名 |
虛擬IP |
Director Server |
192.168.98.75 |
192.168.98.1 |
eth0:0 |
192.168.98.77 |
Real Server 1 |
192.168.98.74 |
192.168.98.1 |
lo:0 |
192.168.98.77 |
Real Server 2 |
192.168.98.117 |
192.168.98.1 |
lo:0 |
192.168.98.77 |
Real Server n |
… |
… |
.. |
.. |
4.2 安裝LVS
LVS的具體實現是由ipvsadm 這個程序來完成,因此判斷一個系統是否具備 ipvs 功能,只需要查看看 ipvsadm 程序是否被安裝。查看 ipvsadm 程序最簡單的辦法就是在任意路徑執行命令ipvsadm。下表為安裝 ipvsadm 及未安裝 ipvsadm 的輸出對比。
執行 ipvsadm 后的輸出 |
|
未安裝 ipvsadm |
-bash: ipvsadm: command not foun |
安裝 ipvsadm |
IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags ->RemoteAddress:Port Forward Weight ActiveConn InActConn |
*所有Director Server需要安裝ipvsadm,Real Server只需要執行配置腳本。
1. 創建一個連接文件,其命令為:
[root@localhost ~]# ln –sv /usr/src/kernels/2.6.18-308.el5-x86_64/ /usr/src/linux
注意一定要與當前的運行的內核相一致,因為/usr/src/kernels 目錄下可多個目錄。如果不創建這個連接文件,在編譯時會出錯,從而不能繼續進行安裝。
2. 解壓ipvsadm-1.24.tar.gz軟件包:
[root@localhost ~]# tar zxvf ipvsadm-1.24.tar.gz
3. 編譯安裝
[root@localhost ~]# cd ipvsadm-1.24
[root@localhost ~]# make
[root@localhost ~]# make install
可執行文件被安裝到/sbin/ipvsadm
l 檢驗安裝ipvsadm是否被正確安裝
1. 執行ipvsadm,輸出如上表第二列底三行所示。
2. 檢查當前加載的內核模塊,看是否存在 ip_vs 模塊。
[root@localhost ~]# lsmod|grep ip_vs
ip_vs 122112 0
4.3 配置及驗證Director Server
4.3.1 配置Director Server
#!/bin/bash VIP=192.168.98.77 #虛擬ip(供用戶訪問的ip) RIP1=192.168.98.74 #真實服務器(real server)ip RIP2=192.168.98.117 #真實服務器(real server)ip PORT=2200 #端口 case "$1" in start) echo "start config LVS Director Server..." ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up route add -host $VIP dev eth0:0 echo "1">/proc/sys/net/ipv4/ip_forward ipvsadm -C ipvsadm -A -t $VIP:$PORT -s rr 120 ipvsadm -a -t $VIP:$PORT -r $RIP1:$PORT –g #添加real server,多個可配置多條 ipvsadm -a -t $VIP:$PORT -r $RIP2:$PORT –g #添加real server,多個可配置多條 ipvsadm echo "config LVS Director Server success!" ;; stop) echo "shut down LVS Director Server" echo "0">/proc/sys/net/ipv4/ip_forward ipvsadm -C ifconfig eth0:0 down echo "shut down LVS Director Server success!" ;; *) echo "usage:$0 {start|stop}" exit 1 esac |
執行:./ lvsDR.sh start 打開
執行:./ lvsDR.sh stop 關閉
*執行前修改權限:chmod 755 lvsDR.sh
4.3.2 驗證Director Server配置
[root@netscan lvs]# ipvsadm IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.98.77:2200 wlc -> 192.168.98.117:2200 Route 1 0 0 -> 192.168.98.74:2200 Route 1 0 0 |
輸出上述信息配置成功。
4.3.3 將ipvsadm配置成開機啟動腳本
lvsDR_auto.sh:Director Server配置腳本
其中VIP,RIP1,RIP2,PORT應根據實際需要自行修改
#!/bin/bash VIP=192.168.98.77 #虛擬ip(供用戶訪問的ip) RIP1=192.168.98.74 #Real Server ip RIP2=192.168.98.117 #Real Server ip PORT=2200 #端口 echo "start config LVS Director Server..." ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up route add -host $VIP dev eth0:0 echo "1">/proc/sys/net/ipv4/ip_forward ipvsadm -C ipvsadm -A -t $VIP:$PORT -s wlc ipvsadm -a -t $VIP:$PORT -r $RIP1:$PORT -g ipvsadm -a -t $VIP:$PORT -r $RIP2:$PORT -g ipvsadm echo "config LVS Director Server success!" exit 1 |
lvsRS_auto.sh:Real Server配置腳本
其中VIP應該跟Director Server配置的VIP一樣
#!/bin/bash VIP=192.168.98.77 #虛擬ip(供用戶訪問的ip) echo "start config lvs Real Server..." ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up route add -host $VIP dev lo:0 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 echo "config lvs Real Server success!" exit 1 |
首先腳本文件放到服務器上后都需要添加執行權限:
[root@localhost ~]# chmod 755 lvsDR_auto.sh
[root@localhost ~]# chmod 755 lvsRS_auto.sh
Director Server:
[root@localhost ~]# cp lvsDR_auto.sh /etc/init.d/
[root@localhost ~]# ln -s /etc/init.d/lvsDR_auto.sh /etc/rc.d/rc3.d/S99lvsDR_auto
[root@localhost ~]# ln -s /etc/init.d/lvsDR_auto.sh /etc/rc.d/rc5.d/S99lvsDR_auto
Real Server:
[root@localhost ~]# cp lvsRS_auto.sh /etc/init.d/
[root@localhost ~]# ln -s /etc/init.d/lvsRS_auto.sh /etc/rc.d/rc3.d/S99lvsRS_auto
[root@localhost ~]# ln -s /etc/init.d/lvsRS_auto.sh /etc/rc.d/rc5.d/S99lvsRS_auto
4.4 配置及驗證Real Server
4.4.1 配置Real Server
#!/bin/bash VIP=192.168.98.77 #虛擬ip(供用戶訪問的ip) case "$1" in start) echo "start config lvs Real Server..." ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up route add -host $VIP dev lo:0 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 echo "config lvs Real Server success!" ;; stop) echo "shutting down lvs Real server..." ifconfig lo:0 down 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 echo "shut down lvs Real server success!" ;; *) echo "usage:$0 {start|stop}" exit 1 esac |
執行:./ lvsRS.sh start 打開
執行:./ lvsRS.sh stop 關閉
*執行前修改權限:chmod 755 lvsRS.sh
4.4.2 驗證Resl Server配置
[root@localhost ~]# ip add 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet 192.168.98.77/32 brd 192.168.98.77 scope global lo:0 inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 00:50:56:91:14:81 brd ff:ff:ff:ff:ff:ff inet 192.168.98.118/24 brd 192.168.98.255 scope global eth0 inet6 fe80::250:56ff:fe91:1481/64 scope link valid_lft forever preferred_lft forever 3: sit0: <NOARP> mtu 1480 qdisc noop link/sit 0.0.0.0 brd 0.0.0.0 |
從 輸 出 可 以 看 出 , lo0:0 確實 綁 定 了 我 們 指 定 的 vip 地 址 。