MySQL高可用配置

來源:互聯網
上載者:User

標籤:

openstack高可用配置文檔

 

介紹利用兩台物理主機實現高可用的openstack雲平台,這裡主要說明mysql和rabbitmq的高可用配置。

 

安裝openstack雲平台(兩台主機上都部署openstack I版)

  • 安裝centos作業系統,由於以active-passive模式配置mysql等服務的高可用時,需要單獨的硬碟分區來裝載和同步mysql等服務的資料,所以安裝系統時,在系統鏡像設定檔裡預留出2-3塊20G左右單獨的硬碟分區作為備用;
  • Yum –y update && reboot系統安裝完成後,更新系統;
  • 利用redhat的rdo工具安裝openstack I版

yum install -y http://rdo.fedorapeople.org/rdo-release.rpm

yum install -y openstack-packstack

packstack --gen-answer-file=ans-file.txt

根據需要修改answer-file;  然後packstack --answer-file=ans-file.txt

完成後檢查openstack I版是否安裝成功成功後選擇其中一台主機作為主節點,另一台主機作為備用節點配置各個服務的高可用;

 

配置openstack服務的高可用,首先要配置兩個節點的高可用叢集:

 

配置各節點互相解析

gb07

 

gb06

 

配置各節點時間同步

gb07

[[email protected] ~]# ntpdate 10.10.102.7

 

gb06

[[email protected] ~]# ntpdate 10.10.102.7

 

各節點關閉SELinux

修改/etc/selinux/config檔案中設定SELINUX=disabled ,然後重啟伺服器。

 

Corosync 安裝與配置(兩節點上都要安裝配置)

 

  • 安裝Corosync

gb07 

[[email protected] ~]# yum install -y corosync

gb06

[[email protected] ~]# yum install -y corosync

 

  • .配置Corosync

             [[email protected] ~]# cd /etc/corosync/

[[email protected] corosync]# mv corosync.conf.example corosync.conf

[[email protected] corosync]# vim corosync.conf

compatibility: whitetank

totem {                                                                     #心跳資訊傳遞層

    version: 2                                    #版本

    secauth: on                                                                  #認證資訊  一般on

    threads: 0                                                           #線程

    interface {                                                           #定義心跳資訊傳遞的介面

        ringnumber: 0

        bindnetaddr: 10.10.0.0                       #綁定的網路地址,寫網路地址

        mcastaddr: 226.94.1.1                                          #多播地址

        mcastport: 5405                                           #多播的連接埠

        ttl: 1                                                                           #生存周期

    }

}

logging {                             #日誌

    fileline: off

    to_stderr: no                 #是否輸出在螢幕上

    to_logfile: yes               #定義自己的日誌

    to_syslog: no                 #是否由syslog記錄日誌

    logfile: /var/log/cluster/corosync.log  #記錄檔的存放路徑

    debug: off

    timestamp: on                 #時間戳記是否關閉

    logger_subsys {

        subsys: AMF

        debug: off

    }

}

amf {

    mode: disabled

}

service {

     ver: 0

     name: pacemaker       #pacemaker作為corosync的外掛程式進行工作

}

aisexec {

     user: root

     group: root

}

              [[email protected] corosync]#  scp corosync.conf gb06:/etc/corosync/

 

  • 認證檔案

[[email protected] corosync]# corosync-keygen

Corosync Cluster Engine Authentication key generator.

Gathering 1024 bits for key from /dev/random.

Press keys on your keyboard to generate entropy (bits = 152).

#遇到這個情況,表示電腦的隨機數不夠,可以不停的隨便敲鍵盤產生隨機數

[[email protected] corosync]# scp authkey gb06:/etc/corosync/

#把認證檔案也複製到gb06主機上

l  Pacemaker配置與安裝(兩節點上都要安裝配置)

  • 安裝pacemaker

gb07

[[email protected] ~]# yum install -y pacemaker

gb06

[[email protected] ~]# yum install -y pacemaker

 

  • 安裝crmsh

gb07

[[email protected] ~]# yum –y install crm

gb06

[[email protected] ~]# yum –y install crm

 

安裝完成後,啟動corosync  service corosync start; 啟動pacemaker

service pacemaker start

 

DRBD 安裝與配置(兩個節點上都要安裝配置)

  • 安裝drbd

gb07

[[email protected] ~]# yum -y install drbd84 kmod-drbd84

gb06

[[email protected] ~]# yum -y install drbd84 kmod-drbd84

     如果yum源找不到包,嘗試在網上搜一下drbd安裝,下載相應的yum源檔案再安裝

  • 配置drbd

[[email protected] ~]# cat /etc/drbd.d/global_common.conf

global {

usage-count no;

# minor-count dialog-refresh disable-ip-verification

}

common {

protocol C;

handlers {

                pri-on-incon-degr "/usr/lib/drbd/notify-pri-on-incon-degr.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";

                pri-lost-after-sb "/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";

                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 120;

                #degr-wfc-timeout 120;

        }

        disk {

                on-io-error detach;

                #fencing resource-only;

        }

        net {

                cram-hmac-alg "sha1";

                shared-secret "mydrbdlab";

        }

        syncer {

                rate 1000M;

        }

}

       [[email protected] drbd.d]# cat mysql.res #資源設定檔

              resource mysql {

            on gb07 {

                 device    /dev/drbd0;

                 disk      /dev/sda3;     #預留的硬碟分區

                 meta-disk internal;

                 address ipv4 10.10.102.7:7700;  

            }

            on gb06 {

                 device    /dev/drbd0;

                 disk      /dev/sda3;

                 meta-disk internal;

                 address ipv4 10.10.102.6:7700;

            }

}

