NEIL's_學而時習之x不學無術~私藏IT技術經驗分享部落

關於部落格
NEIL. Cheng....寫作只是為了日後工作之備忘操作參考

本部落格文章撰寫前進邁向第五年(since 2009 ~至今)仍繼續推進分享IT學習!!About Windows/Linux Server,Virtualization


分享網誌: 由於,本人預先完成LAB後,才補上撰寫文章與截圖,若發現文圖對照說明有誤..本人將盡快校正,也請不吝指教! Thanks!

  • 146059

    累積人氣

  • 1

    今日人氣

    0

    訂閱人氣

PowerDNS 基於MariaDB Galera Cluster架構下設計by Navier

 [ 搞定Galera Cluster 架構配置]

共2node "pds88","pds89". 將兩筆主機/IP對應位置加入2節點中 "/etc/hosts"(選擇性,方便配置)


編輯"my.cnf"

sudo su -                              
 #Navier 覺得一直打sudo很麻煩,後續我都以root身分執行lab


vi /etc/mysql/my.cnf        #先配置pds88

#請將預設參數註解掉(參考以下),集中配置管理
*query_cache_limit, query_cache_size,bind-address,default_storage_engine
 參數註解掉,新增以下


[mysqld]                                   
binlog_format=ROW
default_storage_engine=innodb    
innodb_autoinc_lock_mode=2
#innodb_locks_unsafe_for_binlog=1   <==請註解掉,已無必要
innodb_doublewrite=1
bind-address=0.0.0.0            #預設127.0.0.1,將其註解
#
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_provider_options="gcache.size=256M; gcache.page_size=128M"
wsrep_cluster_address="gcomm://"   #新建立Galera Cluster Node 請配置參考如右
wsrep_cluster_name="asaburu"         #cluster 名稱 asanuru = 阿沙布魯
wsrep_node_address="pds88"           #上一步我們已加入/etc/hosts對應表內
wsrep_node_name="pds88"               
wsrep_sst_method=xtrabackup-v2      #不鎖表備份方式,rsync會鎖表(Default)
wsrep_sst_auth="cluster:gg520"      #填寫前一步在資料庫內建立授權使用驗證帳戶
wsrep_node_incoming_address=10.10.10.88
wsrep_sst_receive_address=10.10.10.88
wsrep_slave_threads=16

儲存後離開

啟動Galera Cluster 第一節點"pds88"

service mysql start --wsrep-new-cluster   

[焦點轉換配置"pds89"] 第二個 galera cluster  node

sudo su -                               #Navier 覺得一直打sudo很麻煩,後續我都以root身分執行lab

vi /etc/mysql/my.cnf        #pds89

#請將預設參數註解掉(參考以下),集中配置管理
*query_cache_limit, query_cache_size,bind-address,default_storage_engine 
 參數註解掉,新增以下


[mysqld]                                   
binlog_format=ROW
default_storage_engine=innodb    
innodb_autoinc_lock_mode=2
#innodb_locks_unsafe_for_binlog=1   <==請註解掉,已無必要
innodb_doublewrite=1
bind-address=0.0.0.0            #預設127.0.0.1,將其註解
#
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_provider_options="gcache.size=256M; gcache.page_size=128M"
wsrep_cluster_address="gcomm://pds88"     #這裡加入Galera 初始節點同步複寫
wsrep_cluster_name="asaburu"         #cluster 名稱 asanuru = 阿沙布魯
wsrep_node_address="pds89"           #上一步我們已加入/etc/hosts對應表內
wsrep_node_name="pds89"               
wsrep_sst_method=xtrabackup-v2      #不鎖表備份方式,rsync會鎖表(Default)
wsrep_sst_auth="cluster:gg520"      #填寫前一步在資料庫內建立授權使用驗證帳戶
wsrep_node_incoming_address=10.10.10.89
wsrep_sst_receive_address=10.10.10.89
wsrep_slave_threads=16


儲存後離開

啟動Galera Cluster 第二節點"pds89"

