HA搭建web服務器高可用

拓撲:
QJ02 主web==192.168.2.131
QJ03 從web==192.168.2.132
QJ01 NFS====192.168.2.130
1.準備工作:
(1).解析域名

#[root@Qj02 ~]# vim /etc/hosts
192.168.2.131 QJ02.cn
192.168.2.132 QJ03.cn
[root@Qj03 ~]# vim /etc/hosts
192.168.2.131 QJ02.cn
192.168.2.132 QJ03.cn

(2). 關防火牆,關掉selinux

# iptables -F
# getenforce 
Permissive

2.配置QJ01爲NFS服務器,提供存儲資源
(1)安裝NFS服務器:(3臺主機均安裝)

[root@Qj01 ~]# yum -y install nfs-utils
[root@Qj02 ~]# yum -y install nfs-utils
[root@Qj03 ~]# yum -y install nfs-utils
[root@Qj01 ~]# mkdir /wwwdir
[root@Qj01 ~]# echo "Heartbeat Web test" > /wwwdir/index.html
[root@Qj01 ~]# vi /etc/exports
/wwwdir 192.168.2.0/24(rw)

(2)配置目錄權限

[root@Qj01 ~]# ll -d /wwwdir/
drwxr-xr-x 2 root root 24 Sep 12 21:33 /wwwdir/
[root@Qj01 ~]# chmod 777 -R /wwwdir/
[root@Qj01 ~]# ll -d /wwwdir/
drwxrwxrwx 2 root root 24 Sep 12 21:33 /wwwdir/

(3)開啓nfs服務

[root@Qj01 ~]# systemctl start nfs
[root@Qj01 ~]# systemctl enable nfs
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
[root@Qj01 ~]# showmount -e
Export list for Qj01:
/wwwdir 192.168.2.0/24

3.QJ02和QJ03測試nfs 存儲掛載並安裝httpd web服務器:(只寫QJ02一臺配置,另一臺QJ03配置相同)

[root@QJ02 ~]# yum install  httpd -y 
[root@QJ02 ~]# systemctl start nfs
[root@QJ02 ~]# showmount -e 192.168.2.130
Export list for 192.168.2.130:
/wwwdir 192.168.2.0/24 
[root@QJ02 ~]# mount -t nfs 192.168.2.130:/wwwdir /var/www/html/
[root@QJ02 ~]# systemctl start httpd

測試:

[root@QJ02 ~]# yum install elinks -y 
[root@QJ02 ~]# elinks --dump 192.168.2.131
  Heartbeat Web test

卸載資源:後期這些資源通過heartbeat直接加載

[root@QJ02 ~]# umount /var/www/html/
[root@QJ02 ~]# systemctl stop httpd
[root@QJ02 ~]# systemctl disable httpd

4.QJ02和QJ03安裝heartbeat(只寫QJ02一臺配置,另一臺QJ03配置大致相同<不同處有備註>)
heartbeat在Ceontos7下編譯步驟
下載:http://www.linux-ha.org/wiki/Downloads,從官方下載最新的HeartBeat版本
Heartbeat 3.0.6
Cluster Glue 1.0.12
Resource Agents 3.9.6
(1).配置基礎環境(配置好網絡yum源)
安裝依賴包
[root@Qj02 ~]#yum install -y bzip2 bzip2-devel gcc gcc-c++ autoconf automake libtool e2fsprogs-devel glib2-devel libxml2 libxml2-devel libtool-ltdl-devel asciidoc libuuid-devel docbook
(2).編譯Cluster Glue

[root@Qj02 ~]# tar jxf Cluster_Glue_1.0.12.tar.bz2 
[root@Qj02 ~]#cd Reusable-Cluster-Components-glue--0a7add1d9996/
[root@Qj02 Reusable-Cluster-Components-glue--0a7add1d9996]# groupadd haclient  創建用戶組
[root@Qj02 Reusable-Cluster-Components-glue--0a7add1d9996]# useradd -g haclient hacluster   創建用戶
[root@Qj02 Reusable-Cluster-Components-glue--0a7add1d9996]# ./autogen.sh 
[root@Qj02 Reusable-Cluster-Components-glue--0a7add1d9996]# ./configure --prefix=/usr/local/heartbeat/
[root@Qj02 Reusable-Cluster-Components-glue--0a7add1d9996]# make && make install

