原理:兩台web伺服器,通過心跳線進行通信,當主節點出現服務異常,備用節點通過探測判斷主節點是否存活,若是不存活,就把服務接管過來。 Web1和Web2中間有一根心跳線,檢查對方的存活狀態。流動IP:也叫vip是對外提供服務的ip,正常情況下是配置在Web1上的,當Web1宕機後,Web2會自動配置 ...
原理:兩台web伺服器,通過心跳線進行通信,當主節點出現服務異常,備用節點通過探測判斷主節點是否存活,若是不存活,就把服務接管過來。
Web1和Web2中間有一根心跳線,檢查對方的存活狀態。流動IP:也叫vip是對外提供服務的ip,正常情況下是配置在Web1上的,當Web1宕機後,Web2會自動配置該vip,對外提供服務。 需求:線上上環境有一臺nginx伺服器提供對外web訪問,為了防止伺服器突然宕機造成業務損失,則需要兩台伺服器提供高可用集群一主一備服務,主的伺服器宕機,備的伺服器立即接管主的繼續對外提供訪問,讓業務不受影響。實驗環境所需要工具:heartbeat、libnet、nginx
預設是沒有heartbeat包,需要安裝擴展源:epel epel下載地址:wget www.lishiming.net/data/attachment/forum/epel-release-6-8_32.noarch.rpm 安裝工具:yum -y install heartbeat 安裝工具:yum -y install libnet master IP: 192.168.2.254 slave IP:192.168.2.253 一、master伺服器配置 1:修改hosts文件 [root@master ~]# vim /etc/hosts 說明:將主和備份的伺服器地址和主機寫入hosts文件,將紅色的欄位複製到備份的文件 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.2.254 master 192.168.2.253 slave 2:切換到hearteat工具文件目錄 [root@master ~]cd /usr/share/doc/heartbeat-3.0.4/ [root@master heartbeat-3.0.4]# ls apphbd.cf authkeys AUTHORS ChangeLog COPYING COPYING.LGPL ha.cf haresources README 3:拷貝authkeys、ha.cf、haresources三個配置文件 [root@master heartbeat-3.0.4] cp authkeys ha.cf haresources /etc/ha.d/ [root@master heartbeat-3.0.4] cd /etc/ha.d/ 4:編輯配置文件 [root@master ha.d ] vim authkeys auth 3 ##這裡定義的是你下麵所開啟的級別 #1 crc #2 sha1 HI! 3 md5 Hello! 5:aurhkeys文件許可權需要設置600 [root@master ha.d ] chmod 600 authkeys 6:配置虛介面和編輯vip的文件 [root@master ha.d]# cd /etc/sysconfig/network-scripts/ [root@master network-scripts]# cp ifcfg-eth0 ifcfg-eth0\:1 [root@master network-scripts]# vim ifcfg-eth0:1 加入下麵的內容 DEVICE=eth0:1 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=static IPADDR=192.168.2.110 NETMASK=255.255.255.0 7:重啟網路服務 [root@master network-scripts]# service network restart 正在關閉介面 eth0: [確定] 關閉環回介面: [確定] 彈出環回介面: [確定] 彈出界面 eth0: Determining if ip address 192.168.2.254 is already in use for device eth0... Determining if ip address 192.168.2.110 is already in use for device eth0... [確定] 8:重啟服務和編輯配置文件 [root@master network-scripts]# vim haresources 說明: master ##表示是主的主機名 192.168.2.110/24 ##表示流動vip也就是虛介面地址 eth0:0 ##表示你所用的網卡 nginx ##表示你用什麼服務做的集群,這裡用的是Nginx,根據自己使用情況設置 加入下麵內容 master 192.168.2.110/24/eth0:1 nginx 9:編輯ha.cf文件 [root@master ha.d]# vim ha.cf debugfile /var/log/ha-debug logfile /var/log/ha-log ##設置系統日誌的信息範圍為 local0 logfacility local0 ##這是日誌的級別 keepalive 2 ##設置心跳的檢測時間,預設單位為秒 deadtime 30 ##宣佈節點死亡的時間,單位為秒 warntime 10 ##通過這個來調整判斷節點的死亡時間 initdead 60 ##Heartbeat 啟動資源的等待時間,單位為秒 udpport 694 ##設定用於bcast和ucast通信的埠,預設為 UDP 694 ucast eth0 192.168.2.253 ##心跳網卡和對方的ip地址 auto_failback on ##這個設定會使節點具備優先順序。當服務運行於備機上時,如果主節點已恢復,會自動取回運行在備機上的服務。 node master ##設置主的主機名 node slave ##設置備份的主機名 ping 192.168.2.1 ##指定ping節點,檢測網路狀態,通常是網關 respawn hacluster /usr/lib/heartbeat/ipfail ##設定 Heartbeat 監控的服務,該服務會隨著 Heartbeat 服務啟動時啟動,停止時則一起停止。當出現意外導致該服務停止時,Heartbeat 將自動重啟該服務 10:複製三個配置文件到備份伺服器 [root@master ha.d]# scp authkeys ha.cf haresources slave:/etc/ha.d/ The authenticity of host 'slave (192.168.2.253)' can't be established. RSA key fingerprint is 74:0a:ee:44:ae:1a:9f:86:47:43:92:4b:c0:02:29:0b. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'slave,192.168.2.253' (RSA) to the list of known hosts. root@slave's password: authkeys 100% 643 0.6KB/s 00:00 ha.cf 100% 331 0.3KB/s 00:00 haresources 100% 5888 5.8KB/s 00:00 二、slave伺服器配置 1:修改hosts文件 [root@slave ~]# vim /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.2.254 master 192.168.2.253 slave 2:在備份伺服器slave里只需要編輯ha.cf配置文件,其它兩個文件預設 [root@slave src]# cd /etc/ha.d/ [root@slave ha.d]# ls authkeys ha.cf harc haresources rc.d README.config resource.d shellfuncs [root@slave ha.d]# vim ha.cf debugfile /var/log/ha-debug logfile /var/log/ha-log logfacility local0 keepalive 2 deadtime 30 warntime 10 initdead 60 udpport 694 ucast eth0 192.168.2.254 ##改成master的地址 auto_failback on node master node slave ping 192.168.2.2 respawn hacluster /usr/lib/heartbeat/ipfail 三、啟動heartbeat、測試結果 說明:在高可用集群中啟動heartbeat是按照先啟動主,再啟動備份的順序 1:啟動master,關閉iptables和selinux [root@master ha.d]# iptables -F [root@master ha.d]# setenforce 0 [root@master ha.d]# /etc/init.d/heartbeat start Starting High-Availability services: INFO: Resource is stopped Done. 2:啟動slave,關閉iptables和selinux [root@slave ha.d]# iptables -F [root@slave ha.d]# setenforce 0 [root@slave ha.d]# /etc/init.d/heartbeat start Starting High-Availability services: INFO: Resource is stopped Done. 3:測試,使master伺服器不能ping通slave的伺服器,讓master死掉,slave的繼承 更改下主頁文件 [root@master ~]# echo "1111111111111111111master" > /usr/share/nginx/html/index.html 4:用curl測試 [root@master ~]# curl -x 127.0.0.1:80 192.168.2.110 1111111111111111111master 5:使用命令禁掉主Ping工具,讓其死掉 [root@master ha.d]# iptables -A INPUT -p icmp -j DROP 6:在備份服務查看有沒有虛介面過來 [root@slave ha.d]# ifconfig eth0:1 Link encap:Ethernet HWaddr 00:0C:29:4D:F5:D8 inet addr:192.168.1.110 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Interrupt:19 Base address:0x2000 7:curl訪問測試 [root@slave ha.d]# curl -x127.0.0.1:80 192.168.2.110 222222222222slave ##備用的伺服器成功繼承,高可用集群實驗成功