1、HA部署html
本次實驗的程序選型爲heartbeat v1 + hearesources。資源有IP和httpd,filesystemnode
配置HA集羣的前提:linux
(1)各節點資源一致,硬件或軟件環境一致web
(2)各節點時間保持一致,便於心跳傳遞,使用ntp協議實現算法
#使用ntpdate命令同步時間,並創建週期性任務 #可以使用任意節點服務器做爲ntp時間服務器,如各節點可上公網,可直接指定公網ntp服務器 1、安裝ntp [root@jymlinux ~]# yum install -y ntp [root@jymlinux ~]# vim /etc/ntp.conf #修改配置文件容許本網段客戶端獲取地址 將下面的語句 restrict default kod nomodify notrap nopeer noquery 修改成 restrict default nomodify restrict 192.168.0.0 mask 255.255.255.0 nomodify [root@jymlinux ~]# service ntpd start Starting ntpd: [ OK ] 查看同步過程 [root@jymlinux ~]# ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== *202.118.1.81 202.118.1.47 2 u 30 64 1 92.249 8.602 0.714 202.112.31.197 .INIT. 16 u - 64 0 0.000 0.000 0.000 2、客戶端建立週期任務,每3秒同步時間 [root@centfils ~]# crontab -e */3 * * * * /usr/sbin/ntpdate 192.168.0.16 &> /dev/null [root@centfils ~]# service crond start #手動同步成功,因ntp通常爲自動,手動前kill掉全部ntp進程便可 [root@centfils ~]# ntpdate 192.168.0.16 14 Nov 20:26:09 ntpdate[3786]: adjust time server 192.168.0.16 offset -0.004440 sec 3、時間同步 [root@jymlinux ~]# date; ssh 192.168.0.15 'date' Mon Nov 14 20:36:17 CST 2016 root@192.168.0.15's password: Mon Nov 14 20:36:20 CST 2016
(3)節點間須要經過主機名互相通訊,必須解析主機至IP地址vim
(a)建議名稱解析功能使用hosts文件來實現centos
(b)通訊中使用的名字與節點名字必須保持一致 「uname -n」 或hostname展現出的名字保持一致安全
[root@jymlinux ~]# vim /etc/hosts 192.168.0.15 centfils 192.168.0.16 jymlinux
(4)關於仲裁設備(共享硬盤或網關),若有偶數個節點,好比2個,應啓用仲裁設備,奇數無需啓用,大偶數也能夠無需仲裁設備服務器
(5)配置各節點之間的root用戶可以給予密鑰認證網絡
1、生成密鑰對 [root@centfils ~]# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: a8:ad:2c:23:83:60:ff:36:73:9d:09:24:37:ae:da:c9 root@centfils The key's randomart image is: +--[ RSA 2048]----+ | | | | | | | . = | | * S | |.. o o | |+ . . o o o | |+ ooo*.. + | | o +*E+ | +-----------------+ 2、把公鑰傳輸至遠程服務器對應用戶的家目錄 [root@centfils ~]# ssh-copy-id -i .ssh/id_rsa.pub root@192.168.0.16 The authenticity of host '192.168.0.16 (192.168.0.16)' can't be established. RSA key fingerprint is e5:84:6c:f7:c0:60:3d:0b:39:b6:1e:12:0d:48:8b:07. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.0.16' (RSA) to the list of known hosts. root@192.168.0.16's password: Now try logging into the machine, with "ssh 'root@192.168.0.16'", and check in: .ssh/authorized_keys to make sure we haven't added extra keys that you weren't expecting. 3、測試 [root@jymlinux ~]# date; ssh root@192.168.0.15 'date' Mon Nov 14 21:02:30 CST 2016 Mon Nov 14 21:02:30 CST 2016
(6)定義爲集羣的資源不能開機自啓,而是由crm管理
配置列表:
node1:192.168.0.15
node2:192.168.0.16
fip:192.168.0.17
2、安裝heartbeat
由於heartbeat,紅帽和centos官方不提供rpm,所以先下載並安裝epel包
[root@centfils ~]# wget http://mirrors.sohu.com/fedora-epel/6/i386/epel-release-6-8.noarch.rpm [root@centfils ~]# rpm -ivh epel-release-6-8.noarch.rpm [root@centfils heartbeat2]# yum install heartbeat-2.1.4-12.el6.i686.rpm heartbeat-pils-2.1.4-12.el6.i686.rpm heartbeat-stonith-2.1.4-12.el6.i686.rpm #安裝依賴包,安裝在主程序包前 [root@jymlinux ~]# yum install perl-TimeDate net-snmp-libs libnet PyXML [root@jymlinux ~]# yum install libpils*
heartbeat的配置文件在/etc/ha.d目錄下,其主要配置文件爲ha.cf,定義各節點上的heartbeat HA集羣的基本屬性。authkeys配置文件,爲集羣內節點間彼此傳遞消息時使用的加密算法及密鑰。
haresources,爲heartbeat v1提供的資源管理器配置接口,v1版專用。
#將配置文件模板複製到/etc/ha.d目錄下 [root@centfils ha.d]# cp /usr/share/doc/heartbeat-3.0.4/{ha.cf,haresources,authkeys} /etc/ha.d/ #節點間認證配置文件權限必須爲600 [root@centfils ha.d]# chmod 600 authkeys
3、配置heartbeat
1、配置authkeys文件,指明啓用何種算法,使用何種密鑰,本文件須更改權限爲400 auth 2 #1 crc 2 sha1 dPCDBSAie31fz6d5MhM0/A #3 md5 Hello! 生成隨機字符串做爲密鑰 [root@centfils ha.d]# openssl rand -base64 16 dPCDBSAie31fz6d5MhM0/A== 2、配置ha.cf文件,定義高可用集羣的基本工做方式 定義日誌文件位置(二選一) logfacility爲將日誌交由syslog管理 logfile /var/log/ha-log #logfacility local0 多長時間發送一次心跳信息,默認爲2秒 #keepalive 2 多長時間宣佈某節點死亡,默認30秒 #deadtime 30 多長時間警告對方心跳信息延遲了,默認10秒 #warntime 10 第一次死去時間,避免因網絡問題致使宣佈死亡 #initdead 120 使用udp694端口傳遞心跳,並選擇哪一種方式傳遞心跳 #udpport 694 串行線纜傳遞心跳 #serial /dev/ttyS0 # Linux #serial /dev/cuaa0 # FreeBSD #serial /dev/cuad0 # FreeBSD 6.x #serial /dev/cua/a # Solaris 串行線纜的工做頻率 #baud 19200 廣播傳遞心跳 #bcast eth0 # Linux #bcast eth1 eth2 # Linux #bcast le0 # Solaris #bcast le1 le2 # Solaris 多播傳遞心跳,網卡必須支持多播,ifconfig | grep MULTICAST mcast eth0 225.0.0.1 694 1 0 #端口694,TTL爲1,不容許回傳爲0 #啓用網卡支持多播 [root@jymlinux ~]# ip link set eth0 multicast on 單薄傳遞心跳 #ucast eth0 192.168.1.2 自動故障轉回 auto_failback on 指明節點 #node ken3 #node kathy node centfils node jymlinux 指明網關爲ping node設備(仲裁設備) #ping 10.10.10.254 ping 192.168.0.1 指明一個組爲ping node設備(仲裁設備) #ping_group group1 10.10.10.254 10.10.10.253 指明節點間傳送的壓縮算法 compression bz2 指明節點間傳送數據壓縮的最小數據爲2KB compression_threshold 2
3、配置haresources文件,定義集羣資源 直接加入資源 centfils 192.168.0.17/24/eth0/192.168.0.255 httpd 4、將httpd設置爲開機不啓動 [root@centfils ~]# chkconfig httpd off 5、啓動服務 [root@centfils ~]# service heartbeat start
5、HA web services中加入共享文件資源
filesystem爲192.168.0.20,通常狀況下HA-web services使用的filesystem爲raid或分佈式文件系統,實驗以nfs演示
1、在filesystem上創建共享文件系統 [root@linus ~]# clear [root@linus ~]# mkdir /web/htdocs -pv mkdir: created directory `/web' mkdir: created directory `/web/htdocs' [root@linus ~]# vim /web/htdocs/index.html 2、將此目錄經過nfs共享 [root@linus ~]# yum install portmap* #nfs-utils-* :包括基本的NFS命令與監控程序 [root@linus ~]# yum install nfs* #portmap-* :支持安全NFS RPC服務的鏈接 [root@linus ~]# vim /etc/exports /web/htdocs 192.168.0.0/24(rw,no_root_squash) #NFS服務的配置文件爲 /etc/exports,這個文件是NFS的主要配置文件,不過系統並無默認值,因此這個文件不必定會存在,可能要使用vim手動創建,而後在文件裏面寫入配置內容。 #在此處出現錯誤,nfs沒法啓動,提示爲rpc沒法鏈接,因此重啓rpc後啓動nfs [root@linus ~]# /etc/init.d/rpcbind restart Stopping rpcbind: [FAILED] Starting rpcbind: [ OK ] [root@linus ~]# service nfslock start Starting NFS statd: [ OK ] [root@linus ~]# service nfs start Starting NFS services: [ OK ] Starting NFS quotas: [ OK ] Starting NFS mountd: [ OK ] Starting NFS daemon: [ OK ] Starting RPC idmapd: [ OK ] #將nfs加入開機自啓 [root@linus ~]# chkconfig nfs on #將nfs掛載進行測試, [root@centfils ~]# mount -t nfs 192.168.0.20:/web/htdocs /var/www/html [root@centfils ~]# umount /var/www/html
[root@jymlinux ha.d]# vim haresources centfils 192.168.0.17/24/eth0/192.168.0.255 Filesystem::192.168.0.20:/web/htdocs::/var/www/html::nfs httpd [root@jymlinux ha.d]# scp haresources centfils:/etc/ha.d/ haresources 100% 6018 5.9KB/s 00:00 [root@jymlinux ha.d]# service heartbeat start; ssh centfils 'service heartbeat start'