日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

基于heartbeat v1+ldirectord实现LVS的高可用

發(fā)布時(shí)間:2025/3/21 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于heartbeat v1+ldirectord实现LVS的高可用 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

高可用集群簡(jiǎn)介

高可用集群,即High Availability Cluster,其主要作用就是實(shí)現(xiàn)對(duì)服務(wù)器的故障檢測(cè)和資源切換的自動(dòng)化,盡量縮短由于服務(wù)器停止工作而造成的業(yè)務(wù)中斷時(shí)間。服務(wù)器在運(yùn)行過(guò)程中經(jīng)常會(huì)由于計(jì)算機(jī)硬件或者軟件的原因造成該服務(wù)器停止向外提供服務(wù),在高可用集群軟件的幫助下,備用節(jié)點(diǎn)可以自動(dòng)檢測(cè)到主節(jié)點(diǎn)的故障并將主節(jié)點(diǎn)上的資源轉(zhuǎn)移過(guò)來(lái),并立即向外提供服務(wù),實(shí)現(xiàn)業(yè)務(wù)的自動(dòng)切換。


HA的框架

? ? 最下層是基礎(chǔ)事務(wù)層(Messaging Layer),主要用于傳遞集群事務(wù)信息、各節(jié)點(diǎn)的心跳信息,也包括了CRM層所有需要傳遞的信息,該類服務(wù)啟動(dòng)之后都監(jiān)聽(tīng)在某一廣播地址或組播地址上。在該層上解決的方案有heartbeat,corosync,cman(openais),這些服務(wù)需要運(yùn)行在每一個(gè)節(jié)點(diǎn)上。

