Cluster之功能主要是用作負載平衡,由virtual server對外連接internet並負責將要求服務之封包,依排程演算,分配給真正提供服務的real server群,達到負載平衡;同時工作的分配可以避開故障無法提供服務之real server由其它real server繼續提供服務,防止在單一服務器的環境下主機的故障造成服務中斷的情形;而virtual server部分為單一對外通連的出口,負載極重,可以用HA方式由備援主機保障其工作正常持續運行;piranha為REDHAT設定cluster的GUI接口設定程序,可單獨設定cluster功能,亦可加上HA備援功能。
1.~4.為基本cluster之架設步驟
5.為加入HA功能架設,針對virtual server提供備援主機功能
6.遭遇到之問題與解決方案
1. 安裝所需套件
I. piranha-gui-0.4.12-2lp (GUI接口cluster設定工具)
II. piranha-0.4.12-2lp
III. ipchains-1.3.9-6lp (架設NAT)
取得套件,或mount到光盤,進入RPMS目錄進行安裝
執行 # rpm –Uvh piranha*
# rpm –Uvh ipchains*
2. 架構:
I. real server群:
真正提供服務的server(web server),在NAT型式下是以內部虛擬網域的形式,設定如同一般虛擬網域中clinet端。
使用網域:192.168.10.0/24
II. virtual server:
作用在導引封包的對外主機,專職負責封包的轉送,不提供服務,但因為在NAT型式下必須對進出封包進行改寫,所以負擔亦重對外eth0:用DHCP方式,測試時 ip:202.39.145.156
eth0:0 :202.39.145.146
對內eth1:192.168.10.12
eth1:0 :192.168.10.1
NAT形式下僅virtual server有真實ip
Real server群則為透過virtual server
3.real server的架設(兩架)
架設方式同一般使用虛擬ip之局域網絡
I. 設網卡ip
server1 :192.168.10.18/24
server2 :192.168.10.28/24
II. 每台server均將default gateway指向192.168.10.1
192.168.10.1為該網域唯一對外之信道,設定在virtual server上,使該網域進出均需通過virtual server
III. 每台server均開啟httpd功能
每台server均開啟httpd功能供web server服務,可以在各real server上放置不同內容之網頁,可由浏覽器觀察其對各real server讀取網頁的情形。
4.virtual server的架設
I. 設網卡ip
對外eth0:ip用DHCP方式取得,測試時ip:202.39.145.156/26
eth0:0 :202.39.145.146/26
對內eth1:192.168.10.12/24
eth1:0 :192.168.10.1/24
II. 設定NAT功能
# echo 1 > /proc/sys/net/ipv4/ip_forward
# echo 1 > /proc/sys/net/ipv4/ip_always_defrag
# ipchains –P forward MASQ
III. 設定piranha
進入X-window中
a. 執行面板à系統àpiranha
b. 設定”整體配置”(Global Settings)
主LVS服務器主機IP: 202.39.145.156
選定網絡地址翻譯(預設)
NAT路徑名稱: 192.168.10.1
NAT 路徑裝置: eth1:0
c. 設定虛擬服務器(Virtual Servers)
添加à編輯
虛擬服務器部分:(Virtual Server)
名稱: (任意取名)
應用: http
協議: tcp
連接埠: 80
地址: 202.39.145.146
裝置: eth0:0
重入時間: 180 (預設)
服務延時: 10 (預設)
加載監控工具: ruptime (預設)
調度策略: Weighted least-connections
持續性: 0 (預設)
持續性屏蔽: 255.255.255.255 (預設)
按下激活
實時服務器部分:(Real Servers)
添加à編輯
名字: (任意取名)
地址: 192.168.10.18
權重: 1 (預設)
按下激活
另一架real server同上,地址:192.168.10.28
d. 控制/監控(Controls/Monitoring)
控制:piranha功能的激活與停止
上述內容設定完成後即可按開始鍵激活piranha
監控器:顯示ipvsadm設定之routing table內容
可立即更新或定時更新
5.備援主機的設定(HA)
單一virtual server的cluster架構virtual server 負擔較大,提供另一主機擔任備援,可避免virtual server的故障而使對外服務工作終止;備援主機隨時處於預備狀態與virtual server相互偵測
I. 備援主機:
eth0: ip 202.30.145.151(用DHCP方式取得)
eth1: ip 192.168.10.2
同樣需安裝piranha,ipvsadm,ipchains等套件
II. 開啟NAT功能(同 4.II.)
III. 在virtual server(202.39.145.156)主機上設定
a.執行piranhaà冗余度
b.按下”激活冗余度”
冗余LVS服務器IP: 202.39.145.151
HEARTBEAT間隔(秒數): 2 (預設)
假定在…秒後進入DEAD狀態: 5 (預設)
HEARTBEAT連接埠: 539 (預設)
c.按下”套用”
d..至”控制/監控”頁
按下”在當前執行層添加PULSE DEAMON”
按下”開始”
IV. 在監空器按下”自動更新”
這樣可由窗口中看到ipvsadm所設定的routing table,並且動態顯示real server聯機情形,若real server故障,該主機亦會從監視窗口中消失。
V. 激活備援主機之pulse daemon
執行# /etc/rc.d/init.d/pulse start
至此,HA功能已經激活,備援主機及virtual server由pulse daemon定時相互探詢,一但virtual server故障,備援主機立刻激活代替;至virtual server 正常上線後隨即將工作交還virtual server。
6.架設過程遭遇之問題與對策:
Q1:float ip 202.39.145.146 (eth0:0)設定後無法聯機
A1:設定的ip與名稱需在dns注冊,若無注冊可在/etc/hosts中加入該主機名稱及ip,即能在浏覽器中用http://202.39.145.146 連上web server
Q2:第一次設定piranha之虛擬服務器部分其地址預設為0.0.0.0修改為指定的ip地址後,關閉再開啟,其地址變為255.255.255.255,更改無效
A2:需直接修改/etc/lvs.cf
將函式virtual {
address = 255.255.255.255 eth0:0 ß改為您設定的地址(202.39.145.146)
active = 1
: (略)}
存盤後離開,回到piranha即可看見虛擬服務器部分其地址設定ok
Q3:重新激活內部real server後外部浏覽器無法讀到該主機網頁
A3:檢查該real server之route table是否default gateway設定消失
執行# route 檢查一下若無default gateway
加上default gateway:執行 # route add default gw 192.168.10.1 dev eth0
Q4:執行中real server斷線後如何重新加入提供服務行列
A4:若有一台real server故障而無法提供服務,該主機會從ipvsadm的routing table中消失(可由監控器中看到變化),由剩下的正常real server提供服務,在排除earl server故障原因後,按piranhaà控制à停止à開始,即可將修復之real server重新加入提供服務行列
Q5:為何使用virtual ip設定(eth0:0/eth1:0)
A5:這是為了提供HA功能,備援virtual server取代故障的virtual server時可以轉換主機使用,在不提供HA功能的情況下亦可以不用virtual ip只用真實ip來設定,cluster的功能相同
Q6:執行piranha 按下開始鍵出現error訊息:
Error: /etc/rc.d/init.d/pulse start 失敗
A6:開啟terminal窗口,在命令列提示符號下執行
# ps aux
可以看到 nanny 這個daemon在位激活piranha的情況下仍存在未被上一次按下”停止”鍵所終止
# kill –9
停止nanny後,再按下piranhaà控制à開始鍵即可重新執行
Q7:加上HA備援主機功能時,按下套用後出現error訊息:
執行/usr/bin/rcp /etc/lvs.cf
[email protected]:/etc/lvs.cf 失敗
Permission denied
A7:這牽涉到rcp指令的使用,可直接用磁盤copy的方式復制/etc/lvs.cf 至備援主機之/etc/lvs.cf ;而lvs.cf檔案本身需要修正(兩個lvs.cf需相同)
: (略)
primary = 202.39.145.156
nat_router = 192.168.10.1 eth1:0
Q4:執行中real server斷線後如何重新加入提供服務行列
A4:若有一台real server故障而無法提供服務,該主機會從ipvsadm的routing table中消失(可由監控器中看到變化),由剩下的正常real server提供服務,在排除earl server故障原因後,按piranhaà控制à停止à開始,即可將修復之real server重新加入提供服務行列
Q5:為何使用virtual ip設定(eth0:0/eth1:0)
A5:這是為了提供HA功能,備援virtual server取代故障的virtual server時可以轉換主機使用,在不提供HA功能的情況下亦可以不用virtual ip只用真實ip來設定,cluster的功能相同
Q6:執行piranha 按下開始鍵出現error訊息:
Error: /etc/rc.d/init.d/pulse start 失敗
A6:開啟terminal窗口,在命令列提示符號下執行
# ps aux
可以看到 nanny 這個daemon在位激活piranha的情況下仍存在未被上一次按下”停止”鍵所終止
# kill –9
停止nanny後,再按下piranhaà控制à開始鍵即可重新執行
Q7:加上HA備援主機功能時,按下套用後出現error訊息:
執行/usr/bin/rcp /etc/lvs.cf
[email protected]:/etc/lvs.cf 失敗
Permission denied
A7:這牽涉到rcp指令的使用,可直接用磁盤copy的方式復制/etc/lvs.cf 至備援主機之/etc/lvs.cf ;而lvs.cf檔案本身需要修正(兩個lvs.cf需相同)
: (略)
primary = 202.39.145.156
nat_router = 192.168.10.1 eth1:0