然后就是常規的編譯內核過程,不再贅述,請參考編譯 Linux 教程
在這里要注意一點:如果你使用的是RedHat自帶的內核或者從RedHat下載的內核版本,已經預先打好了LVS的補丁。這可以通過查看/usr/src/linux/net/目錄下有沒有幾個ipvs開頭的文件來判斷:如果有,則說明已經打過補丁。
編寫LVS配置文件,實例中的配置文件如下:
|
將該文件置于/etc/lvs目錄下。
使用LVS的配置腳本產生lvs.conf文件。該配置腳本可以從http: //www.linuxvirtualserver.org/Joseph.Mack/configure-lvs_0.8.tar.gz 單獨下載,在ipvs-1.0.6-2.2.19.tar.gz包中也有包含。
腳本configure的使用方法:
[root@vs2 lvs]# configure lvs.conf
這樣會產生幾個配置文件,這里我們只使用其中的rc.lvs_dr文件。
修改/etc/rc.d/init.d/rc.local,增加如下幾行:
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/ip_always_defrag
# 顯示最多調試信息
echo 10 > /proc/sys/net/ipv4/vs/debug_level
配置NFS服務。這一步僅僅是為了方便管理,不是必須的步驟。
假設配置文件lvs.conf文件放在/etc/lvs目錄下,則/etc/exports文件的內容為:
/etc/lvs ro(rs1,rs2)
然后使用exportfs命令輸出這個目錄:
[root@vs2 lvs]# exportfs
如果遇到什么麻煩,可以嘗試:
[root@vs2 lvs]# /etc/rc.d/init.d/nfs restart
[root@vs2 lvs]# exportfs
這樣,各個real server可以通過NFS獲得rc.lvs_dr文件,方便了集群的配置:你每次修改lvs.conf中的配置選項,都可以即可反映在rs1,rs2的相應目錄里。
修改/etc/syslogd.conf,增加如下一行: kern.* /var/log/kernel_log
這樣,LVS的一些調試信息就會寫入/var/log/kernel_log文件中.
real server的配置
real server的配置相對簡單,主要是是以下幾點:
配置telnet和WWW服務。telnet服務沒有需要特別注意的事項,但是對于www服務,需要修改httpd.conf文件,使得apache在虛擬服務器的ip地址上監聽,如下所示:
Listen 192.168.0.101:80
關閉real server上dummy0的arp請求響應能力。這是必須的,具體原因請參見ARP problem in LVS/TUN and LVS/DR(http://www.linuxvirtualserver.org/arp.html)。關閉dummy0的arp響應的方式有多種,比較簡單地方法是,修改/etc/rc.d/rc.local文件,增加如下幾行: echo 1 > /proc/sys/net/ipv4/conf/all/hidden
ifconfig dummy0 up
ifconfig dummy0 192.168.0.101 netmask 255.255.255.0 broadcast 192.168.0.0 up
echo 1 > /proc/sys/net/ipv4/conf/dummy0/hidden
再次修改/etc/rc.d/rc.local,增加如下一行:(可以和步驟2合并)
echo 1 > /proc/sys/net/ipv4/ip_forward
IP Virtual Server version 1.0.6 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.0.101:telnet rr
-> rs2:telnet Route 1 1 0
-> rs1:telnet Route 1 1 0
TCP 192.168.0.101:www rr
-> rs2:www Route 1 0 0
-> rs1:www Route 1 0 0