高可用集群(HA)配置


高可用集群(HA)

1. 准備工作

HA的心跳監測可以通過串口連接監測也可以通過網線監測,前者需要服務器有一個串口,后者需要有一個空閑網卡。
HA架構中需要有一個共享的存儲設備
首先需要在兩台機器上安裝mysql服務,並架設好共享存儲資源(NFS), 共享的目錄應該是datadir
HA需要兩台機器配置一個相同的vip
理論上每台機器要配置三個ip,一個是vip(eth0:0),一個是心跳線監測使用的ip(eth1),還有一個是服務使用的ip(eth0)

我們設定如下環境:
vip(eth0:0): 192.168.0.100
機器1 eth0:192.168.0.21  eth1: 192.168.200.128
機器2 eth0:192.168.0.22  eth1: 192.168.200.129
機器1 我們簡稱node1, 機器2我們簡稱node2

配置hosts, 兩台機器一樣:
192.168.0.21 node1
192.168.0.22 node2

node1 & node2  關閉防火牆,關閉selinux

配置hostname
雖然我們口頭上約定好了node1  node2,但是若是主機名和這個不一致,會導致heartbeat啟動不了。所以還得在每台機器上配置hostname。

2. 配置NFS安裝mysql

NFS由第三台機器(192.168.0.11)提供
NFS 服務端執行:vim /etc/exports //內容如下
/data/share 192.168.0.0/24(rw,sync,no_root_squash)
NFS服務端執行命令:
/etc/init.d/rpcbind start; /etc/init.d/nfs start


node1 & node2 執行以下步驟:
mkdir -p /data/mysql
mount -t nfs 192.168.0.11:/data/share/ /data/mysql/
groupadd -g 27 mysql
useradd -u 27 -g mysql mysql
chown -R mysql:mysql /data/mysql

下載免編譯的二進制mysql包
wget http://syslab.comsenz.com/downlo ... -icc-glibc23.tar.gz
tar zxvf mysql-5.1.40-linux-i686-icc-glibc23.tar.gz
mv mysql-5.1.40-linux-i686-icc-glibc23 /usr/local/mysqlcd /usr/local/mysql
cp support-files/my-large.cnf  /etc/my.cnf
cp support-files/mysql.server  /etc/init.d/mysqld
vim /etc/init.d/mysqld  //更改datadir 以及 basedir
以下操作僅在node1上執行,node2 上不用執行這一步:
./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
node1 上先啟動mysql,node2上暫時先不啟動:
/etc/init.d/mysqld start
注意:如果想啟動node2上的mysql,必須先停掉node1上的mysql,因為這兩個mysql共同用一個datadir有共享的資源,會產生沖突,而在heartbeat服務中,如果node1正常則node2默認就停止mysql服務,只有當node1宕機,node2才會自動啟動mysql服務

3. 安裝配置heartbeat

node1 & node2 執行:

需先安裝epel擴展源:
yum install -y epel-release
yum install -y heartbeat*  libnet

以下配置在node1:
cd  /usr/share/doc/heartbeat-2.1.3/
cp authkeys haresources ha.cf  /etc/ha.d/
cd /etc/ha.d

vim authkeys// 增加下面兩行:
auth 3
3 md5 Hello!
###
保存后更改它的權限:
chmod 600 authkeys

vim haresources //增加一行: 
node1 192.168.0.100/24/eth0:0 mysqld

注意:此處的啟動腳本不能是軟鏈接!!!

vim ha.cf //更改或增加如下內容
logfile /var/log/ha.log
#bcast eth1    #心跳使用以太網廣播方式,eth1為廣播地址
ucast eth1 192.168.200.129  #單播形式與對方機器通信,與上者二選一
keepalive 2   #每2秒發一次廣播
warntime 10   # 這個時間為警告時間,10s鍾內沒有收到對方節點的信號,則會發警告信息記錄到日志里
deadtime 30  #30s內沒有收到對方節點的信號則認為對方節點宕機,然后立即接管對方節點的服務
initdead 120   #這個時間是給重啟系統留出來的等待時間,如果系統重啟了那么網絡服務不會立即正常使用
udpport 694   # 廣播通信使用的端口
auto_failback on   # 如果是on, 則當主節點故障恢復后,服務還會切換回來
node node1   #主節點主機名
node node2   #從節點主機名
ping 192.168.0.1    #仲裁節點,最好是一個比較強健的設備,比如說交換機
respawn hacluster /usr/lib/heartbeat/ipfail  
   #當heartbeat啟動時也會隨着一起啟動的進程放到這里,ipfail是用來檢測網絡連通性的工具,hacluster為啟動該程序的用戶
debugfile /var/log/ha-debug.log
#####以上為添加內容

把node1上的三個配置文件拷貝至node2
node1上執行:
cd /etc/ha.d;
scp ha.cf haresources authkeys  node2:/etc/ha.d/

node2上修改 vim /etc/ha.d/ha.cf //把
ucast eth1 192.168.200.129改為 ucast eth1 192.168.200.128

啟動heartbeat: node1 & node2都執行:
service heartbeat start

4. 測試heartbeat
node1 上把icmp禁止:
iptables -I INPUT -p icmp -j DROP
tail  -f /var/log/ha-log.log
使用命令:ifconfig 查看,已經沒有了 eth0:0
node2 上ifconfig查看, 已經開啟了eth0:0
在node1上解除防火牆:
iptables -D INPUT -p icmp -j DROP
tail -f /var/log/ha-log.log
ifconfig命令查看eth0:0 會開啟,而node2上eth0:0會自動關閉
在node1上執行命令:killall heartbeat
node2上也會自動開啟eth0:0


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM