Keepalived配置文件詳解

keepalived
keepalived是集群管理中保證集群高可用的一個服務軟件,其功能類似于heartbeat,用來防止單點故障。
keepalived工作原理
keepalived是以VRRP(Virtual Router Redundancy Protocol,即虛擬路由冗余協議)協議為實現基礎的。
虛擬路由冗余協議,可以認為是實現路由器高可用的協議,即將N臺提供相同功能的路由器組成一個路由器組,這個組里面有一個master和多個backup,master上面有一個對外提供服務的vip(該路由器所在局域網內其他機器的默認路由為該vip),master會發組播,當backup收不到vrrp包時就認為master宕掉了,這時就需要根據VRRP的優先級選舉一個backup當master。這樣的話就可以保證路由器的高可用了。
keepalived主要有三個模塊,分別是core、check和vrrp。core模塊為keepalived的核心,負責主進程的啟動、維護以及全局配置文件的加載和解析。check負責健康檢查,包括常見的各種檢查方式。vrrp模塊是來實現VRRP協議的。
keepalived的配置文件
keepalived只有一個配置文件keepalived.conf,里面主要包括以下幾個配置區域,分別是global_defs、(static_ipaddress、static_routes)、vrrp_script、vrrp_instance和virtual_server。

配置前提:
(1) 各節點時間必須同步;
(2) 確保iptables及selinux不會成為阻礙;

配置文件詳解
#全局定義塊
global_defs { # 郵件通知配置
notification_email { # 故障發生時給誰發郵件通知
email1
email2
}
notification_email_from email # 通知郵件從哪個地址發出
smtp_server host ????????# 通知郵件的smtp地址
smtp_connect_timeout num # 連接smtp服務器的超時時間
lvs_id string ????????????????????????# lvs負載均衡器標識,在一個網絡內,它的值應該是唯一的
router_id string ????????????????????????# 標識本節點的字條串,通常為hostname,故障發生時,郵件通知會用到
}

#本節點的IP和路由信息,一般不用配置
static_ipaddress {
? ? 10.210.214.163/24 brd 10.210.214.255 dev eth0
? ? ...
}
static_routes {?
? 10.0.0.0/8 via 10.210.214.1 dev eth0
? ? ...
}

