在Linux下構造高性能、高可用、高可伸縮性的服務集群(一)

發表于:2007-05-26來源:作者:點擊數: 標簽:
LVS+Heartbeat+Ldirectord在Red Hat9.0下的實現 陸 飛 ( fluzj@21cn.com 、 fluhzzj@hotmail.com ) 杭州市地方稅務局西湖征收管理局 2003年9月 隨著Internet技術的迅猛發展,網絡技術、性能的不斷提高,高可伸縮性、高可用性、可管理性、價格有效性的網絡服
LVS+Heartbeat+Ldirectord在Red Hat9.0下的實現

陸 飛(fluzj@21cn.com、fluhzzj@hotmail.com)
杭州市地方稅務局西湖征收管理局
2003年9月

隨著Internet技術的迅猛發展,網絡技術、性能的不斷提高,高可伸縮性、高可用性、可管理性、價格有效性的網絡服務技術將 成為網絡服務技術的主導。各種平臺下的技術方案應運而生。本文試圖以一篇完整的理論+實踐性的文字來介紹如何在優秀的開源操作系統Linux下創建低成 本、高性能、高可用的服務集群系統。文中所使用的系統和軟件包均為最新版本。希望通過對本文的閱讀能使你對如何創建Linux下的集群系統有所幫助。

1.Linux下的解決方案

Linux下的集群系統通??梢苑譃槿悾?br />

  1. HA容錯集群 (Fail-over Cluster)
    高可用性集群(High available)用于不可間斷服務的環境下。提供冗余的容錯備份,在主節點失效后,能夠立即接管相關資源及繼續提供相應服務。
  2. 負載均衡集群 (Load Balancing Cluster)
    在應用服務的高負載情況下運用該技術,由多臺節點提供高可伸縮的,高負載的服務器組。以保證對外提供良好的服務響應。
  3. HPC高性能計算機集群 (High Performance Computing)
    概念并不完全統一,有一定爭論,應該理解為并行系統,主要用于科學計算。

本文所要介紹的是前兩類集群的一個完美的組合。

1.1. Linux Virtual Server項目

在1998年5月,由章文嵩博士成立了Linux Virtual Server的自由軟件項目,進行Linux服務器集群的開發工作。同時,Linux Virtual Server項目也是國內最早出現的自由軟件項目之一。該項目針對高可伸縮、高可用網絡服務的需求,給出了基于IP層和基于內容請求分發的負載平衡調度解 決方法,它通過前端一個負載調度器(Load Balancer)無縫地將網絡請求調度到真實服務器上,從而使得服務器集群的結構對客戶是透明的,客戶訪問集群系統提供的網絡服務就像訪問一臺高性能、 高可用的服務器一樣??蛻舫绦虿皇芊掌骷旱挠绊懖恍枳魅魏涡薷?。系統的伸縮性通過在服務機群中透明地加入和刪除一個節點來達到,通過檢測節點或服務進 程故障和正確地重置系統達到高可用性。并在Linux內核中實現了這些方法,將一組服務器構成一個實現可伸縮的、高可用網絡服務的虛擬服務器。

虛擬服務器的體系結構如圖2所示。


圖2:虛擬服務器的結構

1.1.1. LVS的核心軟件IPVS

在調度器的實現技術中,IP負載均衡技術是效率最高的。在已有的IP負載均衡技術中有通過網絡地址轉換(Network Address Translation)VS/NAT技術的基礎上,IPVS軟件實現了三種IP負載均衡技術:

1)Virtual Server via Network Address Translation(VS/NAT) 網絡地址轉換 (如圖1)
2)Virtual Server via IP Tunneling(VS/TUN) 隧道技術 (如圖2)
3)Virtual Server via Direct Routing(VS/DR) 直接路由 (如圖3)

