lvs和HA的高可用性
Heartbeat實現Lvs高可用和HA高可用
效果圖如下
1、heartbeat的介紹
Heartbeat?項目是?Linux-HA?工程的一個組成部分,它實現了一個高可用集群系統。心跳服務和集群通信是高可用集群的兩個關鍵組件,在?Heartbeat?項目里,由?heartbeat?模塊實現了這兩個功能。下面描述了?heartbeat?模塊的可靠消息通信機制,并對其實現原理做了一些介紹
heartbeat?(Linux-HA)的工作原理:heartbeat最核心的包括兩個部分,心跳監測部分和資源接管部分,心跳監測可以通過網絡鏈路和串口進行,而且支持冗?余鏈路,它們之間相互發送報文來告訴對方自己當前的狀態,如果在指定的時間內未受到對方發送的報文,那么就認為對方失效,這時需啟動資源接管模塊來接管運?行在對方主機上的資源或者服務。[1]
高可用集群是指一組通過硬件和軟件連接起來的獨立計算機,它們在用戶面前表現為一個單一系統,在這樣的一組計算機系統內部的一個或者多個節點停止工作,服務會從故障節點切換到正常工作的節點上運行,不會引起服務中斷。從這個定義可以看出,集群必須檢測節點和服務何時失效,何時恢復為可用。這個任務通常由一組被稱為“心跳”的代碼完成。在Linux-HA里這個功能由一個叫做heartbeat的程序完成。
消息通信的模型
Heartbeat包括以下幾個組件:?
heartbeat?–?節點間通信校驗模塊?
CRM?-?集群資源管理模塊?
CCM?-?維護集群成員的一致性?
LRM?-?本地資源管理模塊?
StonithDaemon?-?提供節點重啟服務?
logd?-?非阻塞的日志記錄?
apphbd?-?提供應用程序級的看門狗計時器?
Recovery?Manager?-?應用故障恢復?
2、實現web服務器的高可用性
1)基本的網卡配置參數略
[root@hua1?~]#?vim?/etc/sysconfig/network?(改主機名)
[root@hua1?~]#?hostname?hua1.a.com?(使主機名立即生效)
[root@hua1?~]#?vim?/etc/hosts?(配置dns指向)
192.168.145.99??????hua1.a.com
192.168.145.100?????hua2.a.com
2)實現heartbeat高可用需要一些軟件實現,需要安裝上去
[root@hua2?~]#?mount?/dev/cdrom?/mnt/cdrom/
[root@hua1?~]#?yum?localinstall?heartbeat-2.1.4-9.el5.i386.rpm?heartbeat-pils-2.1.4-10.el5.i386.rpm?heartbeat-stonith-2.1.4-10.el5.i386.rpm?perl-MailTools-1.77-1.el5.noarch.rpm?libnet-1.1.4-3.el5.i386.rpm?--nogpgcheck?(localinstall本地安裝,--nogpgcheck,無簽名檢測)
[root@hua1?~]#?rpm?-pql?heartbeat-2.1.4-9.el5.i386.rpm?(查看解壓后的文件夾有那些。)
[root@hua1?~]#?cd?/etc/ha.d/?(這個目錄是heartbeat的主配置目錄)
[root@hua1?ha.d]#?cd?/usr/share/doc/heartbeat-2.1.4/?(安裝后的配置文件)
3)[root@hua1?heartbeat-2.1.4]#?cp?ha.cf?authkeys?haresources??/etc/ha.d/?(把配置文件拷貝過來)
4)[root@hua1?ha.d]#?vim?ha.cf??(編輯這個心跳文件參數,編輯如下)
95?行bcast???eth1???(心跳線的網卡用廣播形式)
213行?node????hua1.a.com??
214?行node????hua2.a.com?(兩個節點的地址)
5)[root@hua1?~]#?dd?if=/dev/random?bs=512?count=1?|openssl?md5?(隨機產生一個參數用md5加密)
0+1?records?in
0+1?records?out
128?bytes?(128?B)?copied,?0.000308478?seconds,?415?kB/s
9bf2f23aae3a63c16ea681295ffd7666
6)[root@hua1?ha.d]#?vim?authkeys?(編輯認證文件)
auth?3
3?md5?9bf2f23aae3a63c16ea681295ffd7666
[root@hua1?ha.d]#?chmod?600?authkeys??(改變它的權限為600,不然重啟不成功)
7)[root@hua1?ha.d]#?vim?haresources?(編輯資源文件)
45?行hua1.a.com??192.168.145.101/24/eth0??httpd?
8)[root@hua1?ha.d]#?cp?/etc/init.d/httpd?/etc/ha.d/resource.d/?(把httpd的服務器腳本拷貝過來,因為http已經不需要自己啟動了,它受heartbeat的控制)
[root@hua2?ha.d]#?service?httpd?status?(保證它是關閉的)
httpd?已停
9)編輯apache的網頁,兩臺都要編輯
[root@hua2?ha.d]#?cd?/var/www/html/
[root@hua2?html]#?ll
總計?4
-rw-r--r--?1?root?root?5?12-27?19:19?index.html
[root@hua2?html]#?more?index.html?
hua3
[root@hua1?~]#?cd?/var/www/html/
[root@hua1?html]#?ll
total?4
-rw-r--r--?1?root?root?4?Dec?27?20:01?index.html
[root@hua1?html]#?more?index.html?
123
[root@hua1?heartbeat]#?service?httpd?stop
[root@hua1?heartbeat]#?chkconfig?httpd?off
9)現在可以啟用heartbeat的服務,觀察日志
[root@hua1?~]#?tail?-f?/var/log/messages
[root@hua1?html]#?service?httpd?status?(這時http服務已經啟動了)
httpd?(pid??5021)?is?running...
[root@hua1?html]#?ifconfig?(這時查看端口發現已經把vip地址資源掙用過來了)
10)另一臺啟動失敗,主要原因是沒改權限
[root@hua2?html]#?chmod?600?/etc/ha.d/authkeys?
[root@hua2?html]#?service?heartbeat?start
logd?is?already?running
Starting?High-Availability?services:?
2012/12/29_02:19:34?INFO:??Resource?is?stopped
???????????????????????????????????????????????????????????[確定]
11)模式失效
[root@hua1?ha.d]#?cd?/usr/lib/heartbeat/?????(/usr/share/heartbeat)
這兩個目錄都可以模擬
[root@hua1?heartbeat]#?./hb_standby?(模擬斷掉)
[root@hua2?html]#?watch?-n?1?"service?httpd?status"?(動態觀察http的狀態)
[root@hua2?html]#?ifconfig?(查看地址已經沒有了,跑到另一臺機器上去了)
[root@hua1?heartbeat]#?./hb_takeover??(模擬有好了,能把資源又征用過來了)
[root@hua1?heartbeat]#?pwd
/usr/lib/heartbeat
3、實現director的高可用性
1)配置基本的網卡,還有一個虛擬的vip網卡地址,掩碼是255.255.255.255(兩臺都一樣)
[root@mail?~]#?route?-n
2)root@mail?~]#?route?add?-host?192.168.145.101?dev?lo:0?(添加一條特殊路由,指向vip的地址)
3)原來做的基礎上把所做過的服務停掉
[root@hua1?~]#?service?heartbeat?stop
???????????????????????????????????????????????????????????[確定]
[root@mail?html]#?chkconfig?--list?httpd
httpd?????????? 0:關閉 1:關閉 2:關閉 3:關閉 4:關閉 5:關閉 6:關閉
[root@mail?html]#?service?httpd?stop
停止?httpd:???????????????????????????????????????????????[確定]
4)現在是控制ipvsadm的服務了
[root@hua2?~]#?vim?/etc/yum.repos.d/rhel-debuginfo.repo?
[root@hua2?~]#?cd?/mnt/cdrom/Cluster
[root@hua2?Cluster]#?yum?install?ipvsadm-1.24-10.i386.rpm?
[root@hua1?~]#?cp?/etc/init.d/ipvsadm?/etc/ha.d/resource.d/
[root@hua1?~]#?ipvsadm?-C
[root@hua1?~]#?ipvsadm?-A?-t?192.168.145.101?-s?rr
Zero?port?specified?for?non-persistent?service
[root@hua1?~]#?ipvsadm?-A?-t?192.168.145.101:80?-s?rr
[root@hua1?~]#?ipvsadm?-a?-t?192.168.145.101:80?-r?192.168.145.200?-g
[root@hua1?~]#?ipvsadm?-a?-t?192.168.145.101:80?-r?192.168.145.201?-g
[root@hua1?~]#?ipvsadm?-ln
[root@hua1?~]#?service?ipvsadm?save
scp?hua1.a.com:/etc/sysconfig/ipvsadm?/etc/sysconfig/ipvsadm?(把一臺的配置拷貝到另一個服務器上了)
4、實現動態的轉發規則表
意義:就是當后方的所管理的服務器有異常時,就能被前方的管理集群所察覺到,并作出相應的改變。
1)需要一個軟件包,安裝上去。
[root@hua1?~]#?yum?localinstall?heartbeat-ldirectord-2.1.4-9.el5.i386.rpm?--nogpgcheck
[root@hua1?~]#?rpm?-pql?heartbeat-ldirectord-2.1.4-9.el5.i386.rpm?
2)[root@hua1?~]#?cp?/etc/init.d/ldirectord?/etc/ha.d/resource.d/?(把要管理的服務器腳本拷貝過去)
3)[root@hua1?~]#?cp?/usr/share/doc/heartbeat-ldirectord-2.1.4/ldirectord.cf?/etc/ha.d/
4)[root@hua1?~]#?vim?/etc/ha.d/ldirectord.cf??
5)[root@hua1?~]#?vim?/etc/ha.d/haresources
hua1.a.com?192.168.145.101/24/eth0?ldirectord::ldirectord.cf
6)兩臺的web服務器要根據ldirector上的東西編寫測試頁面。
[root@hua1?~]#?cd?/var/www/html/
[root@hua1?html]#?echo?"yes"?>.hua.htm
7)做完后不用重啟,能夠自動加載,這時查看規則已經能查看到了,因為這時檢測不到后方的web工作
8)然后開啟一個web的服務就能發現權值變成了1.
[root@mail?html]#?service?httpd?start
9)如何在編輯/etc/ha.d/ldirectord.cf???這個文件時,把quiescent?(靜默模式)改為了no,如何發現后方的檢測頁面不能檢測到則會把規則直接刪掉
[root@mail?html]#?service?httpd?stop?(把一臺的服務停掉,然后就發現,規則沒有了)
轉載于:https://blog.51cto.com/yudonghua/1104026
總結
以上是生活随笔為你收集整理的lvs和HA的高可用性的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 女人梦到好多蛇是什么寓意
- 下一篇: 免费图标网站