#VRRP健康檢查,當時檢查失敗時會將vrrp_instance的priority減少相應的值?
vrrp_script?check_nginx?{???? ????????????????
????script?"/root/check_nginx.sh"?? #定義監控nginx的腳本
????interval?2???????????????????????????? #監控時間間隔??
????weight?2????????????????????????????? #失敗之后減少2點
}?
#VRRP實例定義塊
#用來定義vrrp_intance組,使得這個組內成員動作一致
vrrp_sync_group string {
group {
string
string
}
notify_master /path/xx.sh #指定當切換到master時,執行的腳本
netify_backup /path/xx.sh #指定當切換到backup時,執行的腳本
notify_fault "path/xx.sh VG_1" #故障時執行的腳本
notify /path/xx.sh?
smtp_alert #使用global_defs中提供的郵件地址和smtp服務器發送郵件通知
}
vrrp_instance string { #vrrp實例名,可以配置多個,至少要需要修改id,即vrrp組名
state MASTER|BACKUP #實例狀態,MASTER 和 BACKUP兩種,全部大寫。搶占模式下,其中MASTER為工作狀態,BACKUP為備用狀態。當MASTER所在的服務器失效時,BACKUP所在的服務會自動把它的狀態由BACKUP切換到MASTER狀態。當失效的MASTER所在的服務恢復時,BACKUP從MASTER恢復到BACKUP狀態,如果設置了nopreempt這個值不起作用,主備考priority決定
virtual_router_id num #vrrp組名,每個節點設置必須一樣,可選擇IP最后一段使用
? interface string #對外提供服務的網卡接口,實例綁定網卡
???????dont_track_primary ??????#忽略vrrp的interface錯誤(默認不設置)
???????? mcast_src_ip @IP ??????#發送多播包的地址,如果不設置默認使用綁定網卡的primary ip
???????? priority num ??????#節點優先級,取值范圍0~254,MASTER比BACKUP高
???????? advert_int num ??????#MASTER與BACKUP節點間同步檢查的時間間隔,單位為秒?
??????nopreempt ???? #禁止搶占服務。MASTER從掛掉到恢復,不再將服務搶占過來
smtp_alert ??????#有故障時是否激活郵件通知?
??????preempt_delay ??????#搶占延時,默認5分鐘
??? ??? debug ??????#debug級別
??????? lvs_sync_daemon_interface string #負載均衡器之間的監控接口,類似于 HA HeartBeat 的心跳線。但它的機制優于 Heartbeat,因為它沒有“裂腦”這個問題,它是以優先級這個機制來規避這個麻煩的。在 DR 模式中,lvs_sync_daemon_inteface與服務接口interface使用同一個網絡接口。一般不調 authentication { ????#驗證類型和驗證密碼,兩節點必須一致。類型有 PASS、AH ,通常使用PASS,據說AH使用時有問題。驗證密碼為明文,同一vrrp 實例使用相同的密碼才能正常通信
auth_type PASS|AH
auth_pass string
}
virtual_ipaddress { ????????????????????????# 虛擬IP地址池,可有多個IP,每個IP占一行,不需要指定子網掩碼。注意:這個IP必須與我們的設定的vip保持一致。
IP
IP
}
}
#虛擬服務器定義塊
virtual_server (IP PORT)|(fwmark num) { 定義一個虛擬服務器,這個ip是virtual_ipaddress中定義的其中一個,后面一個空格,然后加上虛擬服務的端口號
delay_loop num 健康檢查時間間隔,單位:秒
? lb_algo rr|wrr|lc|wlc|sh|dh|lblc 負載均衡調度算法,互聯網應用常用方式為wlc或rr
? lb_kind NAT|DR|TUN 負載均衡轉發規則。DR|NAT|TUN 3種,一般使用路由(DR)
persistence_timeout num http服務會話保持時間,單位:秒
? protocol TCP|UDP 轉發協議,分為TCP和UDP兩種
persistence_granularity <NETMASK> lvs會話保持粒度
??? virtualhost <string> 檢查的web服務器的虛擬主機(host:頭)????
??? sorry_server<IPADDR> <port> 備用機,所有realserver失效后啟用
real_server @IP PORT { 真實服務器IP和端口,可以定義多個
weight num ????????負載權重,值越大,轉發的優先級越高
? notify_down /path/script.sh 服務停止后執行的腳本

TCP_CHECK { ????????TCP服務有效性檢測
? connect_port num 服務健康檢查的端口
nb_get_retry 3 重連次數
??????????? delay_before_retry 3 重連間隔時間
connect_timeout num 服務連接超時時長,單位:秒
? }

HTTP_GET|SSL_GET { ????????HTTP健康檢查
url { 檢查url,可指定多個
path /
??? ???? digest <string> 頁面的MD5值,不能亂寫
??? ???? status_code 200 檢查的返回狀態碼
}
connect_port num 服務健康檢查的端口
connect_timeout num 服務連接超時時長,單位:秒
nb_get_retry num 服務連接失敗重試次數?
delay_before_retry num 重試連接間隔,單位:秒
}

MISC_CHECK{ ????????????MISC健康檢查,調用腳本檢查
??? misc_path <string> | <quoted-string> 外部腳本路徑
??? misc_timeout 腳本執行超時時間
?? misc_dynamic 如設置該項,則退出狀態碼會用來動態調整服務器的權重,返回0 正常,不修改;返回1,檢查失敗,權重改為0;返回2-255,正常,權重設置為:返回狀態碼-2
????}
}

進階:keepalived+LVS
安裝keeplived和lvs
在keeplived中配置虛擬服務器模塊
簡單說一下DR原理: ?假設A為前端負載均衡服務器, B,C為后端真實服務器。 A接收到數據包以后,會把數據包的MAC地址改成B的(根據調度算法,假設發給B服務器),然后把數據包重新發出去,交換機收到數據包根據MAC地址找到B,把數據包交給B。 這時B會收到數據包,同時驗證請求IP地址,由于數據包里的IP地址是給A的,所以正常情況下B會丟棄數據包,為了防止這種情況,需要在B機器的回環網卡上配置A的IP地址。并設置ARP壓制。在真是服務器上運行腳本
#!/bin/bash
#description : start realserver
VIP=192.168.1.110
/etc/rc.d/init.d/functions
case "$1" in
start)
echo " start LVS of REALServer"
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
;;
stop)
/sbin/ifconfig lo:0 down
echo "close LVS Directorserver"
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
需要修改為你自己的VIP,然后檢查虛擬網卡是否已綁定到回環網卡即可