service mysql start 

Galera Cluster 架構已順利啟動,Then 接下來我們將在"pds88" 新建PowerDNS 後端資料庫與

儲存資料表(Table Fromat)一併驗證資料是否成功複寫同步到"pds89"叢集節點?

#pds88

mysql -u root -p 

CREATE DATABASE pdns;     #本lab建立一個PowerDNS存儲資料庫名為pdns

GRANT ALL ON powerdns.* TO 'pdns_admin'@'localhost' IDENTIFIED BY

'12345';  
#授權pdns用戶使用

FLUSH PRIVILEGES;

#建立網域資料表format

CREATE TABLE domains (
id INT auto_increment,
name VARCHAR(255) NOT NULL,
master VARCHAR(128) DEFAULT NULL,
last_check INT DEFAULT NULL,
type VARCHAR(6) NOT NULL,
notified_serial INT DEFAULT NULL,
account VARCHAR(40) DEFAULT NULL,
primary key (id)
);


#建立一系列索引欄位查詢

CREATE UNIQUE INDEX name_index ON domains(name);
CREATE INDEX rec_name_index ON records(name);
CREATE INDEX nametype_index ON records(name,type);
CREATE INDEX domain_id ON records(domain_id);

CREATE TABLE supermasters (
ip VARCHAR(25) NOT NULL,
nameserver VARCHAR(255) NOT NULL,
account VARCHAR(40) DEFAULT NULL
);

*建好之後我們概略來看建立成果

mysql -u pdns_admin  -p

show databases;

use pnds;

show tables;

describe domains;
[現切換 pds89 node] 檢視mysql資訊驗證資料是否同步過去

 確認資料表,資料庫確實已從"pds88" 複寫同步過來


檢視 Galera Cluster 參數狀態 #pds89為例

Galera 部分健康檢查 : Wsrep  Port : 4567

wsrep_cluster_state_uuid
集群節點必須一致,若非一致,未加入集群

wsrep_cluster_conf_id, 
wsrep_cluster_size : 集群終結點必須一致

wsrep_flow_control_paused:  節點間複製資料延遲多少時間, 介 0~1 趨近0最佳
 


Then 上一步
Galera Clutser架構同步已完成,現在我們要編輯PowerDNS串接資料庫組態配置

# 先前我們已經先安裝好PowerDNS也順利啟動