(3).編譯Resource Agents

[root@Qj02 ~] # tar -zxf resource-agents-3.9.6.tar.gz
[root@Qj02 ~]# cd resource-agents-3.9.6
[root@Qj02 resource-agents-3.9.6]# ./autogen.sh
[root@Qj02 resource-agents-3.9.6]#./configure --prefix=/usr/local/heartbeat --with-daemon-user=hacluster --with-daemon-group=haclient --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'
[root@Qj02 resource-agents-3.9.6]# make
[root@Qj02 resource-agents-3.9.6]# make install

(4).編譯Heartbeat

[root@Qj02 ~]# tar -jxvf Heartbeat-3.0.6.tar.bz2
[root@Qj02 ~]# cd Heartbeat-3-0-958e11be8686/
[root@Qj02 Heartbeat-3-0-958e11be8686]# ./bootstrap
[root@Qj02 Heartbeat-3-0-958e11be8686]# export CFLAGS="$CFLAGS -I/usr/local/heartbeat/include -L/usr/local/heartbeat/lib"
[root@Qj02 Heartbeat-3-0-958e11be8686]# ./configure --prefix=/usr/local/heartbeat --with-daemon-user=hacluster --with-daemon-group=haclient --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'
[root@Qj02 Heartbeat-3-0-958e11be8686]# make 
[root@Qj02 Heartbeat-3-0-958e11be8686]# make install

(5)生成配置文件:

[root@Qj02 /]# cd /usr/local/heartbeat/etc/ha.d/
[root@Qj02 ha.d]# cp /root/Heartbeat-3-0-958e11be8686/doc/{ha.cf,haresources,authkeys} .
[root@Qj02 ha.d]# chkconfig --add heartbeat
[root@Qj02 ha.d]# chkconfig heartbeat on
[root@Qj02 ha.d]# chmod 600 /usr/local/heartbeat/etc/ha.d/authkeys
[root@Qj02 ha.d]# mkdir -pv /usr/local/heartbeat/usr/lib/ocf/lib/heartbeat/
[root@Qj02 ha.d]# cp /usr/lib/ocf/lib/heartbeat/ocf-* /usr/local/heartbeat/usr/lib/ocf/lib/heartbeat/
[root@Qj02 ha.d]# ln -sv /usr/local/heartbeat/lib64/heartbeat/plugins/* /usr/local/heartbeat/lib/heartbeat/plugins/

(6)Heartbeat配置
<1>配置ha.cf----主配置文件
Heartbeat的配置主要涉及到ha.cf、haresources、authkeys這三個文件。
ha.cf: 主配置文件,
haresource: 用來配置要讓Heartbeat託管的服務,
authkey: 是用來指定Heartbeat的認證方式。

[root@Qj02 /]# vim /usr/local/heartbeat/etc/ha.d/ha.cf vim /usr/local/heartbeat/etc/ha.d/ha.cf 
24 debugfile /var/log/ha-debug           ##用於記錄heartbeat的調試信息
29 logfile/var/log/ha-log                ##用於記錄heartbeat的日誌信息
34 logfacilitylocal0                    ##設置heartbeat的日誌,這裏用的是系統日誌
48 keepalive 2                              ##設定心跳(監測)時間時間爲2秒
56 deadtime 30         ##指定若備用節點在30秒內未收到主節點心跳信號,則接管主服務器資源
61 warntime 10           ##指定心跳延遲的時間爲10秒,10秒內備節點不能接收主節點心跳信號,
                                  即往日誌寫入警告日誌,但不會切換服務