[[email protected] drbd.d]# scp global_common.conf mydata.res gb06:/etc/drbd.d/

 

  • 初始化drbd的資源並啟動

 

 DRBD中繼資料的初始化和將中繼資料的初始設定寫入 /dev/data/mysql,必須兩個節點上都完成

建立/ dev/drbd0裝置節點,將DRBD裝置與本機存放區裝置相連,必須在兩個節點上都完成

使初始裝置同步,讓裝置成為主要的角色(可寫和可讀)。查看DRBD資源的主要角色和次要角色更詳細的說明請參考DRBD使用者指南。只能完成一個節點,就是你將繼續建立檔案系統的那個節點

 

  • 格式化drbd分區(主節點上完成)

mkfs -t xfs /dev/drbd0

mount /dev/drbd0 /mysql

 

l  將mysql資源加入pacemaker

  • 定義drbd資源

[[email protected] ~]# crm

crm(live)# configure

crm(live)configure# property stonith-enabled=false

crm(live)configure# property no-quorum-policy=ignore

crm(live)configure# primitive mysqldrbd ocf:linbit:drbd params drbd_resource=mysql op monitor role=Master interval=10 timeout=20  op monitor  role=Slave interval=20 timeout=20 op start timeout=240 op stop timeout=100

crm(live)configure#verify   #檢查文法

 

  • 定義drbd的主從資源

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# verify

 

  • 定義檔案系統資源和約束關係

crm(live)configure# primitive mystore ocf:heartbeat:Filesystem params device="/dev/drbd0" directory="/mysql" fstype="xfs" op monitor interval=40 timeout=40 op start timeout=60 op stop timeout=60

crm(live)configure# verify

crm(live)configure# colocation mystore_with_ms_mysqldrbd inf: mystore ms_mysqldrbd:Master

crm(live)configure# order ms_mysqldrbd_before_mystore mandatory: ms_mysqldrbd:promote mystore:start

crm(live)configure# verify

 

  • 定義vip資源、mysql服務的資源約束關係

crm(live)configure# primitive myvip ocf:heartbeat:IPaddr params ip="10.10.42.96" op monitor interval=20 timeout=20 on-fail=restart

crm(live)configure# primitive myserver lsb:mysqld op monitor interval=20 timeout=20 on-fail=restart

crm(live)configure# verify

crm(live)configure# colocation myserver_with_mystore inf: myserver mystore

crm(live)configure# order mystore_before_myserver mandatory: mystore:start myserver:start

crm(live)configure# verify

crm(live)configure# colocation myvip_with_myserver inf: myvip myserver

crm(live)configure# order myvip_before_myserver mandatory: myvip myserver

crm(live)configure# verify

crm(live)configure# commit

                  commit之後可以查看節點的運行狀態,切換節點,看資源是否轉移

 

  • 關閉drbd的服務和關閉mysql的服務

mysqldrbd都是叢集的資源,由叢集管理的資源開機是一定不能夠自行啟動的。

[[email protected] ~]#chkconfig mysqld off

[[email protected] ~]#chkconfig drbd off

[[email protected] ~]#chkconfig mysqld off

[[email protected] ~]#chkconfig drdb off

  • Ø  為高可用Mysql配置Openstack服務

現在,OpenStack的服務必須指向MySQL配置高可用,虛擬叢集IP地址 - 而不是像往常一樣的MySQL伺服器的物理IP地址。

對於Openstack中的glance,如果Mysql服務的ip地址是10.10.102.7,將會用到以下幾行在OpenStack鏡像註冊設定檔中(glance-registry.conf):

    sql_connection = mysql://glancedbadmin:<password>@10.10.42.96/glance

 

l  Rabbitmq高可用配置

Rabbitmq的高可用採用mirrored queue,不需要額外的軟體包,配置比較簡單,靠參考以下兩篇部落格:

http://blog.sina.com.cn/s/blog_959491260101m6ql.html

http://www.cnblogs.com/flat_peach/archive/2013/04/07/3004008.html

 

l  可能會遇到的問題

  • 腦裂故障

正常狀態下,查看叢集中drbd資源的串連狀態為:

 

但由於網路或機器的故障可能會出現drbd腦裂故障,叢集的drbd資源串連中斷:

0:mysql/0  StandAlone Secondary/Unknown UpToDate/-- C r-----

解決辦法查看官方連結http://www.drbd.org/users-guide/s-resolve-split-brain.html

  • 叢集管理器pacemaker無法啟動mysql,啟動失敗; 控制節點記憶體要足夠,mysql中有個外掛程式innodb,mysqld啟動時innodb外掛程式會初始化一個記憶體緩衝池,約2.3G,如果沒有足夠的記憶體,mysqld啟動就會失敗;
  • 偶爾一個節點掛掉,修複完成後,crm resource list看到該節點的資源狀態仍然是stopped,無法start,可能需要重啟一下drbd和pacemaker;

MySQL高可用配置

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.