一、實驗環境
1)實驗圖
2)同步時間;確??梢允褂弥鳈C名通信;確保可以使用ssh秘鑰方式進行彼此登錄;由于是兩臺設備,需要仲裁;
確保可以使用主機名通信
web1修改hosts文件如下: 172.16.2.12 SQL1.linux.com SQL1 172.16.2.14 SQL2.linux.com SQL2 web2修改hosts文件如下: 172.16.2.12 SQL1.Linux.com SQL1 172.16.2.14 SQL2.linux.com SQL2
確保主機可以使用ssh秘鑰彼此登錄
[root@SQL1~]# ssh-keygen -P '' \\生成秘鑰 [root@SQL1~]# ssh-copy-id -i .ssh/id_rsa.pub root@172.16.2.14 \\將公鑰復制給web2 [root@SQL2 ~]# ssh-keygen -P '' \\生成秘鑰 [root@SQL2 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@172.16.2.12 \\將公鑰復制給web1
確保主機之間時間同步
[root@SQL1 ~]# crontab -e */5 * * * * /usr/sbin/ntpdate 172.16.2.13 [root@SQL2 ~]# crontab -e */5 * * * * /usr/sbin/ntpdate 172.16.2.13
測試
[root@SQL1 ~]# date; ssh SQL2 'date' Sat Jun 27 15:10:35 CST 2015 Sat Jun 27 15:10:35 CST 2015 [root@SQL2 ~]# date;ssh SQL1 'date' Sat Jun 27 15:11:13 CST 2015 Sat Jun 27 15:11:13 CST 2015
二、安裝配置heartbeat v2
1)安裝依賴包;前提準備好epel源
阿里云eple源 wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-6.repo
[root@SQL1 heartbeat]# yum -y install net-snmp-libs PyXML gettext-devel libtool-ltdl pygtk2-libglade libnet [root@SQL1 heartbeat]# rpm -ivh heartbeat-pils-2.1.4-12.el6.x86_64.rpm [root@SQL1 heartbeat]# rpm -ivh heartbeat-stonith-2.1.4-12.el6.x86_64.rpm [root@SQL1 heartbeat]# rpm -ivh heartbeat-gui-2.1.4-12.el6.x86_64.rpm [root@SQL1 heartbeat]# rpm -ivh heartbeat-2.1.4-12.el6.x86_64.rpm [root@SQL2 heartbeat]# yum -y install net-snmp-libs PyXML gettext-devel libtool-ltdl pygtk2-libglade libnet [root@SQL2 heartbeat]# rpm -vih heartbeat-pils-2.1.4-12.el6.x86_64.rpm [root@SQL2 heartbeat]# rpm -ivh heartbeat-stonith-2.1.4-12.el6.x86_64.rpm [root@SQL2 heartbeat]# rpm -ivh heartbeat-gui-2.1.4-12.el6.x86_64.rpm [root@SQL2 heartbeat]# rpm -ivh heartbeat-2.1.4-12.el6.x86_64.rpm
2)對heartbeat進行配置
[root@SQL1 ha.d]# rpm -ql heartbeat \\查看heartbeat生成文件 [root@SQL1 ~]# cd /usr/share/doc/heartbeat-2.1.4/ [root@SQL1 heartbeat-2.1.4]# cp authkeys ha.cf haresources /etc/ha.d/ authkeys :是主機之間信息傳遞使用的秘鑰 ha.cf:是heartbeat的主配置文件 haresource: 資源配置文件 [root@SQL1 heartbeat-2.1.4]# cd /etc/ha.d/ [root@SQL1 ha.d]# openssl rand -hex 6 e5b50e897cb4 \\生成秘鑰 [root@SQL1 ha.d]# vim authkeys \\配置秘鑰 auth 1 1 md5 e5b50e897cb4 [root@SQL1 ha.d]# chmod 400 authkeys \\修改秘鑰文件的權限;建議使用400;如果不修改權限heartbeat無法啟動 [root@SQL1 ha.d]# vim ha.cf logfile /var/log/ha-log \\ 定義日志文件 mcast eth0 227.10.10.1 694 1 0 \\定義組播地址以及傳遞的相關屬性(mcast組播;bcast廣播;ucast單播) auto_failback on \\搶占模式;主節點恢復故障后從備用節點那里搶回主節點功能 node SQL1.linux.com \\添加ha節點;此名稱必須是“uname -n”看到的主機名 node SQL2.linux.com \\添加ha節點;此名稱必須是“uname -n”看到的主機名 ping 172.16.2.1 \\ 定義仲裁設備 compression bz2 \\啟用壓縮功能 compression_threshold 2 \\大于多少k之后開始壓縮 crm on \\啟用heartbeat v2版
3)在SQL1節點將配置復制給SQL2一份
[root@SQL1 ha.d]# scp authkeys ha.cf haresources.bak SQL2:/etc/ha.d/
4)啟動服務
[root@SQL1 ~]# service heartbeat start; ssh SQL2 "service heartbeat start" logd is already running Starting High-Availability services: Done. logd is already running Starting High-Availability services: Done.
5)查看監聽端口:監聽在組播地址227.10.10.1的UDP/694端口
[root@SQL1 ~]# ss -upln State Recv-Q Send-Q Local Address:Port Peer Address:Port UNCONN 0 0 227.10.10.1:694 *:* users:(("heartbeat",23422,7),("heartbeat",23423,7)) UNCONN 0 0 *:60749 *:* users:(("heartbeat",23422,6),("heartbeat",23423,6))
6)安裝mariadb數據庫
配置mysql共享存儲
[root@time-or-nfs ~]# groupadd -g 300 mysql \\由于nfs權限與mysql初始化要求,需要創建mysql用戶組 [root@time-or-nfs ~]# useradd -u 300 -g 300 mysql [root@time-or-nfs ~]# mkdir -pv /mydata/data \\創建共享目錄 [root@time-or-nfs ~]# vim /etc/exports \\編輯nfs配置文件 /mydata 172.16.2.0/24(rw,no_root_squash) \\編輯共享權限 [root@time-or-nfs ~]# service nfs start \\啟動nfs服務
[root@SQL1 ~]# tar xf mariadb-5.5.36-linux-x86_64.tar.gz -C /usr/local \\解壓mariadb [root@SQL1 ~]# cd /usr/local/ \\\切換目錄 [root@SQL1 local]# ln -sv mariadb-5.5.36-linux-x86_64/ mysql \\創建軟連接 [root@SQL1 local]# groupadd -g 300 mysql \\ 創建mysql組,GID要與nfs服務器上的mysql的GID相同 [root@SQL1 local]# useradd -u 300 -g 300 mysql \\創建mysql組,UDI與nfs服務器上的UID相同 [root@SQL1 local]# mkdir /mydata \\創建掛載目錄 [root@SQL1 local]# mount -t nfs 172.16.2.13:/mydata /mydata \\掛載共享文件 [root@SQL1 local]# cd mysql [root@SQL1 mysql]# scripts/mysql_install_db --user=mysql --datadir=/mydata/data/ \\初時化數據庫 [root@SQL1 mysql]# mkdir /etc/mysql/ \\創建mysql配置文件存放目錄 [root@SQL1 mysql]# cp support-files/my-large.cnf /etc/mysql/my.cnf \\復制mysql配置文件到/etc/mysql/ [root@SQL1 mysql]# vim /etc/mysql/my.cnf \\編輯mysql的配置文件 datadir=/mydata/data \\設置數據存放目錄 innodb_file_per_table = on \\開啟每表結構 skip_name_resolve = on \\禁止mysql主機名解析 [root@SQL1 mysql]# cp support-files/mysql.server /etc/init.d/mysqld \\復制啟動腳本到/etc/init.d目錄下 [root@SQL1 mysql]# chkconfig --add /etc/init.d/mysqld \\添加mysql啟動腳本為lsb風格 [root@SQL1 mysql]# service mysqld start \\啟動mysql Starting MySQL... [ OK ] [root@SQL1 mysql]# mysql \\進入mysql mysql> CREATE DATABASE heartbeat; \\創建測試數據庫 mysql> use heartbeat; \\設置默認庫 mysql> CREATE TABLE ha_mysql(Number INT); \\創建測試表 mysql> GRANT ALL ON heartbeat.* TO "heartbeat"@"172.16.2.%" IDENTIFIED BY "heartbeat"; \\用戶授權 mysql> FLUSH PRIVILEGES; \\刷新權限 mysql> SHOW DATABASES; \\查看數據庫 +--------------------+ | Database | +--------------------+ | information_schema | | heartbeat | | mysql | | performance_schema | | test | +--------------------+ mysql> USE heartbeat ; \\切換數據庫 mysql> show tables; \\查看表 +---------------------+ | Tables_in_heartbeat| +---------------------+ | ha_mysql | +---------------------+ [root@SQL1 mysql]# service mysqld stop \\停止數據庫 Shutting down MySQL. [ OK ] [root@SQL1 mysql]# umount /mydata/ \\卸載共享目錄
[root@SQL2 ~]# tar xf mariadb-5.5.36-linux-x86_64.tar.gz -C /usr/local [root@SQL2 ~]# cd /usr/local [root@SQL2 local]# ln -sv mariadb-5.5.36-linux-x86_64/ mysql [root@SQL2 local]# cd mysql/ [root@SQL2 mysql]# groupadd -g 300 mysql [root@SQL2 mysql]# useradd -u 300 -g 300 mysql [root@SQL2 mysql]# cp support-files/my-large.cnf /etc/mysql/my.cnf [root@SQL2 mysql]# vim /etc/mysql/my.cnf datadir = /mydata/data innodb_file_per_table = on skip_name_resolve = on [root@SQL2 mysql]# cp support-files/mysql.server /etc/init.d/mysqld [root@SQL2 mysql]# chkconfig --add /etc/init.d/mysqld [root@SQL2 mysql]# mount -t nfs 172.16.2.13:/mydata/ /mydata/ [root@SQL2 mysql]# service mysqld start Starting MySQL.. [ OK ] [root@SQL2 mysql]# mysql -h172.16.2.14 -uheartbeat -p mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema| | heartbeat | | test | +--------------------+ mysql> USE heartbeat; mysql> SHOW TABLES ; +---------------------+ | Tables_in_heartbeat| +---------------------+ | ha_mysql | +---------------------+ [root@SQL2 mysql]# service mysqld stop Shutting down MySQL. [ OK ] [root@SQL2 mysql]# umount /mydata/
7)設置hacluster用戶的密碼(設置hacluster用戶密碼只需要在一個節點設置即可)
[root@SQL1 ~]# echo "test" | passwd --stdin hacluster
8)在圖形終端啟動heartbeat的圖形接口:hb_gui (或者使用xshell的企業版)
9)添加vip
10)添加nfs文件系統
11)添加mysql服務
12)添加vip與nfs的排序約束
13)添加mysql與nfs的排序約束
14)添加vip與nfs的順序約束
15)添加mysql服務與nfs的順序約束
16)添加本地約束
17)啟動資源
18)測試訪問mysql
[root@SQL1 ~]# mysql -h 172.16.2.100 -uheartbeat -p Enter password: mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema| | heartbeat | | test | +--------------------+ mysql> USE heartbeat; mysql> SHOW TABLES; +---------------------+ | Tables_in_heartbeat| +---------------------+ | ha_mysql | +---------------------+
19)切換工作主機;選擇sql2,右擊選擇Standby;在彈出的對話框中選擇yes
20)測試訪問:
[root@SQL2 ~]# mysql -h172.16.2.100 -uheartbeat -p Enter password: mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema| | heartbeat | | test | +--------------------+ mysql> USE heartbeat; mysql> SHOW TABLES; +---------------------+ | Tables_in_heartbeat| +---------------------+ | ha_mysql | +---------------------+
原創文章,作者:馬行空,如若轉載,請注明出處:http://www.www58058.com/5728
向你學習,有個問題想問一下,我運行hb_gui &報錯,是該如何解決。。安裝了Xmanager的。[root@node2 ~]# hb_gui & [1] 2384 [root@node2 ~]# Traceback (most recent call last): File “/usr/bin/hb_gui”, line 41, in import gtk, gtk.glade, gobject File “/usr/lib64/python2.6/site-packages/gtk-2.0/gtk/__init__.py”, line 64, in _init() File “/usr/lib64/python2.6/site-packages/gtk-2.0/gtk/__init__.py”, line 52, in _init _gtk.init_check() RuntimeError: could not open display
@charles2311:我是在另一臺測試機上,安裝的gone桌面,進行試驗的