close
實驗目標:

本人日前曾實驗過MySQL容錯叢集MySQL MMM: 

Multi-Master Replication Manager for MySQL

可實現高可用效能負載與Fail Over 容錯轉移之叢集,今將實現MySQL官方做法建構HA叢集

操作過兩者HA解決方案且比較後-兩者同樣皆須一台擔任Monitor與仲裁角色,只不過MMM

另需預先設定Master to Master 資料複寫前置作業,且需安裝大量Perl套件,程序較官方做法複雜

今將實作MySQL釋出套件官方做法:

請先至MySQL 官方下載以下套件: 下述為官方最新釋出(7.1.10)之Cluster 套件版本

僅下載部份基本需要安裝套件

MGM Node:  rpm -ivh MySQL-Cluster-gpl-tools-7.1.10-1.rhel5.i386.rpm
                      
                     rpm -ivh MySQL-Cluster-gpl-management-7.1.10-1.rhel5.i386.rpm

SQL Node:   rpm -ivh MySQL-Cluster-gpl-server-7.1.10-1.rhel5.i386.rpm
                       
                     rpm -ivh MySQL-Cluster-gpl-client-7.1.10-1.rhel5.i386.rpm

DATA Node: rpm -ivh  MySQL-Cluster-gpl-storage-7.1.10-1.rhel5.i386.rpm

MySQL 5.5.11: 本Lab使用源碼編譯安裝MySQL於SQL Node 主機上,切記勿使用發行版YUM
                           
                            安裝MySQL!!!

Memcached 1.4.5 :  由於本人先前安裝Remi Repo: 可以利用yum -y install memcached

                                    Memcached 套件取得為最新的1.4.5  

memcache 3.0.6 (支援php): 另外我們額外安裝php程式支援memcache 模組,稍後將說明

分享拓樸:

 

實驗架構設計:

OS 使用CentOS 5.6 * 3 , 建議SQL Node*1 , MGM*1,Data *2 獨立安裝,

本例將SQLNode與MGM 安裝成一台, Data Node *2

MGM Node:  用來啟動/關閉 Cluster,及其他管理作業,實際 DB 運作不需要此程序。
                      192.168.0.162(mgm node +sql node)
                      
SQL Node:  用來連結 Web AP 與 DB ,可建置多個以提高多個的 AP 連線效率
                      ,實際DB資料不存放在此,擴充 node 時,至少需要有一台可正常運作。

Data Node: 實際資料庫的儲存位置,並負責彼此抄寫的任務,愈多台可提高存取效率。  
                     192.168.0.171(node1) ,192.168.0.172(node2)

實驗開始

About   Memcached  #本例使用Remi Repo Memcached1.4.5 版本實作

shell>  yum -y install memcached

故組態參數設定檔位址位於

vi /etc/sysconfig/memcached

   PORT="5000"                    #設定Memcached port number
   USER="memcached"     
    MAXCONN="1024"          #memcached 最大可連線數
   CACHESIZE="50"           #配置多少RAM給Memcached 使用
   OPTIONS=""
 
設定完成後,請啟動memcached 程式,並檢視memcached 是否已順利啟動

shell> service memcached  restart
shell> chkconfig memcached on
shell> ps -aux | grep 'mem'                   #由下圖可知memcached已順利啟動

  

接者我們另額外安裝讓PHP支援使用memcached 模組, memcache.3.0.6 

透過下列Command 檢視目前的PHP是否已支援memcached 模組

shell> 
php -i  | grep -i 'memcache'   #memcache support = > enabled
 
[小結]

memcached是一套高效能 分散式的快取系統,memcached 是利用記憶體來儲存快取資料,

可以利用memcached減少資料庫負載增加讀取速度,提升MySQL運行效能

[MySQL Cluster _組態MGM Node 設定]

於前面摘要中已將MGM 主機相關套件安裝完成,THEN 我們需建立MGM 組態檔案config.ini

在此我們 

mkdir -p /var/lib/mysql-cluster           #建立存放config.ini 目錄

Then

vi /var/lib/mysql-cluster/config.ini      #編輯參考參數如下

[ndbd default]
NoOfReplicas=2   #複寫之結點數
DataMemory=80M   #配置給Data storage ram 大小    
IndexMemory=18M  #配置給索引儲存大小