本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/454777.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/454777.shtml
英文地址,請注明出處:http://en.pswp.cn/news/454777.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

php高等數學,中國大學《高等數學(四)》期末答案高校邦《PHP語言程序設計》見面課答案...

參考答案如下Conversation 2Pretco-A12.9-10.mp3:9、中國 A) Some shoes are missing. B) Itsdelivery is delayed.C) The order is cancelled. D) Some packages are damaged.10、中國 A) Giving an additional discount. B) Renewing the contract.C) Sending the goods by a…

深入剖析ThreadLocal實現原理以及內存泄漏問題

關于ThreadLocalMap<ThreadLocal, Object>弱引用問題&#xff1a; 當線程沒有結束&#xff0c;但是ThreadLocal已經被回收&#xff0c;則可能導致線程中存在ThreadLocalMap<null, Object>的鍵值對&#xff0c;造成內存泄露。&#xff08;ThreadLocal被回收&#xf…

解讀《普通大學應屆畢業生如何成功應聘微軟》

《普通大學應屆畢業生如何成功應聘微軟》這篇文章很有實踐性&#xff0c;我所要提的&#xff0c;是最后一道面試&#xff0c;也就是唐駿本人對作者的面試&#xff0c;這一輪看似平常的面試大有門道。仔細想想&#xff0c;為什么這些問題由唐駿本人來問&#xff0c;他為什么要這…

grep 命令的 12 個實例

2019獨角獸企業重金招聘Python工程師標準>>> 你是否遇到過需要在文件中查找一個特定的字符串或者樣式&#xff0c;但是不知道從哪兒開始&#xff1f;那么,就請grep來幫你吧。 grep是每個Linux發行版都預裝的一個強有力的文件模式搜索工具。無論何種原因&#xff0c;…

php 怎么從memcache緩存數據中統計某一字段總數,php和memcache統計在線人數的方法...

$mc new Memcache ();// 連接memcache$mc->connect("127.0.0.1", 11211);// 獲取 在線用戶 IP 和 在線時間數據$online_members $mc->get(online_members);// 如果為空&#xff0c;初始化數據if (!$online_members) {$online_members array();}// 獲取用戶i…

ubuntu之ufw防火墻

UFW是Ubuntu下的一個主機端的iptables類防火墻配置工具(底層調用iptables來處理)。這個工具的目的是提供給用戶一個可以輕松駕馭的界面&#xff0c;就像包集成和動態檢測開放的端口一樣。雖然功能較簡單&#xff0c;但對桌面型應用來說比較實用&#xff0c;基本常用功能都有&am…

background-size在IE8不兼容問題

background-size在IE8及以下瀏覽器不兼容&#xff1b;要解決的話要用濾鏡&#xff1a; filter: progid: DXImageTransform.Microsoft.AlphaImageLoader( src, sizingMethodscale); 注意&#xff1a;此處src的路徑必須是絕對路徑&#xff0c;相對路徑不可以&#xff01; 當寫完…

程序員 大牛 面試

水 滴 石 穿 -- 找工作記 -- yurking&#xff08;yurkinggmail.com&#xff09; 一日一錢&#xff0c;千日千錢&#xff0c;繩鋸木斷&#xff0c;水滴石穿! 這個東西寫出來有一段時間了&#xff0c;但是一直沒發&#xff0c;想著等有時間了再好好的看一看&#xff0c;改一…

Linux : shell基礎(慕課網Linux達人養成計劃課程筆記)

Shell概述 shell是Linux中的命令行解釋器&#xff0c;為用戶提供了一個向Linux內核發送請求一邊運行程序的界面系統級程序&#xff0c;用戶可以用shell來啟動、掛起、停止甚至編寫一些程序。shell還是一個功能相當強大的編程語言&#xff0c;易編寫&#xff0c;易調試&#xff…

基于matlab的大米,大米顆數計算MATLAB軟件

