Linux基礎與服務管理課件 第30講 常用集群配置-Keepalived集群_第1頁
Linux基礎與服務管理課件 第30講 常用集群配置-Keepalived集群_第2頁
Linux基礎與服務管理課件 第30講 常用集群配置-Keepalived集群_第3頁
Linux基礎與服務管理課件 第30講 常用集群配置-Keepalived集群_第4頁
Linux基礎與服務管理課件 第30講 常用集群配置-Keepalived集群_第5頁
已閱讀5頁,還剩29頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

延時文字第九章常用集群配置Linux基礎與服務管理主要內容

目錄9.19.29.3LVS高性能負載均衡器HAProxy高可用軟件Keepalived9.3高可用軟件Keepalived9.3.19.3.29.3.3Keepalived簡介Keepalived

安裝及配置Keepalived

基于非搶占模式配置實例

Keepalived是Linux下的一個免費的、輕量級的高可用解決方案。是一個由C語言編寫的路由軟件,主要目標是為Linux系統和基于Linux的基礎架構提供簡單而強大的負載平衡和高可用性設。Keepalived實現了一組檢查器,以根據其健康狀況動態地和自適應地維護和管理負載平衡的服務器池。另一方面,VRRP實現了高可用性協議。VRRP是路由器故障轉移的基礎。此外,Keepalived為VRRP有限狀態機實現了一組掛鉤,提供低級和高速協議交互。為了提供最快的網絡故障檢測,Keepalived實現了BFD協議。VRRP狀態轉換可以考慮BFD提示來驅動快速狀態轉換。9.3.1Keepalived簡介

Keepalived框架可以單獨使用,也可以與其他軟件一起使用。Keepalived最開始是為LVS設計的,主要用來監控集群中各個服務節點的運行狀態。當服務節點出現故障被檢測到,則會被Keepalived從集群中剔除,待恢復后再重新加入集群,期間的工作自動完成,不需要人工干預,需要人工完成的部分僅限于修復出現故障的服務節點。VRRP協議,全稱:VirtualRouterRedundancyProtocol(虛擬路由器冗余協議)。它是一種選擇協議、路由備份協議,是Keepalived最重要的一個功能。可以將多個路由器組成一個虛擬路由器(一主多備),在網絡發生故障時,可以實現透明切換。通過VRRP協議組成的虛擬路由器,通過一個或多個虛擬IP對外提供服務,在內部則是多個物理路由器協同工作,同一時間只有一臺物理路由器對外提供服務,被稱為主路由器。其工作過程大致如下:啟用VRRP功能后,根據優先級確定自己的在虛擬路由器中的角色,優先級高的為主路由器,其他的為備用路由器。主路由器定期向其他備用路由器發送VRRP報文,通告自己的工作狀態正常,備用路由器則會定時接收。12VRRP根據不同的搶占方式,確定是否替換主備狀態:●搶占方式:備用路由器收到報文后,會對比優先級,若大于通告報文中的優先級,則切換為主路由器,否則報持狀態不變;●非搶占方式:主路由器在沒有出現故障的情交下,主路由器與備用路由器將一直保持原有的狀態。Keepalived簡介9.3.19.3.1Keepalived簡介若備用路由器在一定時間內沒有收到主路由器發送的VRRP報文,則認為主路由器無法正常工作,此時備用路由器將會選舉出優先級高的作為主路由器并發送VRRP報文,替代原有主路由器持續工作。了解了VRRP如何工作,下面將介紹Keepalived是如何工作的。但在介紹之前,還需要了解一下它的設計架構及健康檢查機制。Keepalived大致分兩層結構:用戶空間和內核空間。其大多數核心功能均在用戶空間,而內核空間中的兩個模塊,IPVS主要實現負載均衡,NETLINK則主要提供高級路由及其他相關的網絡功能。圖9-27是官方給出的Keepalived體系結構拓撲圖。3Keepalived簡介3Keepalived提供了三個守護進程,分別負責不同的功能:●父進程:負責fork子進程并對其進行監控。●VRRP子進程:負責VRRP框架。●鍵康檢查子進程:負責健康檢查。Keepalived依賴于VRRP協議實現高可用,同時還實現基于TCP/IP協議棧的多層(3層、4層、5/7層)的健康檢查機制,能夠提供服務節點檢查及故障隔離的功能。其運行機制大致如下:●網絡層:主要通過ICMP協議,向服務節點發送ICMP數據包(類似ping命令的方式),若無響應,則判定為故障節點并將其從集群中移除。●傳輸層:主要通過TCP協議,向后端發起一個TCP連接請求,若無響應,則判定為故障節點并將其從集群中移除。●應用層:主要根據用戶的一些設定來判斷節點是否正常,若不正常,則判定為故障節點并將其從集群中移除。常用的方式即使用腳本進行檢測。39.3.1Keepalived簡介9.3.1Keepalived一般會同時運行在兩臺或更多服務器上,同時提供服務且存在主從之分。實際提供服務的只有主服務節點。其工作原理與VRRP類似。Keepalived會根據配置文件中定義的優先級或節點的主從標記,確定哪一臺服務器中運行的服務可以成為主節點并使用VIP(虛擬IP)對外提供服務,其他的則成為從節點。若Keepalived的主節點出現故障停止提供服務或所在的服務器宕機時,會將主節點移除并在從節點中選舉出優先級較高的節點作為新的主節點并接管VIP繼續提供服務,保證服務的不間斷。待故障節點恢復后,再重新加入并重新確定是否需要切換主從關系。3Keepalived簡介9.3.2Keepalived安裝及基礎配置