[tcp default]
portnumber=2202  #MySQL叢集使用PORT號

[ndb_mgmd]                          #宣告MGM之Host IP/Hostname 與datadir目錄位置
hostname=192.168.0.162
datadir=/var/lib/mysql-cluster

[ndbd]                 #宣告data node1之Host IP/Hostname 與datadir目錄位置
hostname=192.168.0.171
datadir=/var/lib/mysql-cluster

[ndbd]
hostname=192.168.0.172      #宣告data node2之Host IP/Hostname 與datadir目錄位置
datadir=/var/lib/mysql-cluster

[mysqld]                                #宣告mysqld host ip /hostname(SQL Node)
hostname=192.168.0.162     #本例將MGM與SQL Node安裝至同一台主機.162

 

[MySQL Cluster _組態Data Node 設定]

請預先參考前面摘要所述將Data Node 基本套件預先安裝ok

上一布,MGM Node 組態檔案設定OK後,接者著手設定Node1 & Node 2(storage node)

我們分別在node1 & node2 兩台之下新增
/etc/my.cnf

並填入以下參數設定儲檔後離開即可 

[MYSQLD]
ndbcluster                                                       # run NDB engine
ndb-connectstring=192.168.0.162            # mgm hostname or ip

[MYSQL_CLUSTER]
ndb-connectstring=192.168.0.162           # location of MGM node


[MySQL Cluster _組態SQL Node 設定]  # 此時之mysqld仍處未啟動狀態

*本人是使用官方MySQL 5.5.11 源碼安裝好MySQL *

編輯/etc/my.cnf        #插入下述幾行參數command 即可

[mysqld]
ndbcluster                          # run NDB storage engine  #mgm目前與sql為同一台主機
ndb-connectstring=mgm         這邊要填入 mgm node的主機名稱或IP

[mysql_cluster]
ndb-connectstring=mgm         #這邊要填入 mgm node的主機名稱或IP  #可參見下圖

[MySQL Cluster _啟動]

接者,我們組態完各個Node 設定後,可進行叢集啟動動作..請注意以下要點

1st. 
 首先.切換只MGM Node 進行叢集設定初始化與MGM Node啟動如下

 >  
ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial 

       
#--initial 初次初始化才加上
 
將叢集MGM啟動後.我們使用以下Comand 來檢視叢集啟動狀況

 > 
ndb_mgm -e show        #由於我們尚未加入各個Node 故目前Node 處未連線狀態

 
Then MGM 啟動後,接者我們需將Node1 & Node2 二節點加入MGM Cluster中

請分別至node1 & node2 主機下以下command即可初始化啟動ndbd

>ndbd --initial          #--initial 唯有初次初始化才加上,日後啟動使用ndbd即可

將Data Node啟動後.我們使用以下Comand 來檢視叢集啟動狀況

 > 
ndb_mgm -e show        #由於我們已成功啟動node1& node2 ,目前僅剩下SQL Node 未啟動
                                                 目前node1(192.168.0.171) 為master node

 
Then MGM 與 Data Node 啟動後,我們接下來進行最後的SQL Node 啟動

SQL Node 啟動: service mysql restart  即可

將SQL Node啟動後.我們使用以下Comand 來檢視叢集啟動狀況

 > 
ndb_mgm -e show        #由於我們已完成啟動node1& node2 ,SQL Node

 
   >all status           再次檢視確認node1,node2是順利啟動

   
 [測試叢集容錯]: node1(master) shutdown , 測試master 是否轉移至node2 接手

                             data node 角色 
> ndb_mgm -e show    

          # 當node1 crash down後 node2 即變為master 持續接手mysql data node 運作

 
總結:  建議使用兩台SQL Node 同時存取node1  與node2 測試叢集容錯效果相形亦彰

           並將MGM Node 獨立切割出一台MGM不錯考量 

LAB實作時參考資料:

OssLab 開放軟體時驗室 http://wiki.osslab.org.tw/

Hello world : http://helloworld.pixnet.net/
 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 終極.凱因斯 的頭像
    終極.凱因斯

    NEIL`s_IT技術學習分享發表Blog

    終極.凱因斯 發表在 痞客邦 留言(0) 人氣()