針對不同的網絡服務需求和服務器配置,IPVS調度器實現了如下十種負載調度算法:

  1. 輪叫(Round Robin)
  2. 加權輪叫(Weighted Round Robin)
  3. 最少鏈接(Least Connections)
  4. 加權最少鏈接(Weighted Least Connections)
  5. 基于局部性的最少鏈接(Locality-Based Least Connections)
  6. 帶復制的基于局部性最少鏈接(Locality-Based Least Connections with Replication)
  7. 目標地址散列(Destination Hashing )
  8. 源地址散列(Source Hashing)
  9. 最短期望延遲(Shortest Expected Delay)(新增加調度算法)
  10. 無須隊列等待(Never Queue)(新增加調度算法)

其中9-10是最新1.09版IPVS軟件包中新增的調度算法,這十種調度算法將會在后面的ipvsadm配置文件中用到,通常用英文單詞的第一個字母的縮寫來表示。例如:輪叫(Round Robin)表示為rr。

三種IP負載均衡技術的優缺點比較


VS/NATVS/TUNVS/DR
服務器(OS)任意支持隧道多數(支持Non-arp )
服務器網絡私有網絡局域網/廣域網局域網
服務器數目(100M網絡)10~20100多(100)
服務器網關負載均衡器自己的路由自己的路由
效率一般最高

三種IP負載均衡技術中特別是后兩種技術VS/TUN,VS/DR極大地提高系統的伸縮性,它們的相關技術原理不是本文討論的重點,若需了解詳細內容,請參看章文嵩博士的相關撰文。


圖1


圖2


圖3

1.2. High Availability of LVS

較為成熟的方案有mon+heartbeat+fake+coda 和ldirectord+heartbeat 方案,本文我們采用的是ldirectord+heartbeat 方案。

1.2.1. Heartbeat

Linux-HA 項目開始于 1998 年,是 Linux-HA HOWTO(Haranld Milz 著)的產物。該項目目前由 Alan Robertson 領導,許多其他代碼提供者也參與其中。1.0.3版本是2003年6月發布的最新穩定版本。

Heartbeat 通過通信介質(通常是串行設備和以太網)監控節點的"健康"狀況。最好有多個冗余介質,以便我們既可以使用串行線又可以使用以太網鏈接。每個節點運行一個 守護程序進程(稱為"心跳")。主守護程序派生出讀和寫每個心跳介質的子進程,以及狀態進程。當檢測到某個節點發生故障時,Heartbeat 運行 shell 腳本來啟動(或停止)輔助節點上的服務。按照設計,這些腳本使用與系統 init 腳本(通常位于 /etc/init.d 中)相同的語法。缺省腳本是為文件系統、Web 服務器和虛擬 IP 故障轉移提供的。

1.2.2. Ldirectord

"ldirectord"(Linux Director Daemon)是Jacob Rief編程實現的一個獨立進程,以實現對服務和物理服務器的監測,廣泛地用于http和https等服務, Ldirectord與mon相比,優點如下:

  1. ldirectord是專門為LVS 監控而編寫的。
  2. ldirectored可以方便地被heartbeat管理啟動和停止。
  3. 它能從heartbeat的配置文件/etc/ha.d/xxx.cf中讀取所有有關IPVS路由表配置的信息。當 ldirectord 運行后,IPVS路由表將被適當地配置。你也可以將不同的虛擬服務器配置保存在不同的配置文件里, 所以你可以單獨修改某種服務的參數而不用停止其它的服務
  4. 另外,ldirectord安裝簡便,可以手工地啟動和停止。你可以在沒有備份負載均衡器的LVS集群上使用。

1.2.3. ldirectord+heartbeat的絕妙組合

ldirectord+heartbeat方案前端負載調度器采用雙機熱備份方式,雙機均安裝雙網卡,一個網卡用于連接集群系統,另一個作為冗余心 跳線路連接雙機。采用串口線 + 以太網口做為冗余心跳線路,以確保雙機熱備份的可靠性,消除由于主負載調度器或心跳線故障帶來的集群單點故障。

