工做原理:(報文轉發權利的爭奪)bash 路由器開啓VRRP功能後,會根據優先級肯定本身在備份組中的主備角色。主用路由器按期發送VRRP通告報文,通知備份組內的其餘路由器本身工做正常;服務器 備用路由器則啓動定時器等待通告報文的到來。架構 VRRP在不一樣的主用搶佔方式下,主用角色的替換方式不一樣:app l在搶佔方式下,備用收到VRRP通告報文後,會將本身的優先級與通告報文中的優先級進行比較。若是大於,則成爲主用路由器;不然將保持備用狀態。負載均衡 l在非搶佔方式下,只要主用路由器沒有出現故障,備份組中的路由器即便隨後被配置了更高的優先級也不會成爲主用路由器。主路由器故障後,備用路由器會認爲本身是主用路由器,並對外發送VRRP通告報文。備份組內的路由器根據優先級選舉出主用路由器,承擔報文的轉發功能。ide
參考百度百科: 現的是路由器的高可用 輕量級 不須要共享存儲 |
VRRP周邊技術:(主要是交換機中的vrrp) VRRP,堆疊,端口聚合是三種不一樣的技術。堆疊和端口聚合差別巨大。 堆疊適用於接入交換機端口數量不夠的狀況,沒有真正意義上的冗餘效果。 端口聚合適用於單一設備使用多條線路鏈接的狀況,實現線路級別的冗餘。 VRRP適用於於多套相同設備鏈接的狀況,實現設備級別的冗餘。
堆疊簡單粗暴最好啊(堆疊成本高,有錢玩堆疊,沒錢vrrp都用不起。最少要兩臺核心交換機。) 能用堆疊就不要用 hsrp、 vrrp。 能用端口聚合就不要用生成樹。 能用防火牆就不要用路由器。 能在二層解決的問題就不要在三層解決。(能在低層解決的不要留在高層)
堆疊,思科vss,華爲css,h3c irf等等,vrrp如今仍是很經常使用的技術,在Linux中的keeplive也是用vrrp技術的。 CSS(Cluster Switch System),又被稱爲集×××換機系統(簡稱爲CSS或堆疊)。 是將幾臺交換機經過專用的堆疊線纜連接起來,對外呈現爲一臺邏輯交換機。 IRF(Intelligent Resilient Framework,智能彈性架構)是H3C自主研發的軟件虛擬化技術。它的核心思想是將多臺設備經過IRF物理端口鏈接在一塊兒 VSS(Virtual Switch System)Cisco將兩臺物理Catalyst 6500系列交換機虛擬成一臺邏輯交換機的虛擬化技術叫作VSS(虛擬交換系統)。 一個VRRP路由器有惟一的標識:VRID,範圍爲0—255 |
EXAMPLE1:場景說明 【state】段不管寫Master仍是Backup其實都是其次的,是給人閱讀的,主要優先級仍是看【priority】段, 把nopreempt 設置爲不搶奪VIP 修改M,B服務器的 state BACKUP 都爲【備】類型,同時設置 nopreempt 設置爲不搶奪VIP, 而後先啓動M服務器,M服務器會成爲【主】,而後啓動B服務器,因爲M的優先級高【priority 100】 因此B不會搶奪VIP,這時M宕機,B成爲【主】,接着M恢復正常,因爲設置了nopreempt 因此M不會搶奪VIP,B繼續爲【主】而M爲【備】。 同時: [s@S:/home/s]$cat /etc/keepalived/keepalived.conf global_defs { router_id s_app_ha }
vrrp_instance VI_1 { state BACKUP nopreempt interface eth0 virtual_router_id 9 priority 99 advert_int 1 authentication { auth_type PASS auth_pass 0009 } virtual_ipaddress { 10.108.67.9/25 } notify_master "/etc/keepalived/scripts/notify_s_master.sh" notify_backup "/etc/keepalived/scripts/notify_s_backup.sh" }
[s@S:/home/s]$cat /etc/keepalived/scripts/notify_s_backup.sh #!/bin/bash export PATH=$PATH:/sbin:/bin:/usr/sbin:/usr/bin LOG_FILE="/tmp/keepalived.log" echo "`date '+%Y-%m-%d %T'`: start change role to backup" >> "${LOG_FILE}" #run script echo "`date '+%Y-%m-%d %T'`: change role to backup finish" >> "${LOG_FI
[s@S:/home/s]$cat /etc/keepalived/scripts/notify_s_master.sh #!/bin/bash export PATH=$PATH:/sbin:/bin:/usr/sbin:/usr/bin LOG_FILE="/tmp/keepalived.log" echo "`date '+%Y-%m-%d %T'`: start change role to master" >> "${LOG_FILE}" #run script su -l suser -c "/bin/sh /u/H/stop.sh" >> "${LOG_FILE}" su -l suser -c "/bin/sh /u/H/start.sh" >> "${LOG_FILE}" echo "`date '+%Y-%m-%d %T'`: change role to master finish" >> "${LOG_FILE}" ********************************************************************************************************* notify_master:噹噹前節點成爲master時,通知腳本執行任務(通常用於啓動某服務或者記錄日誌,好比nginx,haproxy等) notify_backup:噹噹前節點成爲backup時,通知腳本執行任務(通常用於關閉某服務或者記錄日誌,好比nginx,haproxy等) notify_fault:噹噹前節點出現故障,執行的任務; |
EXAMPLE2 KeepAlived+LVS(DR調度器)實現負載均衡的高可用。 KeepAlived的功能: 1. 實現調度器的HA 2. 對RealServer作健康檢查 3. 動態維護IPVS路由表
LVS: lvs的持久鏈接。 ipvsadm -Ln -c 調度算法用於決定LVS如何選擇後端的RealServer 1、輪叫調度(Round Robin)(簡稱rr) 2、加權輪叫(Weighted Round Robin)(簡稱wrr) 3、最少連接(Least Connections)(LC) |
TIPS:
su -l 和su -的意思同樣(su爲switch user)
應用故障的時候==經過執行外部腳本檢查應用運行狀態,若是異常則中止Keepaliced。
只有主機 keepalived 服務掛了纔會漂移。也就是說重啓keepalived服務會讓vip漂移。