9.3.2Keepalived安裝及基礎配置Keepalived安裝比較簡單,安裝的方式主要分為兩種:●可以使用YUM源直接進行安裝。如下所示。[root@keepalive-master~]#yuminstall-ykeepalived如果出現圖中這種重復的語句就使用rm-F/var/run/yum.pid命令強制關閉yum再重新安裝,下圖所示。19.3.2Keepalived安裝及基礎配置●如果需要使用最新版本,也可以在官網:/下載最新的版本編譯安裝。安裝(此處使用YUM源進行安裝)過程,Keepalived的配置(/etc/keepalived/keepalived.conf)主要分為以下七個部分,也可以在/usr/share/doc/keepalived-<版本號>/samples目錄下查看官方提供的配置文件示例或使用命令“mankeepalived.conf”查看相關參數及說明。由于參數較多且限于篇幅,下面將簡單介紹其主要功能及常用的配置參數:201global_defs02static_ipaddress和static_routes定義全局設置,包括如發送消息的郵件地址、SMTP服務器的IP、SMTP服務器的超時時間、主機識別字符串、VRRP多播地址等。●notification_email:故障時接收郵件的地址,可以多個,每行一個;●notification_email_from:郵件發送地址;●smtp_server:SMTP服務器地址;●smtp_connect_timeout:SMTP連接超時時間;●router_id:主機識別標志。出現故障需要發送郵件時,通知郵件會使用到它。●vrrp_skip_check_adv_addr:跳過報文檢查。當收到的報文與上一個報文來自同一個路由器時有效;●vrrp_strict:vrrp協議嚴格模式,嚴格遵守vrrp協議;●vrrp_garp_interval:網卡上APR消息之間的延遲;●vrrp_gna_interval:網卡上發送的未經請求的NA消息之間的延遲。Keepalived安裝及基礎配置定義靜態IP地址和路由。如果服務器上已經定義且這些服務器具有網絡連接,則不需要此部分。3.vrrp_sync_group9.3.2Keepalived安裝及基礎配置定義一起故障轉移的VRRP備份VRRP同步組。●group:vrrp_instance實例名,可以多個,每行一個;●notify_master:狀態轉為MASTER時,執行的腳本;●notify_backup:狀態轉為BACKUP時,執行的腳本;●notify_fault:狀態轉為FAULT時,執行的腳本;●notify:當出現狀態轉換時,即會執行的腳本。在notify_*腳本之后執行。●smtp_alert:狀態發生轉換時,觸發郵件發送。相關的信息在global_defs中定義;●global_tracking:所有VRRP共享相同的跟蹤配置。4.vrrp_instance5.vrrp_script為VRRP同步組的內部或外部網絡接口的成員定義可移動的虛擬IP地址,在狀態切換時會漂移到其他節點上繼續提供服務。每個VRRP實例必須具有唯一的“virtual_router_id”值,標志著哪些主/備服務器可以使用同一個虛擬IP地址提供服務。即同一“vrrp_instance”中,此值在MASTER或BACKUP節點上必須一致。還可以指定狀態在切換為MASTER、BACKUP和FAULT時,是否觸發SMTP警報。●state:節點的狀態。可為:MASTER、BACKUP。單節點時,默認為MASTER,當有多個節點時,選舉出優先級最高的成為MASTER。●interface:發送vrrp報文的網卡。●virtual_router_id:虛擬路由器標識。全局唯一且范圍在0-255之間的整數數字。同一個實例中,主從節點中的此值必須一致。●priority:優先級數值。值越大,優先級越高。若為MASTER,建議值設置比其他節點高出至少50。●advert_int:VRRP廣告時間間隔(以秒為單位)(例如0.92)(默認使用)。●authentication:設置認證信息。●virtual_ipaddress:虛擬IP地址,可以多個,每行一個。當狀態在MASTER和BACKUP之間切換時,添加或刪除的IP地址。Keepalived安裝及基礎配置定義跟蹤腳本。主要用于健康檢查。當需要根據業務進程的運行狀態決定是否需要進行主備切換時,可以通過編寫腳本對業務進程進行檢測監控。主要用于vrrp_instance和vrrp_sync_group部分。●script:執行腳本的路徑;●interval:每兩次調用執行腳本的時間間隔;●timeout:腳本執行的超時時間;●weight:權重值。按此權重調整優先級,默認為0。6.virtual_server_group9.3.2Keepalived安裝及基礎配置定義虛擬服務器組,允許真實服務器成為多個虛擬服務器組的成員,每行一個。成員格式為:IP地址或范圍和端口號,以空格分隔。7.virtual_server定義用于負載平衡的虛擬服務器,該服務器由多個真實服務器組成。后接虛擬IP地址和端口號,以空格分隔。●delay_loop:輪詢的延遲時間;●lb_algo:LVS負載均衡調度算法。官方給出的可選項為:rr、wrr、lc、wlc、lblc、sh、dh;●lb_kind:LVS轉發模式。官方給出的可選項為:NAT、DR、TUN;●persistence_timeout:LVS會話超時時間,默認6分鐘;●protocol:第四層網絡協議,默認為TCP。官方給出的可選項為:TCP、UDP、SCTP;●real_server:定義LVS真實服務器節點。有多少個真實服務器節點,則需要多少段;●weight:real_server中使用。權重值,默認為1;●inhibit_on_failure:real_server中使用。當鍵康檢查失敗時,權重值會被重置為0;●notify_up:real_server中使用。當健康檢查認為服務為UP狀態時,執行的腳本;●notify_down:real_server中使用。當健康檢查認為服務為DOWN狀態時,執行的腳本;●HTTP_GET:real_server中使用。健康檢查定義,官方給出的可選項為:HTTP_GET、SSL_GET、TCP_CHECK、SMTP_CHECK、DNS_CHECK、MISC_CHECKKeepalived安裝及基礎配置9.3.2Keepalived安裝及基礎配置9.3.3Keepalived基于非搶占模式配置實例