在主負載調度器及備份負載調度器同時安裝ldirectord及heartbeat,并同時運行Heartbeat,相互監視"健康"狀況,一旦備 份負載調度器監測到主負載調度器發生故障,備份服務器通過運行shell腳本來啟動備份調度器上服務來完成虛擬 IP 故障轉移,通過ipvsadm啟動LVS及ldirectord,完成負載調度器的整體接管。一旦主負載調度器恢復正常工作,備份負載將通過腳本停掉備份 負載調度器上的LVS及ldirectord,同時完成虛擬 IP 故障轉移,主負載調度器重新恢復接管LVS及ldirectord監控服務。這樣負載調度器就完成了一個標準的接管及恢復過程。

該方案結構清晰明了,安裝簡便,并且ldirectord是專門為LVS所開發,針對性強,無縫銜接,配合默契,堪稱絕妙組合。

2. LVS在Red Hat 9.0上的具體實現

2.1. 實現目標:

實現以常用、效率最高的LVS-DR IP負載技術為基礎,以高可用性(HA)+ 高性能 + 高性能/價格比 + 高可伸縮性為最終目的。負載均衡器采用HA技術構架,采用Heartbeat軟件包,heartbeat采用串口、網絡口冗余線路,保證24X7不間斷運 行。結構如圖:

Setup LVS using LVS-DR forwarding



________
| |
| client |
|________|
CIP= SGW =192.168.7.254/24 (eth0)
|
|
eth1 __________ |
192.168.0.1 | director | |
--------| primiary |---| DIP=192.168.7.9/24 (eth0)
| |__________| |
| ttyS0| |
|heartbeat | |
|backup | | VIP=192.168.7.110/32 (eth0:0)*
| ttyS0| |
| _____|____ |
| | director | |
--------| backup |---| DIP=192.168.7.10/24 (eth0)
eth1 |__________| |
192.168.0.2 |
|
|
|
|
-----------------------------------
| |
| |
RIP=192.168.7.11/24 (eth0) RIP=192.168.7.12/24 (eth0)
VIP=192.168.7.110/32 (lo:0) VIP=192.168.7.110/32 (lo:0)
____________ ____________
| | | |
| realserver | ----------- | realserver |
|____________| |____________|



2.2. 設備要求:

因為負載均衡器和真實服務器節點均有軟硬件冗余保障,所以硬件設備可以根據具體資金情況及提供服務規模而定。當然最好采用支持RAID,SCSI, 內存ECC校驗,熱插拔等技術的專用服務器,以提供穩定高效的服務。對于非關鍵業務服務,也可以考慮采用最新支持IDE RAID(0,1,0+1,1.5,5)的服務器,可以獲得一個良好的性能/價格比。當然,如果你是一個對硬件技術細節非常熟悉,說話又有分量,對自己非 常有信心,敢冒風險,崇尚節約、實用性的人,那么DIY一組高性價比的服務器集群,也是一件非常有意義而且充滿樂趣的工作。

2.3.原始軟件環境:

Red Hat 9.0 完全安裝
Red Hat 9.0 (kernel-2.4.20-8 ) gcc -3.2.2-5

如果你使用的是Red Hat 8 ,那么你很幸運。Red Hat 8 (kernel-2.4.18-14)已經預先打了ipvs的補丁,在預安裝的內核中已將ipvs編譯成模塊,可以通過檢查 /lib/modules/2.4.18-14/kernel/net/ipv4/ipvs 是否存在來判斷??梢灾苯影惭bipvsadm。從Red Hat 9 (kernel-2.4.20-8),Red Hat 取消了ipvs的補丁及預編譯ipvs為模塊的內核,且Red Hat 9 自帶的kernel-2.4.20-8的內核無法通過ipvs補丁linux-2.4.20-ipvs-1.0.9 .patch.gz的編譯,至少在我的兩臺P4的機器上都沒有通過編譯。標準內核linux-2.4.20.tar.gz則可以通過編譯。所以我們將采用 www.kernel.org上的標準內核kernel-2.4.20.tar.gz來構造我們的集群系統。