rm /etc/powerdns/pdns.d/*    #刪除預設配置檔案,以下步驟都需要在pds88,pds89施作

vi /etc/powerdns/pdns.d/pdns.local.gmysql.conf    #儲存檔案後速離開

launch=gmysql
gmysql-host=localhost
gmysql-dbname=pdns
gmysql-user=pdns_admin
gmysql-password=12345

service pdns restart 

netstat -tuln | grep  53     #PowerDNS,Galera架構已經完成

 



 





[PowerAdmin 安裝]

*前幾步我們已經安裝好LAMP架構並順啟動,故直接切入佈署Poweradmin


sudo su -

cd ~/

wget http://liquidtelecom.dl.sourceforge.net/project/poweradmin/poweradmin-2.1.7.tgz

tar  zxvf  poweradmin-2.1.7.tgz

mv poweradmin-2.1.7   /var/www/html/pdns

touch /var/www/html/poweradmin/inc/config.inc.php

chown -R www-data.www-data  /var/www/html/pdns

Then 打開瀏覽器進行Poweradmin 安裝 http://10.10.10.88/pdns     #pds88

  寧可選擇英文安裝  
 #抵死不選簡體中文安裝


   Next  下一步

填入資料庫串接認證資訊: 請依照方才建立pdns授權帳戶填入正確位置

Poweradmin administrator password:
為網頁登入系統管理者系統pass配置

Next:  繼續填入pdns資料庫用戶資訊,

           Hostmaster, Primary nameserver,Second nameserver,我們可以稍後異動變更

           暫定ns1.oops.net ,ns2.oops.net 兩部DNS網域解析主機

Next:
方才我已經授權過"pdns_admin" 這個用戶授權存取"pns"資料庫(略過)

Next: 提示剛剛配置將寫入 ../inc/config.inc.php檔案中


Next: 提示我們刪除安裝資料夾中"INSTALL"後,在次登入管理介面,即可完成Poweradmin安裝


rm -rf /var/www/html/pdns/install

http://10.10.10.88/pdns   #登入輸入帳密 admin, 12345

登入後你可以看到可以組態配置

List  zones : 我們可以看到,現存已定義好的"網域配置資訊"

Then 現在我們要著手建立一個新Zone(正解) : Add master zone

              # 新增一個正解域名 "oops.net" , type="master"    "Add zone"

    新建Zone成功後點選上方"List Zone"      "oops.net"正解域名成立
    Then 替''oops.net"正解區域,建立反解對應Zone   重複上一動

     
新增一個反解域名 "10.10.10.in-addr.arpa" , type="master"    "Add zone"

List  zones : 我們可以看到,現存已定義好的"網域配置資訊" 正解,反解皆到位

下圖中:  我們勾選 "oops.net" 做正解"Zone" 細部編輯


預設我們Zone SOA Record 已經在我們配置Poweradmin 過程中 已經配置好

表示"oops.net " 這個網域授權給"ns1.oops.net" 這台DNS伺服器管理,你可以細部修改此參數

     頁面往下拉,建立 "ns1.oops.net"   Type="A"  Record, Content="10.10.10.88"  #pds88
 

     Add also reverse record  
"Add record"

建立 "ns2.oops.net"   Type="A"  Record, Content="10.10.10.89"  #pds89
 

 Add also reverse record  
 "Add record"



回頭看看建立Record
 #已經有兩筆"A" Record 紀錄寫入



反解Record也一併建立好了



SO 現在我快速幾筆資料寫入測試:

       包含兩筆Mail Server "MX" 紀錄 "mail201.oops.net" 優先權"10" ,"mail202.oops.net",優先權"20"
 
       數字越小,優先權最高

       *打錯Record修正聲明:(正解) mail202.opps.com  對應IP: 10.10.10.202,後面步驟截圖已修正完畢



Then 我們驗證這兩部DNS
"ns1.oops.net","ns1.oops.net"查詢紀錄

         驗證Mail Server MX 紀錄無誤

     dig  -t  soa oops.net   #檢視SOA Record


 dig -x 10.10.10.89

跳轉到pds89 (第二台DNS 解析Server) 進行解析OK

dig mail202.oops.net @127.0.0.1 


模擬第一部DNS(pds88)掛點, 切換第二部DNS(pds89)
查驗紀錄是否同步?

10.10.10.88  #將pds88 移除

10.10.10.89

168.95.1.1 

   Then 停用pds88 PowerDNS 服務


使用第三方PC 連接第二台的DNS (pds89),提醒您

方才我們設定"網域Record"配置都是在"pds88" 模擬這台主機掛點了,現測試

Galera 資料同步複寫成果:
確認Record在pds89(ns2.oops.net)...

解析得到,表示資料傳遞複寫是同步成功

最後我們恢復pds88(ns1.oops.net)  DNS服務並啟用

uuid.opps.net   CNAME  pdns.oops.net 


 再次使用nslookup解析(pds89) , 本Lab到此演示結束

實驗過程Debug補充說明: 

上述Galera Cluster  提到其一配置參考如下

[mysqld] 

wsrep_sst_method=xtrabackup-v2 

#您必須要安裝"xtrabackup"套件才可使用,
否則重新啟動會出錯(/var/log/syslog)

apt-get update

apt-get  install xtrabackup

  cat  /etc/mysql/debian.cnf  

 
#修復以下錯誤 error: 'Access denied for user 'debian-sys-maint'@'localhost'

解決方法: 登入MariaDB,授予該user權限,重新啟動MariaDB即可

GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY '[debian-sys-maint password]';
相簿設定
標籤設定
相簿狀態