1.環境準備
角色 | IP |
VIP | 192.168.42.160(提供服務的地址) |
Master | eth0:192.168.42.163(本地管理IP) eth1:172.16.1.2/16(心跳線) |
Salve | eth0:192.168.42.162(本地管理IP) eth1:172.16.1.3/16(心跳線) |
NFS | 192.168.42.135 |
2.搭建NFS服務器
1.)安裝nfs
#yuminstall rpcbind nfs-utils –y
#servicerpcbind start
#chkconfigrpcbind on
#servicenfs start
#chkconfignfs off #一定要關掉,HA集羣中由heartbeat管理
#mkdir/mydata #把/mydata目錄用NFS共享出去
2.)創建mysql用戶
#groupadd–g 3306 mysql
#useradd–u 3306 –g 3306 –s /sbin/nologin –M mysql
#mkdir/mydata/data #存放mysql數據
#chown –R mysql.mysql /mydata/data
3.)配置nfs服務
#vim/etc/exports
/mydata 192.168.42.0/24(no_root_squash,rw)
#exportfs–arv
4.)測試
mount–t nfs 192.168.42.135:/mydata /mnt #在其他機器測試是否能掛載成功
3.安裝mysql
1.)創建mysql用戶
各個節點和NFS上存在mysql用戶且id號必須保持一致
#groupadd –g 3306 mysql
#useradd–u 3306 –g 3306 –s /sbin/nologin –M mysql
# mkdir /mydata
2.)mysql安裝及配置
#tar xf mysql-5.6.23-linux-glibc2.5-x86_64.tar–C /usr/local
#cd /usr/local
#ln –s mysql-5.6.23-linux-glibc2.5-x86_64mysql
#chown –R root:mysql ./mysql/* #解壓並修改目錄權限
#mount 192.168.42.135:/mydata /mydata
#cd /mysql
#scripts/mysql_install_db –user=mysql–datadir=/mydata/data
#ll /mydata/data #掛載NFS目錄並初始化mysql,其他節點無需初始化mysql
#cp support-files/my-default.cnf/etc/my.cnf
掛載nfs目錄並測試mysql服務是否正常(各個節點)
#mount –t nfs192.168.42.135:/mydata/data /mydata
#service mysqld start
#/usr/local/mysql/bin/mysql
mysql> create databases mydb; #創建一個庫進行測試
mysql> show global variableslike ‘%innodb%’: #查看innodb引擎設置是否生效
#service mysqld stop
#umount /mydata
掛載nfs到另一節點看看剛纔創建的庫是否存在
Mysql設置密碼
#mysqladm –u root –p password “新密碼”
Enter password: 【輸入原來的密碼】
4. Heartbeat v2安裝部署前的環境準備
1.) 主機名及hosts設置(heartbeat是通過主機名來通信的,所以必須規劃好)
Master:
#hostname node1.pachira.cn
#vim /etc/sysconfig/network
HOSTNAME=node1.pachira.cn
#vim /etc/hosts
127.0.0.1 localhost
::1 localhost localhost.localdomainlocalhost6 localhost6.localdomain6
192.168.42.163 node1.pachira.cn node1
192.168.42.162 node2.pachira.cn node2
Salve:
按同樣的步驟設置主機名及解析。必須確保主機名與uname –n的結果是一樣的。
最後在各自ping下node1、node2測試一下。
2.) 各節點間的ssh雙機互信
node1:
#ssh-keygen –t rsa –f./.ssh/id_rsa –P ‘’
#ssh-copy-id –i ./.ssh/id_rsa.pubroot@node2
node2:
#ssh-keygen –t rsa –f ./ssh/id_rsa–P ‘’
#ssh-copy-id –i ./.ssh/id_rsa.pubroot@node1
3.) 各節點間的時間同步(很重要)
node1:
配置成ntp server端
node2:
#crontab –e
*/30 * * * * /sbin/ntpdate192.168.42.163
添加防火牆(這裏默認是關閉的)與關閉SELinux
node1,node2
#vim /etc/selinux/config
SELINUX=disabled
#setenforce 0
5. 安裝與配置
1.) 安裝heartbeat(
node1:
#yum install PyXML perl-MailTools –y
#rpm –ivh libnet-1.1.6-7.el6.x86_64
#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.rpmheartbeat-gui-2.1.4-12.el6.x86_64.rpm
2.) 配置heartbeat
默認安裝好的heartbeat沒有配置文件,但是有樣例文件
#cp/usr/share/doc/heartbeat-2.1.4/{authkeys,ha.cf} /etc/ha.d/
這裏只需要兩個配置文件,ha.cf與authkeys
#cd /etc/ha.d/
#chmod 600 authkeys
以下的ha.cf與authkeys是經過我刪減後的,可以直接使用
#vim authkeys
auth 1
1 md591961e19f5730f736d27c07ffbc093d1
#vim ha.cf
#debugfile /var/log/ha-debug
#logfile /var/log/heartbeat.log
logfacility local0
keepalive 2 #發送心跳的間隔時間
#deadtime 30 #超出30秒未收到對方節點的心跳,則認爲對方已經死亡
#warntime 10 #警告時間
#initdead 120 #網絡啓動時間
udpport 694
#bcast eth1 #廣播的方式進行心跳監測,網卡根據生產環境設置
mcast eth1 225.0.100.10 694 1 0 #組播的方式進行心跳監測
auto_failback on
node node1.pachira.com #設置集羣中的節點,節點名必須與uname –n 一樣
node node2.pachira.com
ping 192.168.42.254 #ping集羣外的其他節點,監測網絡的連通性,可以設置網關
#ping_group group1 10.10.10.25410.10.10.253
#deadping 30
crm on #啓用crm
複製以上2個配置文件到node2上
#scp authkeys ha.cfnode2:/etc/ha.d
3.) 啓動heartbeat
說明:啓動heartbeat之前確保heartbeat所管理的資源都是關閉狀態,並關閉開機自啓動
#service heartbeat start
#ssh node2 “service heartbeatstart”
node1 node2上用netstat –tunlp 檢查下端口
4.) 配置heartbeat集羣資源
需要配置的集羣資源:VIP NFS Mysql
#passwd hacluster #爲客戶端連入服務端進行配置的用戶設置密碼
#hb_gui & #啓動heartbeat圖形化的客戶端程序,在window中可以用xmanager打開,也可以用VNC連接linux 桌面
定義資源粘性,定義一個大於0的數代表該資源更傾向於運行於當前所在的節點上。
把VIP Mysql NFS定義到一個資源組內(資源啓動順序 VIP NFS Mysql)創建資源組(按資源啓動順序創建)
添加VIP資源
添加NFS資源
添加mysql資源
啓動
啓動後
嘗試讓node1處於standby狀態,查看資源的切換情況
模擬node1再次上線,查看情況
所有資源都運行於node2上
Mysql(每60秒監測資源運行狀況,如果發現資源不在,則嘗試啓動資源,如果30秒還未啓動成功,則 資源切換到另外節點)
6.)heartbeat默認啓動與關閉資源的超時時間是20s,如果20s未啓動成功與關閉成功,則會造成切換故障,有些資源啓動與關閉的時間超過20s,這時候就需要單獨配置資源的啓動與關閉的超時時間了。
至此,此高可用方案部署完畢。