corosync+pacemaker+drbd+mysql來實現mysql的高可用和數據的同步

實現拓撲圖:

(`6MW_U1H1_0R2~8H{@KEP6.png

實驗流程:

  1. 先對兩主機安裝上corosync和pacemaker

  2. 兩主機安裝drbd服務,并且設置好drbd的組設備

  3. 選擇drbd主節點上,進行數據庫的初始化

  4. 進行資源的定義和配置

  5. 測試

實驗前,我們還需要做一些準備工作:

1、時間必須保持同步

  使用ntp服務器

2、節點必須名稱互相通信

   解析節點名稱

   /etc/host

   集群中使用的主機名為`uname -n`表示的主機名;

3、ping node

   僅偶數節點才需要;

4、ssh密鑰認證進行通信;

實驗步驟:

安裝corosync和pacemaker:

yum install corosync pacemaker -y

配置corosync,同時讓pacemaker在corosync以插件的方式運行:

vim /etc/corosync/corosync.conf

compatibility: whitetank

totem {
        version: 2
        secauth: off
        threads: 0
        interface {
                ringnumber: 0
                bindnetaddr: 172.16.100.0
                mcastaddr: 226.94.1.1
                mcastport: 5405
                ttl: 1
        }
}
service {
        ver: 0
        name: pacemaker
}
aisexec {
        user: root
        group: root
}

logging {
        fileline: off
        to_stderr: no
        to_logfile: yes
        to_syslog: yes
        logfile: /var/log/cluster/corosync.log
        debug: off
        timestamp: on
        logger_subsys {
                subsys: AMF
                debug: off
        }
}

amf {
        mode: disabled
}

為corosync服務提供密鑰文件:

corosync-keygen

然后,我們需要把這些配置都要往另一個主機上配置一次。

安裝drbd,并且進行全局配置和配置drbd組資源的定義:

這里說明一下,我已經把分區準備好了,且容量一樣,分區為/dev/sdb1

rpm -ivh drbd-8.4.3-33.el6.x86_64.rpm drbd-kmdl-2.6.32-431.el6-8.4.3-33.el6.x86_64.rpm(這個包的后綴要與你uanme -r的一致)

vim /etc/drbd.d/global_common.conf 配置drbd全局配置文件
global {
        usage-count no;
        # minor-count dialog-refresh disable-ip-verification
}

common {
        protocol C;
        handlers {
                # These are EXAMPLE handlers only.
                # They may have severe implications,
                # like hard resetting the node under certain circumstances.
                # Be careful when chosing your poison.

                # local-io-error "/usr/lib/drbd/notify-io-error.sh; /usr/lib/drbd/notify-emergency-shutdown.sh; echo o > /proc/sysrq-trigger ; halt -f";
                # fence-peer "/usr/lib/drbd/crm-fence-peer.sh";
                # split-brain "/usr/lib/drbd/notify-split-brain.sh root";
                # out-of-sync "/usr/lib/drbd/notify-out-of-sync.sh root";
                # before-resync-target "/usr/lib/drbd/snapshot-resync-target-lvm.sh -p 15 -- -c 16k";
                # after-resync-target /usr/lib/drbd/unsnapshot-resync-target-lvm.sh;
        }

        startup {
                # wfc-timeout degr-wfc-timeout outdated-wfc-timeout wait-after-sb
        }

        options {
                # cpu-mask on-no-data-accessible
        }

        disk {
                # size max-bio-bvecs on-io-error fencing disk-barrier disk-flushes
                # disk-drain md-flushes resync-rate resync-after al-extents
                # c-plan-ahead c-delay-target c-fill-target c-max-rate
                # c-min-rate disk-timeout
                on-io-error detach;
        }

        net {
                # protocol timeout max-epoch-size max-buffers unplug-watermark
                # connect-int ping-int sndbuf-size rcvbuf-size ko-count
                # allow-two-primaries cram-hmac-alg shared-secret after-sb-0pri
                # after-sb-1pri after-sb-2pri always-asbp rr-conflict
                # ping-timeout data-integrity-alg tcp-cork on-congestion
                # congestion-fill congestion-extents csums-alg verify-alg
                # use-rle
                cram-hmac-alg "sha1";
                shared-secret "mydrbdlab";
        }
        syncer {
                rate 1000M;
}
}

配置drbd組資源的配置文件:
vim /etc/drbd.d/mysqldata.res
resource mysqldata {
        on www.bwei.com {
                device /dev/drbd0;
                disk /dev/sdb1;
                address 172.16.100.1:7789;
                meta-disk internal;
}
        on www2.bwei.com {
                device /dev/drbd0;
                disk /dev/sdb1;
                address 172.16.100.5:7789;
                meta-disk internal;
}


}

drbdadm create-md mysqldata

啟動drbd服務:
service drbd start

我們查看drbd的狀態:
[root@www drbd.d]# drbd-overview 
  0:mysqldata/0  Connected Secondary/Secondary Inconsistent/Inconsistent C r----- 
  
  我們把一個節點設置成主節點:
  [root@www drbd.d]# drbdadm -- --overwrite-data-of-peer primary mysqldata
  
  [root@www drbd.d]# drbd-overview 
  0:mysqldata/0  Connected Primary/Secondary UpToDate/UpToDate C r----- 
  
  把這個分區進行格式化:
  mke2fs -t ext4 /dev/drbd0
  
 創建mysql的數據目錄:
 mkdir /data
 mount /dev/drbd0 /data
 mkdir /data/mysql
 
 提供mysql的用戶和組,把數據目錄的屬主和屬組改為mysql:
 [root@www ~]# groupadd -r mysql -g 360
[root@www ~]# useradd mysql -g mysql -u 360 -r 
[root@www ~]# chown mysql:mysql /data/mysql/

接著,我們開始進行數據的初始化:
[root@www ~]# tar xf mariadb-10.0.10-linux-x86_64.tar.gz -C /usr/local/

[root@www local]# ln -sv mariadb-10.0.10-linux-x86_64 mysql
`mysql' -> `mariadb-10.0.10-linux-x86_64'

[root@www local]# mysql/scripts/mysql_install_db --user=mysql --datadir=/data/mysql --basedir=/usr/local/mysql/

[root@www local]# cp mysql/support-files/my-huge.cnf /etc/my.cnf 
cp: overwrite `/etc/my.cnf'? y
[root@www local]# vim /etc/my.cnf 
[mysqld]
datadir = /data/mysql

[root@www local]# cp mysql/support-files/mysql.server /etc/init.d/mysqld
[root@www local]# chkconfig --add mysqld
[root@www local]# chkconfig mysqld off
[root@www local]# service mysqld start
Starting MySQL..                                           [  OK  ]
[root@www local]# mysql/bin/mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 4
Server version: 10.0.10-MariaDB-log MariaDB Server

Copyright (c) 2000, 2014, Oracle, SkySQL Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> 

我們的mysql已經做好了,注意另一個主機也是需要mysql的配置文件和啟動腳本,不需要再進行mysql的初始化了。

下面我們需要安裝crmsh進行資源配置文件的定義:
rpm -ivh crmsh-1.2.6-4.el6.x86_64.rpm pssh-2.3.1-2.el6.x86_64.rpm

service corosync start

crm
crm(live)# configure
crm(live)configure# property no-quorum-policy=ignore
crm(live)configure# property stonith-enabled=false
crm(live)configure# verify 
crm(live)configure# commit
crm(live)configure# primitive mysqldrbd ocf:linbit:drbd params drbd_resource=mysqldata op monitor interval=30 role=Master timeout=30 op monitor interval=40 role=Slave timeout=30 op start timeout=240 op stop timeout=100
crm(live)configure#primitive mysqlfs ocf:heartbeat:Filesystem params device=/dev/drbd0 directory=/data/mysql fstype=ext4 op start timeout=60 op stop timeout=60
crm(live)configure# primitive mysqld lsb:mysqld
crm(live)configure# primitive mysqlvip ocf:heartbeat:IPaddr params ip=172.16.100.4
crm(live)configure# ms ms_mysqldrbd mysqldrbd meta master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=true
crm(live)configure# colocation mysqld_with_mysqlfs inf: mysqld mysqlfs
crm(live)configure# 
crm(live)configure# 
crm(live)configure# order mysqlfs_after_ms_mysqldrbd inf: ms_mysqldrbd:promote mysqlfs:start
crm(live)configure# order mysqld_after_mysqlfs inf: mysqlfs mysqld
crm(live)configure# commit
crm(live) status
Last updated: Thu Nov  5 05:29:23 2015
Last change: Thu Nov  5 05:26:49 2015 via cibadmin on www.bwei.com
Stack: classic openais (with plugin)
Current DC: www2.bwei.com - partition with quorum
Version: 1.1.10-14.el6-368c726
2 Nodes configured, 2 expected votes
5 Resources configured


Online: [ www.bwei.com www2.bwei.com ]

 mysqlfs        (ocf::heartbeat:Filesystem):    Started www.bwei.com 
 mysqlvip       (ocf::heartbeat:IPaddr):        Started www.bwei.com 
 Master/Slave Set: ms_mysqldrbd [mysqldrbd]
     Masters: [ www.bwei.com ]
     Slaves: [ www2.bwei.com ]
 mysqld (lsb:mysqld):   Started www.bwei.com

 
 這里看出,我們的服務已經配置完畢!!

原創文章,作者:13-廣州-楊過,如若轉載,請注明出處:http://www.www58058.com/9071

(0)
13-廣州-楊過13-廣州-楊過
上一篇 2015-11-10
下一篇 2015-11-10

相關推薦

  • 第二十二周作業

    1、請描述本地文件系統和分布式文件系統的特點 本地文件系統 本地文件系統主要是指Ext2,Ext3,Btrfs,XFS這類,它們通常提供以下功能: 擴展性:隨著系統容量的增加保持性能,不隨容量變化而導致性能震蕩。比如一個目錄下的海量文件,在EXT2/3中由于目錄設計問題會導致較大的性能問題。再比如EXT2/3中的Metadata的占用和inode的劃分可能會…

    2017-08-06
  • Linux文件管理及bash特性詳解

    1.Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。  文件管理工具:cp,mv,rm       cp命令:copy       源文件:目標文件  單源復制:cp [OPTION]… [-T] SOURCE DEST  多源復制:…

    Linux干貨 2016-11-06
  • Linux基礎之shell腳本編程(二)

    1、寫一個腳本,完成以下功能    (1) 假設某目錄(/etc/rc.d/rc3.d/)下分別有K開頭的文件和S開頭的文件若干;    (2) 顯示所有以K開頭的文件的文件名,并且給其附加一個stop字符串;    (3) 顯示所有以S開頭的文件的文件名,并且給其附加一個start字符串; &nb…

    Linux干貨 2016-11-17
  • httpd功能配置之路徑別名

       httpd的路徑別名功能可以使用資源的訪問不再依賴于站點的根目錄,可以指定任意目錄來設置資源的訪問路徑。    默認站點的根目錄是/var/www/html,如下圖所示。    下面來使用路徑的別名來訪問資源:    1、打開httpd服務的配置文件  &nbsp…

    Linux干貨 2016-03-11
  • FHS文件系統各目錄功能

    前言:     文件系統是一種存儲和組織計算機數據的方法,它使得對其訪問和查找變得容易。linux的哲學是一切皆文件,linux系統中的一切包括設備文件,我們都能在linux的倒置樹狀文件系統中找到相對應的文件。所以清楚的明白根目錄下的每個子目錄包含什么樣的文件是很有必要的。我們將以Filesystem Hierarchy Standar…

    Linux干貨 2016-10-17
  • linux 網絡管理命令 SS的使用詳則

    SS命令 ss命令用來顯示處于活動狀態的套接字信息,ss迷路可以用來獲取socket統計信息,它可以顯示和netstat類似的內容。但ss的優勢在于它能夠顯示更多更詳細的有關TCO和連接狀態信息,而且比netstat更快速更高效。 當服務器的socket連接數量變得非常大時,無論是使用netest命令還是直接  cat/proc/net/tcp ?!?/p>

    2017-08-19

評論列表(1條)

  • stanley
    stanley 2015-11-10 22:37

    不錯,提升余地還有不少,加油

欧美性久久久久