本節內容,將演示如何配置Keepalived的非搶占模式,同時會涉及到LVS的相關內容。演示中使用了四臺服務器,兩臺作為Keepalived及ipvsadm節點,兩臺做為后端的真實服務器。ipvsadm在演示中主要用于查看LVS集群的相關信息,而具體的配置則是通過Keepalived配置文件直接進行配置管理的。即實際的演示內容是Keepalived+LVS的集群,關于LVS后端真實服務器的配置,由于在前面的章節中已經有過詳細步驟,因此本小節將不再進行演示。同時所有服務器已完成了一些常用的初始化內容,如設置主機名、關閉SELinux、測試域名解析等,后續不再進行說明。Keepalived在運行過程中,可以配置搶占和非搶占模式。兩者的區別如下:●搶占模式:即在一個Keepalived集群中同時存在MASTER和BACKUP節點,且MASTER節點的優先級比BACKUP節點高,當MASTER節點故障時,在BACKUP節點中選舉出優先級最高的節點作為新的MASTER繼續提供服務并搶占VIP,但是當原來的MASTER恢復后,會將VIP搶回。9.3.3

●非搶占模式:即在一個Keepalived集群中只存在BACKUP節點,選舉出優先級最高的成為MASTER提供服務,當作為MASTER節點故的服務器障時,在其他BACKUP節點中選舉出優先級最高的節點作為新的MASTER繼續提供服務并搶占VIP,但是在原來作為MASTER節點的服務器恢復后,不會搶回VIP,而是作為一個BACKUP節點加入到集群中。可以通過兩種方式設置非搶占模式,第一種即在優先級高的節點的配置文件中添加參數:nopreempt;第二種則是將所有BACKUP節點的優先級設置為相同的值。了解了搶占與非搶占模式的區別,在Keepalived的運行中,還有一種被稱為“腦裂”的問題,它是由于配置不當或MASTER/BACKUP節點之間的檢測出現異常,導致VIP同時在MASTER節點與BACKUP節點出現引起的,會導致出現資源爭搶、同時讀寫、數據損壞等問題。Keepalived+LVS的集群主要分為兩部分:后端的真實服務器(RealServer)和前端的負載調度節點(LoadBalancer)。演示所需的服務器信息,如表9-5所示。9.3.3

