基于heartbeat v2 crm實現基于nfs的mysql高可用集群

前言

因heartbeat v1內置的資源管理器haresource功能比較簡單,且不支持圖形化管理,所以heartbeat v2不再支持haresource,轉而使用更加強大的資源管理器crm進行集群管理。本文將講解如何基于heartbeat v2 crm實現基于nfs的mysql高可用集群。

高可用實現

實驗拓撲

基于heartbeat實現mysql集群高可用.jpg

實驗環境

node1:172.16.10.123 mariadb-5.5.36 CentOS6.6

node2:172.16.10.124 mariadb-5.5.36 CentOS6.6

NFS:172.16.10.125 CentOS6.6

Windows環境需安裝Xmanager Enterprise 5

配置過程

NFS服務器配置

1.jpg

[root@scholar ~]# vim /etc/exports

/mydata         172.16.0.0/16(rw,no_root_squash)

[root@scholar ~]# service nfs start

安裝mysql

#在node1和node2上分別進行如下操作

2.jpg

[root@node1 mysql]# vim /etc/mysql/my.cnf 

datadir = /mydata/data

log-bin=/mydata/binlogs/master-bin

3.jpg

[root@node1 mysql]# scripts/mysql_install_db --user=mysql --datadir=/mydata/data/

#注意:初始化操作只在一個節點執行即可

啟動服務測試一下

4.jpg

同樣node2上執行以上操作后也啟動測試

5.jpg

測試完成即可卸載共享目錄

[root@node1 mysql]# umount /mydata/

#在兩個節點分別執行

安全起見,此時可將nfs的no_root_squash選項去掉

[root@scholar ~]# vim /etc/exports 

/mydata         172.16.0.0/16(rw)

[root@scholar ~]# exportfs -arv
exporting 172.16.0.0/16:/mydata

heartbeat配置

時間同步

ntpdate

節點解析通信

[root@node1 ~]# vim /etc/hosts
 
172.16.10.123   node1.scholar.com node1
172.16.10.124   node2.scholar.com node2
 
[root@node1 ~]# vim /etc/sysconfig/network
HOSTNAME=node1.scholar.com
 
[root@node1 ~]# uname -n
node1.scholar.com
 
#兩個節點都需如上操作

ssh密鑰配置

