piranha
利用紅帽 Piranha 方案實現 WEB 負載均衡
準備環境:iptables和selinux均是關閉的。
desktop12.example.com
desktop41.example.com(這2臺和之前的一樣是高可用的HA,假設這2臺是真機,也可以是虛擬機,只要你的電腦內存足夠大)
desktop58.example.com
desktop67.example.com(這2臺是負載均衡的real server,這2臺是虛擬機)
高可用的2臺主機將讀物請求發送給real server,之前我們利用hearbeat的時候需要配制好多文件,而紅帽的這個套件你只需要在圖形中添加,然后會自動在/etc/sysconfig/ha/ 下有一個lvs.cf的文件,你在圖形上的操作將會被記錄到此文件中。
Piranha 方案原理結構描述:Piranha 方案是基于 LVS 基礎上設計的一套負載均衡高可用解決方案.
LVS 運行在一對有相似配置的計算機上: 一個作為活動 LVS Router(Active LVS Router), 一個作為備份 LVS Router(Backup LVS Router)。 活動 LVS Router 服務有兩個角色: (1)均衡負載到真實服務器上。 (2)檢查真實服務器提供的服務是否正常。 備份 LVS Router 用來監控活動的 LVS Router,以備活動的 LVS Router 失敗時由備份 LVS Router 接管。(兩個LVS Router活動的和備份的都是高可用HA)
Pulse: Pulse 進程運行在活動 LVS Router 和備份 LVS Router 上。 在備份 LVS Router 上,pulse 發送一個心跳(heartbeat)到活動 LVS Router 的公網接口上以檢查活動 LVS Router 是否正常。 在活動 LVS Router 上,pulse 啟動 lvs 進程并響應來自于備份 LVS Router 的心跳。(pulse是安裝在HA2個高可用上的。eg:本實驗中針對的是:desktop12.example.com和desktop41。example.com)
lvsd: lvs 進程調用 ipvsadm 工具去配置和維護 IPVS 路由表,并為每一個在真實服務器
上的虛擬服務啟動一個 nanny 進程。 (自動給你去維護,不用你自己去添加ipvs的路由信息等)
nanny:每一個 nanny 進程去檢查真實服務器上的虛擬服務狀態,并將故障情況通知 lvs進程。假如一個故障被發現,lvs 進程通知 ipvsadm 在 IPVS 路由表中將此節點刪除。(nanny監控的是的realserver即real server:desktop58.example.com和desktop67.example.com)
步驟:(1)desktop12.example.com(設為主HA)
desktop41.example.com(HA)
yum install piranha -y(安裝了這個包之后你會發現提供了/etc/init.d/piranha-gui 和/etc/init.d/pusle ,而且也要安裝 yum install ipvsadm -y)
安裝了包之后會增加一個piranha這個用戶:piranha-passwd是用來修改用戶piranha的密碼。在你登錄的時候使用的。
/etc/init.d/piranha-gui restart之后
netstat -antlp | grep :3636開啟了。。
(2)訪問:http://desktop12.example.com:3636
login
username:pirnaha
password: redhat(你剛才設置的!)
(3)進入圖形界面:
點擊GLOBAL SETTINGS:
Primary server public IP: 192.168.0.12 (主LVS的公網IP)
Primary server private IP:(內部IP用于心跳檢測)
(May be blank)
Use network type: NAT Direct Routing Tunneling(不選擇)(LVS類型)
(Current type is: direct )
點擊:ACCEPT
(以上配制的是主的HA高可用)
點擊REDUNDANCY->Enable:(配置備用的HA高可用)
Redundant server public IP: 192.168.0.41(備份LVS公網)
Heartbeat interval (seconds): 2(自己設置心跳間隔(秒)時間)
Assume dead after (seconds): 10(多長時間確立死亡轉移服務)
Heartbeat runs on port: 50001(該端口不可以被占用,指的是hearbeat運行服務端口)
Monitor NIC links for failures:選擇
Syncdaemon: (同步)選擇
點擊:ACCEPT(保存設置)
點擊VIRTUAL SERVERS:進入點擊ADD->EDIT
Name:web (LVS服務名可以自己定義)
Application port:80 (虛擬服務端口)
Protocol: tcp (虛擬服務協議)
Virtual IP Address:192.168.0.1(虛擬IP)
Virtual IP Network Mask:255.255.255.255(子網掩碼)
Sorry Server: (可不寫)
Firewall Mark: (可不寫)
Device: br0:0(IP綁定的設備接口。與你選擇的HA高可用的服務器有關,如果你選擇的是真機做HA高可用,那么這里填寫br0:0,要是你選擇的是虛擬機做HA的話,那么這里寫成:eth0:0)
Re-entry Time: 15(移動RS后,重新加入的時間)
Service timeout: 6(RS失效多久后從路由中刪除)
Quiesce server: No
Load monitoring tool: none(監視各服務器負載的工具,要是你選擇的是rup和ruptime,那么你需要在你的real server中安裝你選擇的命令。)
Scheduling: LVS調度算法選擇八種調度算法中的一種(Round robin)
Persistence: (使用持久穩固鏈接的時間)
Persistence Network Mask: Unused
點擊:ACCEPT
之后不退出,接著點擊REAL SERVER:ADD-->EDIT
Name: desktop67.example.com
Address: 192.168.0.67
Port: 80
Weight: 1
Name: desktop58.example.com
Address: 192.168.0.58
Port: 80
Weight: 1
點擊ACCEPT
最后你要點擊Virtual Servers 服務up起來。否則會報錯(Starting pulse: pulse: no active lvs services defined in /etc/sysconfig/ha/lvs.cf)。點擊VIRTUAL SERVICES-->((DE)ACTIVATE)
接著點擊EDIT-->REAL SERVER 選中你剛才添加的2個real server分別-->((DE)ACTIVATE)
注意你的上述修改都在:
cat /etc/sysconfig/ha/lvs.cf可以看到
(4)為了保持2個HA高可用服務器的設置相同:
scp /etc/sysconfig/ha/lvs.cf desktop41.example.com:/etc/sysconfig/ha/
(5)在desktop12.example.com上:
/etc/init.d/pulse start(注意這里的hearbeat是要關閉的)
tail -f /var/log/message可以看到lvs啟動。
status
ipvsadm -l可以看到策略。
同樣在desktop41.example.com上:
/etc/init.d/pulse start(注意這里的hearbeat也是要關閉的)
tail -f /var/log/message可以看到lvs啟動,state=BACKUP(備用)
(6)在desktop58.example.com
desktop67.example.com設置sysctl -p是否有 net.ipv4.conf.eth0.arp_announce = 2
net.ipv4.conf.eth0.arp_ignore = 1
分別在2臺real server上: ifconfig eth0:0 192.168.0.1 netmask 255.255.255.255
route add -host 192.168.0.1 dev eth0:0
/etc/init.d/httpd restart
(7)測試:
http://192.168.0.1
如果正常的話應該是desktop58.example.com和desktop67.example.com輪詢出現,倘若出現只停留在你的一個頁面,不管你如何刷都不行,原因是因為緩存的問題,在desktop12.example.com你需要先把主的HA/etc/init.d/pusle stop ,在備用的高可用的服務器上:/etc/init.d/pusle start(此時會正常訪問,在desktop41上你可以通過:ipvsadm -l 查看調度列表,當你在將desktop12重啟的時候不會自動轉向主HA的,除非你將desktop41關閉,才會自動轉向desktop12,arp -a/arp -e是用來查看緩存的)
同樣的你可以添加vsftpd服務作為期中的一個,添加的過程如上述添加httpd服務一樣的,同樣的你可以產成如下代碼:
?
轉載于:https://blog.51cto.com/sushan/739189
總結