71 initdead 120        ##系統啓動或重啓後預留的忽略時間段,取值至少爲deadtime的兩倍
76 udpport  694                         ##廣播/單播通訊使用的Udp端口
91 #bcast ens32   # Linux             ##使用網卡eno32發送心跳檢測
113 #mcast eth0 225.0.0.1 694 1 0    ##採用網卡eth0的Udp多播來組織心跳,一般在備用節點
Bcast、ucast和mcast分別代表廣播、單播和多播,是組織心跳的的方式,任選其一
121 ucast ens33 192.168.2.132  ##採用網卡eth32的udp單播來組織心跳,後面跟的IP地址爲雙機對方IP地址
157 auto_failback on                 ##定義當主節點恢復後,是否將服務自動切回
211 node QJ02.cn                     ##主節點名稱
212 node QJ03.cn                     ##備用節點名稱
220 ping 192.168.2.1                ##通過ping網關檢測心跳是否正常,僅用來測試網絡
253 respawn hacluster /usr/local/heartbeat/libexec/heartbeat/ipfail   ##指定和heartbeat一起啓動、關閉的進程,否則啓動報錯
259 apiauth ipfail gid=haclient uid=hacluster     ##設置啓動IPfail的用戶和組
[root@Qj02 ha.d]# scp ha.cf  192.168.2.132:/usr/local/heartbeat/etc/ha.d/`(修改121行即可)
ucast ens33 192.168.2.131

<2>配置haresources-----資源文件

[root@Qj02 ha.d]# vim haresources
 44 #node-name resource1 resource2 ... resourceN
 45 QJ02.cn IPaddr::192.168.2.111/24ens33 Filesystem::192.168.2.130:/wwwdir::/var/www/html::nfs http [root@Qj03 ha.d]# vim haresources
 44 #node-name resource1 resource2 ... resourceN
 45 QJ02.cn IPaddr::192.168.2.111/24ens33 Filesystem::192.168.2.130:/wwwdir::/var/www/html::nfs httpd

注:QJ02.cn是主服務器的主機名, QJ03上不需要修改。這樣資源默認會加一這個主機上。當QJ02壞了,QJ03會再接管。
<3>配置authkeys-----心跳密鑰驗證文件

[root@Qj02 ha.d]#vim /usr/local/heartbeat/etc/ha.d/authkeys 
auth 3
3 md5 Hello!
[root@Qj03 ha.d]#vim /usr/local/heartbeat/etc/ha.d/authkeys 
auth 3
3 md5 Hello!

<4>編寫httpd啓動腳本

[root@Qj02 ha.d]#vim /usr/local/heartbeat/etc/ha.d/resource.d/httpd
[root@Qj03 ha.d]#vim /usr/local/heartbeat/etc/ha.d/resource.d/httpd
#!/bin/bash
/bin/systemctl $1 httpd     
[root@Qj02 resource.d]#chmod 755 httpd
[root@Qj03 resource.d]#chmod 755 httpd

<5>測試:(測試後記得關閉)
手動加載VIP 192.168.2.111到ens33上
[root@Qj02 ~]# cd /usr/local/heartbeat/etc/ha.d/resource.d
測試綁定VIP
[root@Qj02 resource.d]# ./IPaddr 192.168.2.111/24/ens33 start
INFO: Success
INFO: Success
查看 VIP:
[root@Qj02 ~]# ifconfig #可以看到 ens33:1 的IP爲:192.168.2.111

手動加載NFS存儲資源到/var/www/html (加載需要fuser支持,yum install psmisc -y)
[root@Qj02 resource.d]# ./Filesystem 192.168.2.130:/wwwdir /var/www/html/ nfs start
INFO: Success
INFO: Success
[root@Qj02 ~]# ls /var/www/html/index.html
/var/www/html/index.html
[root@Qj02 ~]# df -h
………
192.168.2.130:/wwwdir 18G 1.1G 17G 6% /var/www/html

手動啓動httpd服務
[root@Qj02 ~]# systemctl start httpd

測試打開主服務頁面http://192.168.2.131

啓動heartbeat

# systemctl start heartbeat
# chkconfig --add heartbeat
# chkconfig heartbeat on
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章