2.4.需下載軟件包:

# Linux kernel
http://www.kernel.org/pub/linux/kernel/v2.4/linux-2.4.20.tar.gz

# ipvs patch
http://www.linuxvirtualserver.org/software/kernel-2.4/linux-2.4.20-ipvs-1.0.9.patch.gz

# ipvs tar ball
http://www.linuxvirtualserver.org/software/kernel-2.4/ipvs-1.0.9.tar.gz

# hidden patch(已經包括在ipvs-1.0.9.tar.gz,可不用下載)
http://www.ssi.bg/~ja/hidden-2.4.20pre10-1.diff (解決arp 問題 for LVS-DR/LVS-Tun)

# ipvsadm (已包含在ipvs-1.0.9.tar.gz包中, 可不用下載)

# Ldirectord
http://www.linux-ha.org/download/heartbeat-ldirectord-1.0.3-1.i386.rpm

# heartbeat
http://www.linux-ha.org/download/heartbeat-1.0.3.tar.gz
http://www.linux-ha.org/download/heartbeat-1.0.3-1.src.rpm
http://www.linux-ha.org/download/heartbeat-1.0.3-1.i386.rpm
http://www.linux-ha.org/download/heartbeat-pils-1.0.3-1.i386.rpm
http://www.linux-ha.org/download/heartbeat-stonith-1.0.3-1.i386.rpm

2.5. 安裝要求:

2.5.1 Director:

  • 內核打non-arp的補丁hidden-2.4.20pre10-1.diff (解決arp problem for LVS-DR/LVS-Tun,雖然在Directors上運行時并不需要,但硬件環境如果和Realserver類似,內核可以直接放到 RealServer上運行,不用再為realServer重新編譯內核,當然也可不打該補丁。)
  • 內核打ipvs的補丁linux-2.4.20-ipvs-1.0.9.patch.gz,重新編譯新內核。
  • 運行新內核后編譯安裝ipvsadm。(LVS-NAT (network address translation); LVS-DR (direct routing) and LVS-Tun (tunneling). 真實服務器 realserver/service 的轉發方式由ipvsadm來設置。)