9.3.3

表9-5Keepalived+LVS集群配置信息HOSTNAMEIPADDRESSROLESkeepalived-backup1VIP:00,DIP:28Keepalived,ipvsadmkeepalived-backup2VIP:00,RIP:04Keepalived,ipvsadmkeepalived-nginx1VIP:00,RIP:05Nginxkeepalived-nginx2VIP:00,RIP:17Nginx以上服務器對應的架構圖,如圖9-28所示。

圖9-28Keepalived+LVS集群架構圖9.3.3Keepalived基于非搶占模式配置實例[root@keepalived-nginx1~]#yuminstall-ynginx[root@keepalived-nginx1~]#systemctlenablenginx.service[root@keepalived-nginx1~]#systemctlstartnginx.service[root@keepalived-nginx1~]#firewall-cmd--add-port=80/tcp[root@keepalived-nginx1~]#echo"keepalived-nginx105">/usr/share/nginx/html/index.html安裝并配置完成后,在瀏覽器中訪問,若出現如圖9-29所示的內容,則說明Nginx服務已安裝成功并能正常提供服務。圖9-29Nginx服務驗證1.配置后端真實服務器對Nginx1服務器配置如下:1)登錄keepalived-nginx1,安裝Nginx服務并進行簡單配置(使用默認站點即可),方便演示過程中查看具體的效果。需要執行的命令如下。9.3.3Keepalived基于非搶占模式配置實例2)登錄keepalived-nginx1,由于涉及到LVS,因此還需要配置虛擬IP地址及路由規則、抑制ARP設置等,命令如下所示(具體的演示步驟,可以參考前面相關小節)。[root@keepalived-nginx1~]#ifconfiglo:000broadcast00netmask55up[root@keepalived-nginx1~]#routeadd-host00devlo:0[root@keepalived-nginx1~]#echo"1">/proc/sys/net/ip.>v4/conf/lo/arp_ignore[root@keepalived-nginx1~]#echo"2">/proc/sys/net/ipv4/conf/lo/arp_announce[root@keepalived-nginx1~]#echo"1">/proc/sys/net/ipv4/conf/all/arp_ignore[root@keepalived-nginx1~]#echo"2">/proc/sys/net/ipv4/conf/all/arp_announce3)配置永久生效的防火墻規則,允許Nginx服務持續對外提供服務。命令如下所示。[root@keepalived-nginx1~]#firewall-cmd--permanent--add-port=80/tcp[root@keepalived-nginx1~]#firewall-cmd--reload9.3.3Keepalived基于非搶占模式配置實例若能通過“firewall-cmd--list-all”查看到如圖9-30所示的內容,則說明防火墻規則已生效。圖9-30添加防火墻規則[root@keepalived-nginx2~]#yuminstall-ynginx[root@keepalived-nginx2~]#systemctlenablenginx.service[root@keepalived-nginx2~]#systemctlstartnginx.service[root@keepalived-nginx2~]#firewall-cmd--add-port=80/tcp[root@keepalived-nginx2~]#echo"keepalived-nginx217">/usr/share/nginx/html/index.html4)登錄keepalived-nginx2,安裝Nginx服務并做簡單配置(使用默認站點即可),方便演示過程中查看具體的效果。需要執行的命令如下。9.3.3Keepalived基于非搶占模式配置實例安裝并配置完成后,在瀏覽器中訪問,若出現如圖9-31所示的內容,則說明Nginx服務已安裝成功并能正常提供服務。圖9-31Nginx服務驗證5)登錄keepalived-nginx2,由于涉及到LVS,因此還需要配置虛擬IP地址及路由規則、抑制ARP設置等,命令如下所示(具體的演示步驟,可以參考前面相關小節)。[root@keepalived-nginx2~]#ifconfiglo:000broadcast00netmask55up[root@keepalived-nginx2~]#routeadd-host00devlo:0[root@keepalived-nginx2~]#echo"1">/proc/sys/net/ipv4/conf/lo/arp_ignore[root@keepalived-nginx2~]#echo"2">/proc/sys/net/ipv4/conf/lo/arp_announce[root@keepalived-nginx2~]#echo"1">/proc/sys/net/ipv4/conf/all/arp_ignore[root@keepalived-nginx2~]#echo"2">/proc/sys/net/ipv4/conf/all/arp_announce9.3.3Keepalived基于非搶占模式配置實例若能通過“firewall-cmd--list-all”查看到如圖9-32所示的內容,則說明防火墻規則已生效。圖9-32添加防火墻規則6)配置永久生效的防火墻規則,允許Nginx服務持續對外提供服務。命令如下所示。[root@keepalived-nginx2~]#firewall-cmd--permanent--add-port=80/tcp[root@keepalived-nginx2~]#firewall-cmd--reload9.3.3Keepalived基于非搶占模式配置實例若能通過“firewall-cmd--list-all”查看到如圖9-32所示的內容,則說明防火墻規則已生效。圖9-32添加防火墻規則9.3.3Keepalived基于非搶占模式配置實例2.配置LoadBalanc1)登錄keepalived-backup1,分別安裝keepalived和ipvsadm。命令如下。[root@keepalived-backup1~]#yuminstall-ykeepalivedipvsadm[root@keepalived-backup1~]#systemctlenablekeepalived.service[root@keepalived-backup1~]#systemctlstartkeepalived.service若通過“keepalived-v”與“ipvsadm-L-n”命令可查看到如圖9-33所示的內容,則說明安裝成功(此時由于未修改keepalived的配置文件,ipvsadm顯示的信息為默認配置的信息)圖9-33keepalived與ipvsadm驗證9.3.3Keepalived基于非搶占模式配置實例2)登錄keepalived-backup1,先ifconfig查看網卡名稱:9.3.3Keepalived基于非搶占模式配置實例!ConfigurationFileforkeepalived