應用背景大米是人類的主食之一&#xff0c;是稻谷經清理、礱谷、碾米、成品整理等工序后制成的成品。人們購買米大多采用直接稱量的方法&#xff0c;市面上也有許多儀器采用光電傳感器等方式用于生產加工時米粒的計數。然而這樣的方法都比較依賴于設備&#xff0c;不方便人們日…

ubuntu17.04之apt-get源

不要問我這么簡單的也要寫&#xff0c;我只想說在網上百度了一堆源&#xff0c;在筆者這里只有一個能用&#xff0c;悲傷的表情&#xff0c;還是記錄一下吧 這個是清華的apt-get源&#xff0c;適用于ubuntu17.04apt-get源文件目錄 /etc/apt/sources.list &#xff0c;記得先備份…

HttpClient通過Post方式發送Json數據

服務器用的是Springmvc&#xff0c;接口內容&#xff1a; [java] view plaincopy print?ResponseBody RequestMapping(value"/order",methodRequestMethod.POST) public boolean order(HttpServletRequest request,RequestBody List<Order> orders) throws …

openssl、ssh

PKI&#xff1a;公鑰基礎設施&#xff0c;保證服務器向客戶端發送的證書的可靠性&#xff1b;簽證機構&#xff1a;CA注冊機構&#xff1a;RA證書吊銷列表&#xff1a;CRL證書存取庫&#xff1a;CAB威瑞信——verisignGlobalSign賽門鐵克AsiaCOM國際標準化組織定義了證書的標準…

php圖型分析插件,IMAGE縮略圖插件

應用信息 名稱: IMAGE縮略圖插件 售價: (免費) 應用ID: IMAGE 最低要求: Z-BlogPHP 1.5.1 Zero Build 151740版 本: 2 發布日期: 2014-08-27PHP最低版本要求: 5.3 更新日期: 2018-05-21立即購買 加入購物車作者信息 開發者ID: 十五樓的鳥兒 本站用戶組: 管理員 聯系郵箱: adm…

職業生涯步步高

在擔任公司高管的幾年間&#xff0c;我面試過數以百計的各個層面的員工&#xff0c;其中最讓我感到遺憾的一個現象就是很多人有著非常好的素質&#xff0c;甚至有的還是名校的畢業生&#xff0c;因為不懂得去規劃自己的職業&#xff0c;在工作多年后&#xff0c;依然拿著微薄的…

httpd2.2配置文件詳解

一丶Apache常用目錄詳解1) /etc/httpd/conf/httpd.confhttpd.conf是Apache的主配文件&#xff0c;整個Apache也不過就是這個配置文件&#xff0c;里面幾乎包含了所有的配置。有的distribution都將這個文件拆分成數個小文件分別管理不同的參數。但是主要配置文件還是以這個文件為…

2017.9.5 postgresql加密函數的使用

需要安裝的插件的名字&#xff1a;pgcrypto官網地址&#xff1a;https://www.postgresql.org/docs/9.4/static/pgcrypto.htmlstackoverflow:https://stackoverflow.com/questions/8000740/how-do-i-install-pgcrypto-in-postgresql-9-1-on-windows/46046367#46046367https://st…

php 序列化方法,PHP序列化操作方法分析

本文實例講述了PHP序列化操作方法。分享給大家供大家參考&#xff0c;具體如下&#xff1a;序列化就是將變量數據轉換為字符串(跟類型轉換機制不同)&#xff0c;一般應用于存儲數據(文件)&#xff0c;然后在別的情形下恢復(反序列化)序列化&#xff1a;$val serialize($var);f…

Redis入門到精通-Redis數據類型

2019獨角獸企業重金招聘Python工程師標準>>> 登錄Redis數據庫 [rootlocalhost bin]# /usr/local/redis/bin/redis-cli String類型 ? String 數據結構是簡單的key-value類型&#xff0c;value其實不僅是String&#xff0c;也可以是數字&#xff0c;是包含很多種類型…

裝機之 BIOS、EFI與UEFI詳解

在我們的電腦中&#xff0c;都有一塊黑色的小芯片。但是請千萬不要小看它&#xff0c;如果它損壞或者數據錯誤亂套的話&#xff0c;恭喜&#xff0c;如果不會“救回”這個小芯片&#xff0c;那么這臺電腦可以掛閑魚賣零件了…… 這個小芯片是什么呢&#xff1f;對&#xff0c;…