? ? Membership,主要用于管理這個(gè)集群的拓?fù)浣Y(jié)構(gòu),并且將這個(gè)拓?fù)浣Y(jié)構(gòu)共享給上層的CRM做出相應(yīng)的決策。這個(gè)層更多地用于管理當(dāng)前集群的成員及成員的角色,包括決定哪一個(gè)節(jié)點(diǎn)為DC(Designated Coordinator協(xié)調(diào)員,一個(gè)集群中僅有一個(gè)DC

? ? Resource Allocation,主要實(shí)現(xiàn)對(duì)資源的管理,包括定義資源,資源分組,資源約束。監(jiān)控資源在某一個(gè)節(jié)點(diǎn)上的運(yùn)行狀況。其中policy engine用于做出集群事務(wù)策略,這個(gè)模塊僅運(yùn)行在DC上,Transition Engine模塊用于執(zhí)行policy engine做出的決策。該層的資源管理器(CRM)對(duì)資源的具體操作通過(guò)LRM(Local Resource Manager)實(shí)現(xiàn),而LRM主要是通過(guò)執(zhí)行/etc/init.d目錄下的腳本完成響應(yīng)的工作。這層的實(shí)現(xiàn)方案有haresources(heartbeat v1),crm(heartbeat?v2),pacemaker ??(heartbeat?v3),rgmanager 。


配置高可用集群的注意事項(xiàng):

1、集群中的各節(jié)點(diǎn)時(shí)間必須保持同步。

2、節(jié)點(diǎn)與節(jié)點(diǎn)之間使用名稱相互通信(配置/etc/hosts實(shí)現(xiàn))

3、ssh密鑰認(rèn)證實(shí)現(xiàn)無(wú)障礙通信

4、提供仲裁設(shè)備(ping node)


基于heartbeat v1+haresources實(shí)現(xiàn)LVS高可用集群

實(shí)驗(yàn)中LVS的模型為NAT模型,通過(guò)heartbeat v1+haresource對(duì)Director實(shí)現(xiàn)高可用。使用ldirectord對(duì)后方的Real Server進(jìn)行健康狀況的監(jiān)控。

實(shí)驗(yàn)環(huán)境:

時(shí)間服務(wù)器:192.168.1.118

2臺(tái)Director(node1,node2):VIP:192.168.1.200,DIP:192.168.2.200

Real Server1:192.168.2.12

Real Server2:192.168.2.6

配置LVS環(huán)境

在各Real Server上配置網(wǎng)關(guān)

[root@node1?~]#?ip?route?add?default?via?192.168.2.200

在Director上開(kāi)啟轉(zhuǎn)發(fā)功能(主備節(jié)點(diǎn))

[root@vm1?~]#?echo?1?>?/proc/sys/net/ipv4/ip_forward


時(shí)間同步

時(shí)間服務(wù)器上:

[root@vm1?~]#?vim?/etc/ntp.conf? restrict?192.168.0.0?mask?255.255.0.0?nomodify?notrap???#僅允許本網(wǎng)段的進(jìn)行時(shí)間同步 ...... server?cn.pool.ntp.org??????????????????#指定更高級(jí)別的時(shí)間服務(wù)器 server?0.cn.pool.ntp.org server?127.127.1.0??????????????????????#若訪問(wèn)不了前面幾個(gè)服務(wù),則使用本地的系統(tǒng)時(shí)間作為標(biāo) fudge?127.127.1.0?stratum?10????????????#準(zhǔn)時(shí)間提供給客戶端[root@vm1?~]#?ntpstat synchronised?to?NTP?server?(202.118.1.81)?at?stratum?3?time?correct?to?within?84?mspolling?server?every?512?s


集群中的各節(jié)點(diǎn):

[root@node1?~]#?vim?/etc/ntp.conf? ...... server?192.168.2.8[root@node1?ha.d]#?ntpstat synchronised?to?NTP?server?(192.168.2.8)?at?stratum?4???????????#時(shí)間已同步


配置/etc/hosts,使雙方能基于主機(jī)名相互通信

[root@node2?~]#?vim?/etc/hosts 192.168.1.116???node1 192.168.1.117???node2


ssh密鑰認(rèn)證,雙方無(wú)障礙通信

[root@node1?~]#?ssh-keygen?-t?rsa?-P?'' [root@node1?~]#?ssh-copy-id?-i?~/.ssh/id_rsa.pub?root@node2[root@node2?~]#?ssh-keygen?-t?rsa?-P?'' [root@node2?~]#?ssh-copy-id?-i?~/.ssh/id_rsa.pub?root@node1

配置完無(wú)障礙通信之后,測(cè)試下兩邊時(shí)間是否同步

[root@node1?ha.d]#?ssh?node2?'date';?date Wed?Aug??5?23:49:43?CST?2015 Wed?Aug??5?23:49:43?CST?2015


安裝對(duì)應(yīng)的包,編輯配置文件

在集群的每個(gè)節(jié)點(diǎn)中安裝這些軟件包。

[root@node1?heartbeat]#?yum?install?perl-TimeDate?PyXML?libnet?net-snmp-libs?heartbeat-ldirectord-2.1.4-12.el6.x86_64.rpm? [root@node2?heartbeat]#?rpm?-ivh?heartbeat-2.1.4-12.el6.x86_64.rpm?heartbeat-pils-2.1.4-12.el6.x86_64.rpm?heartbeat-stonith-2.1.4-12.el6.x86_64.rpm

heartbeat-ldirectord程序包主要是提供ldirectord程序。ldirectord程序在啟動(dòng)時(shí)自動(dòng)建立IPVS表,然后監(jiān)視集群節(jié)點(diǎn)的健康情況,在發(fā)現(xiàn)失效節(jié)點(diǎn)時(shí)將其自動(dòng)從IPVS表中移除。

主配置文件:/etc/ha.d/ha.cf

認(rèn)證密鑰:/etc/ha.d/authkeys

用于定義資源的文件:/etc/ha.d/haresources

ldirectord的配置文件:/etc/ha.d/ldirectord.cf

默認(rèn)情況下/etc/ha.d目錄中沒(méi)有上述的這幾個(gè)文件,需要復(fù)制樣例文件到此目錄下,然后修改/etc/ha.d/authkeys文件的權(quán)限為400或600,若權(quán)限大于這個(gè)值,heartbeat 將無(wú)發(fā)啟動(dòng)。

[root@node1?ha.d]#?cp?/usr/share/doc/heartbeat-2.1.4/{ha.cf,haresources,authkeys}?./?-p [root@node1?ha.d]#?chmod?600?authkeys [root@node1?ha.d]#?cp?/usr/share/doc/heartbeat-ldirectord-2.1.4/ldirectord.cf?/etc/ha.d


編輯主配置文件/etc/ha.d/ha.cf(其他都使用默認(rèn)配置)

logfile?/var/log/ha-log???????????????????#日志文件 keepalive?2???????????????????????????????#每2秒傳遞一次心跳信息 udpport?694???????????????????????????????#各節(jié)點(diǎn)之間通信用的端口 mcast?eth0?230.0.120.1?694?1?0????????????#多播地址 auto_failback?on??????????????????????????#自動(dòng)切回 node????node1?????????????????????????????#各節(jié)點(diǎn)定義 node????node2? ping?192.168.1.1??????????????????????????#選擇ping節(jié)點(diǎn),仲裁設(shè)備 compression?????bz2???????????????????????#對(duì)傳遞的信息進(jìn)行壓縮 compression_threshold?2???????????????????#超過(guò)2K的信息才進(jìn)行壓縮

編輯authkeys,各節(jié)點(diǎn)傳遞信息時(shí)需要做認(rèn)證會(huì)用到該文件

[root@node2?heartbeat]#?openssl?rand?-hex?8????????#生成隨機(jī)碼 4ece364b077efd89 [root@node1?ha.d]#?vim?authkeys? #auth?1 #1?crc #2?sha1?HI! #3?md5?Hello! auth?1????????????????????????#選擇哪一種加密方式 1?sha1?4ece364b077efd89???????#加密算法序號(hào)????加密算法????隨機(jī)碼

配置ldirectord(/etc/ha.d/ldirectord.cf),#http virtual service下面的參數(shù)即定義了一個(gè)集群服務(wù),包括VIP,RIP,LVS模型及調(diào)度算法。在定義資源時(shí)只需要定義ldirectord服務(wù)(不需要ipvsadm)即可,在ldirectord在啟動(dòng)時(shí)會(huì)調(diào)用ipvsadm完成集群服務(wù)的添加。

#?Global?Directives???????????????#全局配置,對(duì)所有的virtual都有效 checktimeout=3????????????????????#探測(cè)real?server的超時(shí)時(shí)長(zhǎng) checkinterval=1???????????????????#每一次探測(cè)的時(shí)間間隔 #fallback=127.0.0.1:80 autoreload=yes??????????????????????#更改了配置文件會(huì)自動(dòng)載入 #logfile="/var/log/ldirectord.log"??#自己維護(hù)一個(gè)日志文件 #logfile="local0"???????????????????#使用syslog記錄日志 #emailalert="admin@x.y.z" #emailalertfreq=3600????????????????#發(fā)送郵件的時(shí)間間隔 #emailalertstatus=all quiescent=yes???????????????????????#是否工作在靜默模式下。#http?virtual?service virtual=192.168.1.200:80?????????????????#vipreal=192.168.2.12:80?masq????????#各real?server,gate表示DR模型,masq為NAT模型real=192.168.2.6:80?masqfallback=127.0.0.1:80?masqservice=http?????????????????????#檢查Real?Server健康狀況時(shí)使用的協(xié)議request="test.html"??????????????#檢查時(shí),請(qǐng)求的頁(yè)面receive="ok"?????????????????????#期望頁(yè)面中包含的數(shù)據(jù)scheduler=rr?????????????????????#調(diào)度器#persistent=600??????????????????#是否使用持久連接,600是持久時(shí)長(zhǎng)#netmask=255.255.255.255protocol=tcp??????????????????????#基于TCP協(xié)議探測(cè)checktype=negotiate???????????????#探測(cè)方式checkport=80??????????????????????#探測(cè)的端口

配置完成后,不要忘了在各個(gè)Real Server上httpd的DocumentRoot目錄中添加測(cè)試頁(yè)面,測(cè)試頁(yè)面中包含request指定的信息。若配置了fallback,需要在每個(gè)節(jié)點(diǎn)上啟動(dòng)httpd服務(wù),并添加index.html頁(yè)面,當(dāng)所有后方的Real Server都停止服務(wù)時(shí),這個(gè)頁(yè)面能給予用戶提示信息。

各個(gè)Real?Server [root@node1?~]#?vim?/httpd_dir/test.html? ok各集群節(jié)點(diǎn)上 [root@node1?ha.d]#?vim?/var/www/html/index.html <h1>Sorry</h1>


在/etc/ha.d/haresources文件中定義資源

格式:

主節(jié)點(diǎn)? ? IP/mask/iface? ? resource ? ? ? ? #主節(jié)點(diǎn)后面的都為資源,資源與資源之間用空格或tab隔開(kāi)。

[root@node2?~]#?vim?/etc/ha.d/haresources node1???192.168.1.200/24/eth0???192.168.2.200/24/eth1???ldirectord::/etc/ha.d/ldirectord.cf

ldirectord在啟動(dòng)時(shí)需要指定配置文件。每一行定義一組資源,當(dāng)主節(jié)點(diǎn)出現(xiàn)故障時(shí),這一組資源會(huì)統(tǒng)統(tǒng)轉(zhuǎn)移至備節(jié)點(diǎn)上。上述192.168.1.200為VIP,192.168.2.200為DIP。


復(fù)制4個(gè)配置文件至其他節(jié)點(diǎn)(-p保留權(quán)限)

[root@node1?ha.d]#?scp?-p?haresources?ha.cf?authkeys?ldirectord.cf?root@node2:/etc/ha.d/

關(guān)閉各節(jié)點(diǎn)上ldirectord服務(wù)并確保開(kāi)機(jī)不自動(dòng)啟動(dòng)。

[root@node1?ha.d]#?chkconfig?ldirectord?off?;?ssh?node2?'chkconfig?ldirectord?off'


啟動(dòng)服務(wù)進(jìn)行測(cè)試

[root@node1?ha.d]#?service?heartbeat?start?;?ssh?node2?'service?heartbeat?start'

主節(jié)點(diǎn)上:

對(duì)應(yīng)的VIP,DIP和集群服務(wù)已經(jīng)啟用!!!


讓主節(jié)點(diǎn)停止提供服務(wù)(模仿服務(wù)器故障)

[root@node1?ha.d]#?/usr/lib64/heartbeat/hb_standby? 2015/08/06_01:17:42?Going?standby?[all].

對(duì)應(yīng)的資源已轉(zhuǎn)移至node2上。

停止后方的一臺(tái)Real Server(RealS1)上的httpd服務(wù)

[root@node1?~]#?service?httpd?stop Stopping?httpd:????????????????????????????????????????????[??OK??]

前端的Director上已將該Real Server標(biāo)注為不可用(Weight=0),且僅能訪問(wèn)到Real Server2的頁(yè)面。將Real Server2上的httpd服務(wù)也停止,這時(shí)候就只有fallback頁(yè)面的信息了。

測(cè)試完成.................^_^

轉(zhuǎn)載于:https://blog.51cto.com/ljbaby/1682111

總結(jié)

以上是生活随笔為你收集整理的基于heartbeat v1+ldirectord实现LVS的高可用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。