global_defs{notification_email{notification_emal@}notification_email_fromAlexandre.Cassen@firewall.locsmtp_serversmtp_connect_timeout30router_idLVS_DEVELvrrp_skip_check_adv_addrvrrp_strictvrrp_garp_interval0vrrp_gna_interval0}

vrrp_instanceVI_1{stateBACKUPinterfaceeth0virtual_router_id51priority100nopreemp改成相應的網卡名修改配置文件:/etc/keepalived/keepalived.conf,將其中的內容修改為如下所示的內容(建議根據實際情況進行修改)。9.3.3Keepalived基于非搶占模式配置實例advert_int1authentication{auth_typePASSauth_pass1111}virtual_ipaddress{00}}virtual_server0080{delay_loop1lb_algorrlb_kindDRpersistence_timeout0protocolTCPreal_server0580{weight1HTTP_GET{url{path/}connect_timeout3nb_get_retry3delay_before_retry3}}real_server1780{weight1HTTP_GET{url{path/}connect_timeout3nb_get_retry3delay_before_retry3}}}9.3.3Keepalived基于非搶占模式配置實例3)登錄keepalived-backup1,配置永久生效的防火墻規則,允許各節點間通過VRRP協議通信,以實現Keepalived各節點之間通信及允許其他主機可以通過該服務器的80端口訪問后端Nginx服務,命令如下所示。[root@keepalived-backup1~]#firewall-cmd--permanent--direct--add-ruleipv4filterINPUT0--in-interfaceeth0--destination8--protocolvrrp-jACCEPT[root@keepalived-backup1~]#firewall-cmd--permanent--direct--add-ruleipv4filterOUTPUT0--in-interfaceeth0--destination8--protocolvrrp-jACCEPT[root@keepalived-backup1~]#firewall-cmd--permanent--add-port=80/tcp[root@keepalived-backup1~]#firewall-cmd--reload此時,若通過“firewall-cmd--list-all”命令,只能是看到關于80端口的信息,若需要查看通過“--direct”參數添加的規則,則需要使用“firewall-cmd--direct--get-all-rules”命令。如圖9-34所示。圖9-34添加防火墻規則9.3.3Keepalived基于非搶占模式配置實例4)登錄keepalived-backup1,重啟keepalived服務即可。[root@keepalived-backup1~]#systemctlrestartkeepalived.service

重啟成后,再次使用“ipvsadm-L-n”命令,可以查看到其中的信息已經發生了變更,如圖9-35所示。圖9-35ipvsadm信息5)登錄keepalived-backup2,分別安裝keepalived和ipvsadm。命令如下。[root@keepalived-backup2~]#yuminstall-ykeepalivedipvsadm[root@keepalived-backup2~]#systemctlenablekeepalived.service[root@keepalived-backup2~]#systemctlstartkeepalived.service若通過“keepaliv

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論