[root@node1 ~]# ssh-keygen -t rsa -P ''
[root@node1 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@node2
[root@node2 ~]# ssh-keygen -t rsa -P ''
[root@node2 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@node1
[root@node1 ~]# date; ssh node2 'date' #測試
Mon Jun  8 16:33:36 CST 2015
Mon Jun  8 16:33:36 CST 2015

安裝所需軟件包

#解決依賴關系
[root@node1 ~]# yum install perl-TimeDate net-snmp-libs libnet PyXML -y #需epel源支持
[root@node1 ~]# cd heartbeat2/
[root@node1 heartbeat2]# ls
heartbeat-2.1.4-12.el6.x86_64.rpm             heartbeat-pils-2.1.4-12.el6.x86_64.rpm
heartbeat-gui-2.1.4-12.el6.x86_64.rpm         heartbeat-stonith-2.1.4-12.el6.x86_64.rpm
heartbeat-ldirectord-2.1.4-12.el6.x86_64.rpm
[root@node1 heartbeat2]# 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.rpm heartbeat-gui-2.1.4-12.el6.x8
6_64.rpm

#兩個節點都執行以上操作

準備配置文件

[root@node1 ~]# cp /usr/share/doc/heartbeat-2.1.4/{ha.cf,authkeys} /etc/ha.d
[root@node1 ~]# chmod 600 /etc/ha.d/authkeys

配置算法密鑰

[root@node1 ~]# openssl rand -hex 8
4d8fd6cb49d2047b
[root@node1 ~]# vim /etc/ha.d/authkeys
 
auth 2
2 sha1 4d8fd6cb49d2047b

配置主配置文件

#配置文件如下
[root@node1 ~]# grep -v "#" /etc/ha.d/ha.cf |grep -v "^$"
logfile /var/log/ha-log  #日志存放位置
keepalive 2              #指定心跳使用間隔時間
deadtime 30              #指定備用節點接管主節點服務資源超時時間
warntime 10              #指定心跳延遲的時間
initdead 120             #解決網絡啟動延時
udpport 694              #設置廣播通信端口
mcast eth0 225.0.25.1 694 1 0 #定義廣播地址
auto_failback on              #定義當主節點恢復后,是否將服務自動切回
node    node1.scholar.com     #主節點
node    node2.scholar.com     #備用節點
ping 172.16.0.1               #仲裁設備
crm on                        #啟用crm

將配置文件傳給備用節點

6.jpg

啟用crm圖形界面時需要登錄密碼,在安裝heartbeat-gui時會自動創建一個名為hacluster的用戶,在任一節點上設置hacluster的密碼即可

7.jpg

啟動heartbeat

8.jpg

查看集群狀態

[root@node1 ~]# crm_mon

9.jpg

啟動gui界面

[root@node1 ~]# hb_gui &

10.jpg

11.jpg

Node:節點列表
Resources:資源列表
Constraints:限制約束
Locations:位置約束,資源對某節點運行的傾向性
Orders:順序約束,屬于同一服務的多個資源運行在同一節點時,其啟動及關閉的次序約束
Colocations:排列約束,定義資源彼此間的傾向性(是否在一起)
資源類型:
primitive, native: 主資源,其僅能運行某一節點
group: 組資源,可用于實現限制多個資源運行于同一節點及對此些資源統一進行管理
clone: 克隆資源,一個資源可以運行于多個節點
       應該指定:最大克隆的份數,每個節點最多可以運行的克隆
master/slave: 主從資源,特殊的克隆資源

mysql的高可用需要3個資源:ip,mysqld,nfs,這3個資源都要運行在一個節點上,而且mysqld要在nfs啟動之后出能啟動,ip地址和mysqld服務之間沒有先后關系,服務準備好后再啟動ip也是可以的。高可用的httpd服務需要先啟動ip,因為服務啟動的時候明確需要ip地址的資源,這兩類高可用資源之間是不同的。

添加資源

首先定義一個組

12.jpg

13.jpg

添加第一個資源

14.jpg

添加第二個資源

15.jpg

16.jpg

添加第三個資源

17.jpg

添加資源約束

nfs要和mysqld在一個節點

18.jpg

19.jpg

ip要和mysqld在一個節點

20.jpg

定義排列約束后這3個資源會同時運行在同一個節點上,需要注意的是mysqld服務要在nfs掛載之后啟動,所以需要定義資源順序約束

21.jpg

22.jpg

定義好順序約束之后還可定義位置約束,可定義更傾向運行在哪個節點

23.jpg

24.jpg

添加表達式及對該節點的傾向性

25.jpg

啟動所有資源

26.jpg

27.jpg

因為傾向于node1,所以資源運行于node1上,我們在node1授權一個用戶測試

28.jpg

在其他客戶端測試

29.jpg

此時模擬node1掛掉了,將node1設置為standby模式

30.jpg

再次連接數據庫測試

31.jpg

數據沒有受到絲毫影響,再次將node1上線,資源會再次回到node1,這里就不再演示了,至此,基于heartbeat v2 crm實現基于nfs的mysql高可用集群完成

The end

本次實驗就進行到這里了,實驗過程出現問題可以留言交流,后文將會提供另一種高可用方案:mysql + drbd + corosync,有興趣可以繼續關注。以上僅為個人學習整理,如有錯漏,大神勿噴~~~

原創文章,作者:書生,如若轉載,請注明出處:http://www.www58058.com/5171

(0)
書生書生
上一篇 2015-06-11 13:18
下一篇 2015-06-12 16:18

相關推薦

  • shell編程作業

    1、編寫腳本/root/bin/systeminfo.sh,顯示當前主機系統信息,包括主機名,IPv4地址,操作系統版本,內核版本,CPU型號,內存大小,硬盤大小。 [root@localhost sh.log]# cat systeminfo.sh  #!/bin/bash #author:DYW #顯示當前主機系統…

    Linux干貨 2016-08-15
  • 重定向和管道

    重定向和管道 今天一起來學習一下重定向的一些相關命令及用法: 我們都知道程序=指令+數據 ,那么我們的數據的輸入(Input)和輸出(Output)是如何實現的呢?!跟小編君一起來看一下吧: 本博文小編君分成了四部分:1.重定向的講解 2.管道符的講解 3.涉及到的一些其他命令 4.練習題 一:重定向 重定向的本質是改變文件的默認位置,即換個地方存儲數據。 …

    2017-08-04
  • top,htop,ps,dstat命令的使用

    top top是一個動態顯示過程,即可跟據用戶的按鍵不斷刷新當前狀態,top命令提供了實時的對當前系統的狀態監視。 top – 11:53:40 up 11 days, 13:32,  3 users,  load average:&nbs…

    Linux干貨 2017-03-15
  • Mariadb基于ssl的主從復制

    Mariadb基于ssl的主從復制 一、前言 備份數據庫是生產環境中的首要任務,重中之重。一般配置中mariadb的主從傳輸是明文傳輸,但是有時候對一些特殊業務來說是不允許的,為了保證數據在傳輸過程中的安全性,因此使用基于SSL的復制會大大加強數據的安全性。 二、準備工作 1、實驗系統環境: CentOS7.2,SELinux關閉,iptables關閉,安裝…

    Linux干貨 2017-02-24
  • MariaDB日志

    MariaDB日志 查詢日志:query log; 慢查詢日志:slow query log 查詢時長超出指定界限。 錯誤日志:error log 二進制日志:binary log;此中存儲要發生改變或潛在發生改變的語句。 中繼日志:reley log 事務日志:transaction log 1、查詢日志 記錄查詢語句,日志存儲位置:一般不開啟。 文件:f…

    Linux干貨 2016-11-20
  • 網絡管理實戰(子網劃分、單網卡多IP、多網卡單IP、Linux路由實現)

        1、某公司申請到一個C 類IP 地址,但要連接6 個的子公司,最大的一個子 公司有26 臺計算機,每個子公司在一個網段中,則子網掩碼應設為?          分析過程:C類地址標準的掩碼為24位,因為有6個子公…

    Linux干貨 2016-09-05

評論列表(3條)

  • sqeues
    sqeues 2015-08-31 15:54

    root@node1 ~]# hb_gui &
    [1] 1690
    [root@node1 ~]# 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

    [1]+ Exit 1 hb_gui

  • sqeues
    sqeues 2015-08-31 16:10

    centos6.4最小化安裝,Xmanager Enterprise 5執行hb_gui一直報錯

欧美性久久久久