2.5.2 RealServes: (在LVS-NAT方式下,不需要打任何補?。?/b>

內核打arp的補丁hidden-2.4.20pre10-1.diff (arp problem for LVS-DR/LVS-Tun)編譯新內核。

  • 解決Non-arp problem
  • 設置缺省網關(gw)
    • LVS-NAT: director(DIP)
    • LVS-DR, LVS-Tun: 對外路由 (不是director的IP).

如果你不知道你的內核源代碼是否已經預打過ipvs的補丁, 可以詢問你的Linux發行版的制造商或查看相關ipvs 文件,文件名類似于 /usr/src/linux-2.4/net/ipv4/ip_vs_*.c。

2.6. 安裝步驟:

2.6.1 Director或RealServer上內核的安裝:


export D=/tmp/download
mkdir $D
cd $D
wget http://www.kernel.org/pub/linux/kernel/v2.4/linux-2.4.20.tar.gz
wget http://www.linuxvirtualserver.org/software/kernel-2.4/linux-2.4.20-ipvs-1.0.9 .patch.gz
wget http://www.linuxvirtualserver.org/software/kernel-2.4/ipvs-1.0.9.tar.gz

tar zxvf linux-2.4.20.tar.gz
tar zxvf ipvs-1.0.9.tar.gz
gunzip linux-2.4.20-ipvs-1.0.9.patch.gz
mv linux-2.4.20 /usr/src/linux-2.4.20
cd /usr/src
rm -f linux-2.4
ln -s linux-2.4.20 linux-2.4
cd linux-2.4
patch -p1 < $D/ipvs-1.0.9/contrib/patches/hidden-2.4.20pre10-1.diff (arp for LVS-DR/LVS-Tun)
patch -p1 < $D/linux-2.4.20-ipvs-1.0.9.patch (僅在編譯Director內核時打補?。?br />make mrproper
cp /boot/config-2.4.20-8 .config (使用Red Hat 9自帶的config內核配置文件或使用/usr/src/linux-2.4.7-10/configs下的配置文件)

make menuconfig(參照相關ipvs及內核配置)
或在圖形界面運行: make xconfig


相關網絡內核選項:

相關LVS內核選項:



make dep
make clean
make bzImage
make modules
make modules_install
cp arch/i386/boot/bzImage /boot/ vmlinuz-2.4.20-lvs (rs)
cp System.map /boot/System.map.2.4.20-lvs (rs)
cp vmlinux /boot/vmlinux-2.4.20-lvs (rs)
cd /boot
rm -f System map
ln -s System.map.2.4.20-lvs (rs) System.map

vi /boot/grub/grub.conf:
title 2.4.20-lvs
root (hd0,0)
kernel /boot/vmlinuz-2.4.20-lvs (rs) ro root=/dev/xxx




如果要安裝該內核在其它機器上:


tar czf linux-2.4.20-dir.tgz /usr/src/linux-2.4.20/

在其它機器上解壓tar zxvf linux-2.4.20-dir.tgz 放置到/usr/src
rm -f linux-2.4
ln -s linux-2.4.20 linux-2.4
cd linux-2.4
make modules_install
cp arch/i386/boot/bzImage /boot/ vmlinuz-2.4.20-lvs (rs)
cp System.map /boot/System.map.2.4.20-lvs (rs)
cd /boot
rm -f System map
ln -s System.map.2.4.20-lvs (rs) System.map

vi /boot/grub/grub.conf:
title 2.4.20-lvs
root (hd0,0)
kernel /boot/vmlinuz-2.4.20-lvs (rs) ro root=/dev/xxx

2.6.2 Director上ipvsadm 的安裝:

用打過ipvs和hidden(for LVS-DR/LVS-Tun)補丁的新內核啟動linux


cd / tmp/download/ipvs-1.0.9/ipvs/ipvsadm
make install

檢查ipvsadm 探測到內核的ipvs的補丁可以運行


ipvsadm

如果成功你會看到類似于如下內容:


director: /usr/src# ipvsadm
IP Virtual Server version 0.2.7 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn


說明安裝成功

運行lsmod | grep ip_vs 可以看到ip_vs模塊已經被插入內核運行。

2.6.3. 運行腳本( Run Scripts )

以下以最常用的LVS-DR模式來介紹相關的腳本設置

( 以Telnet服務, 輪叫(rr)策略為例 )

2.6.3.1 Director上:


#!/bin/bash
#---------------mini-rc.lvs_dr-director------------------------
#set ip_forward OFF for vs-dr director (1 on, 0 off)
cat /proc/sys/net/ipv4/ip_forward
echo 0 >/proc/sys/net/ipv4/ip_forward

#director is not gw for realservers: leave icmp redirects on
echo 'setting icmp redirects (1 on, 0 off) '
echo 1 >/proc/sys/net/ipv4/conf/all/send_redirects
cat /proc/sys/net/ipv4/conf/all/send_redirects
echo 1 >/proc/sys/net/ipv4/conf/default/send_redirects
cat /proc/sys/net/ipv4/conf/default/send_redirects
echo 1 >/proc/sys/net/ipv4/conf/eth0/send_redirects
cat /proc/sys/net/ipv4/conf/eth0/send_redirects

#add ethernet device and routing for VIP 192.168.7.110
#if use backup director ,pay any attention about bellow
/sbin/ifconfig eth0:0 192.168.7.110 broadcast 192.168.7.110 netmask 255.255.255.255 up
/sbin/route add -host 192.168.7.110 dev eth0:0
#listing ifconfig info for VIP 192.168.7.110
/sbin/ifconfig eth0:0

#check VIP 192.168.7.110 is reachable from self (director)
/bin/ping -c 1 192.168.7.110
#listing routing info for VIP 192.168.7.110
/bin/netstat -rn

#setup_ipvsadm_table
#clear ipvsadm table
/sbin/ipvsadm -C
#installing LVS services with ipvsadm
#add telnet to VIP with round robin scheduling
/sbin/ipvsadm -A -t 192.168.7.110:telnet -s rr

#forward telnet to realserver using direct routing with weight 1
/sbin/ipvsadm -a -t 192.168.7.110:telnet -r 192.168.7.11 -g -w 1
#check realserver reachable from director
ping -c 1 192.168.7.11

#forward telnet to realserver using direct routing with weight 1
/sbin/ipvsadm -a -t 192.168.7.110:telnet -r 192.168.7.12 -g -w 1
#check realserver reachable from director
ping -c 1 192.168.7.12

#displaying ipvsadm settings
/sbin/ipvsadm

#not installing a default gw for LVS_TYPE vs-dr
#---------------mini-rc.lvs_dr-director------------------------

該段運行腳本對于熟悉Linux網絡配置的讀者來說應該很容易理解。由于LVS是通過對標準內核打補丁,在內核級提供支持,所以在LVS-DR模式 下,首先是進行內核的相關設置。要關閉標準內核下的ip_forward轉發方式,即置為0。同時因為LVS-DR模式下,集群的網關是外部網關,而不是 負載均衡器。所以要打開icmp包的重定向設置send_redirects 置為1。接著就是綁定集群的虛擬服務器的IP地址,并添加一條到該IP地址的主機路由。然后對該虛擬IP做一些必要的自我檢測,同時列出路由表。最后是有 關ipvasdm的設置,首先清空ipvasdm表,然后添加需要提供負載均衡的服務及調度策略,這里例舉的是telnet服務,也可以直接使用端口號, 調度策略為輪叫(rr)策略。最后添加轉發到真實服務器的直接路由,如果有多臺RealServer或需要提供多種服務的負載均衡,依次添加。再做一些到 RealServer的網絡測試(也可不要),最后顯示ipvasdm所有的設置信息。

注意:

ipvs-1.0.9.tar.gz中包含的ipvsadm是1.21版,安裝后在/etc/rc.d/init.d/目錄下自動生成了標準的 init服務腳本,如果你的Director沒有安裝備份服務器,你可以通過服務管理工具讓它在相應的運行級里自動運行,如果Director是HA系 統,則由heartbeat控制運行。

另外該服務腳本提供了配置保存功能。配置文件為:/etc/sysconfig/ipvsadm 你必須手工建立。然后在其中輸入規則和策略:

例如:


-A -t 192.168.7.110:telnet -s rr
-A -t 192.168.7.110:http -s rr
-a -t 192.168.7.110:telnet -r 192.168.7.11 -g -w 1
-a -t 192.168.7.110:http -r 192.168.7.11 -g -w 1

然后存盤。

或直接運行:


/sbin/ipvsadm -A -t 192.168.7.110:telnet -s rr
/sbin/ipvsadm -A -t 192.168.7.110:http - rr
/sbin/ipvsadm -a -t 192.168.7.110:telnet -r 192.168.7.11 -g -w 1
/sbin/ipvsadm -a -t 192.168.7.110:http -r 192.168.7.11 -g -w 1


然后運行:/etc/rc.d/init.d/ipvsadm save

就可以保存當前配置到/etc/sysconfig/ipvsadm文件中。

在具有HA系統的Director上,ipvsadm可以方便地被Heartbeat管理-啟動、停止。Director上的VIP(虛擬)服務器地址由Heartbeat負責設置和切換。

做法如下:

在Heartbeat的配置文件haresources中加類似入如下一行:

linuxha1 IPaddr::192.168.7.110/24/192.168.7.255 ipvsadm ldirectord::www ldirectord::mail

2.6.3.2. RealServers上:


#!/bin/bash
#----------mini-rc.lvs_dr-realserver------------------
#installing default gw 192.168.7.254 for vs-dr
/sbin/route add default gw 192.168.7.254
#showing routing table
/bin/netstat -rn
#checking if DEFAULT_GW 192.168.1.254 is reachable
ping -c 1 192.168.7.254

#set_realserver_ip_forwarding to OFF (1 on, 0 off).
echo 0 >/proc/sys/net/ipv4/ip_forward
cat /proc/sys/net/ipv4/ip_forward

#looking for DIP 192.168.7.9
ping -c 1 192.168.7.9

#looking for VIP (will be on director)
ping -c 1 192.168.7.110

#install_realserver_vip
/sbin/ifconfig lo:0 192.168.7.110 broadcast 192.168.7.110 netmask 255.255.255.255 up
#ifconfig output
/sbin/ifconfig lo:0
#installing route for VIP 192.168.1.110 on device lo:0
/sbin/route add -host 192.168.7.110 dev lo:0
#listing routing info for VIP 192.168.7.110
/bin/netstat -rn

#hiding interface lo:110, will not arp
echo 1 >/proc/sys/net/ipv4/conf/all/hidden
cat /proc/sys/net/ipv4/conf/all/hidden
echo 1 >/proc/sys/net/ipv4/conf/lo/hidden
cat /proc/sys/net/ipv4/conf/lo/hidden

#----------mini-rc.lvs_dr-realserver------------------


該段腳本和上面的腳本比較類似,相信不用再多做介紹了。需要注意的是:LVS-DR模式下,缺省網關的設置。集群的網關是外部網關,而不是負載均衡 器。還有就是RealServer上綁定的VIP地址的設備lo:0。另外不要忘了開啟not arp補丁的設置開關。相信你已經很清楚了。

你也可以把以上腳本改寫成符合init語法的標準腳本,放到/etc/rc.d/init.d/下面運行,或直接加到/etc/init.d/rc.local下運行。

改寫為標準init語法腳本如下:



#!/bin/bash
#
# hidden This shell script takes care of starting and stopping
# the ipvs-hidden subsystem (hiddend).
#
# chkconfig: 2345 78 12
# description: ipvs-hidden
# processname: hiddend

prog="hidden"

start(){

echo 0 >/proc/sys/net/ipv4/ip_forward
/sbin/ifconfig lo:0 192.168.7.110 broadcast 192.168.7.110 netmask 255.255.255.255 up
# installing route for VIP 192.168.1.110 on device lo:0
/sbin/route add -host 192.168.7.110 dev lo:0
# listing routing info for VIP 192.168.7.110
/bin/netstat -rn
# hiding interface lo:0, will not arp
# echo 1 >/proc/sys/net/ipv4/conf/all/hidden
echo 1 >/proc/sys/net/ipv4/conf/lo/hidden

}

stop(){

echo 1 >/proc/sys/net/ipv4/ip_forward
/sbin/ifconfig lo:0 192.168.7.110 broadcast 192.168.7.110 netmask 255.255.255.255 down
/sbin/route del -host 192.168.7.110 dev lo:0
# echo 0 >/proc/sys/net/ipv4/conf/all/hidden
echo 0 >/proc/sys/net/ipv4/conf/lo/hidden
}

restart(){
stop
start
}

condrestart(){
[ -e /var/lock/subsys/hiddend ] && restart || :
}

# See how we were called.
case "" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo $"Usage: "
exit 1
esac

exit $?

然后:


cp rc.lvs /etc/rc.d/init.d/hiddend
chmod 755 /etc/rc.d/init/d/hiddend
chkconfig - -add hiddend


原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97