GALERA ARBITRATOR - 數據庫多主集羣對應腦裂的解決方案

GALERA ARBITRATOR

由於Galera集羣須要至少3個節點組成集羣,纔不會發生腦裂情況。html

Galera集羣部署推薦的是至少三個實例或三個節點或三個數據中心等等。node

若是添加一個節點會成本過高,好比添加多一臺數據庫服務器,那你能夠選擇使用Galera ArbitratorGalera Arbitrator就是集羣中的一份子,能夠參與投票,但不參與實際的複製。web

注意:雖然Galera Arbitrator不參與複製,但它和其餘節點同樣也會接受數據。你必須確保他的網絡鏈接。shell

Galera Arbitrator有兩個用途:數據庫

  • 當集羣爲偶數節點時,它的加入以免腦裂的發生。segmentfault

  • 同時它可以用於備份,例如快照功能。服務器

clipboard.png

若是一個數據中心失敗或者是斷開鏈接,而且它與Galera Arbitrator是接連的話,那Galera Arbitrator就會做爲中間件的擴展。例如node1node2是斷開鏈接的,此時若node1Galera Arbitratornode2Galera Arbitrator鏈接的話,那Galera Arbitrator做爲中間件將會爲node1node2鏈接通訊。網絡

儘管Galera Arbitrator不存儲數據,但它必須能夠看到全部的流量的傳輸複製。若是Galera Arbitrator放在一個網絡環境較差的地方,那它鏈接到集羣的時候,可能會致使集羣執行或性能降低。socket

若是Galera Arbitrator失敗的話,它不會影響集羣的正常操做。你能夠將一個新的實例加入到集羣中,能夠有多個實例運行在集羣中。性能

有關Galera Arbitrator備份的設置,可參考Galera 集羣備份

STARTING GALERA ARBITRATOR

Galera ArbitratorGalera集羣中是一個單獨的進程。這意味着,你須要獨立啓動它。這也意味着你不能經過數據庫配置文件的方式來啓動,好比不能經過my.cnf啓動。

Galera Arbitrator在啓動的時候,腳本會在無人使用的進程中執行sudo聲明,有一個特定問題在Fedora和其餘版本的Linux中,這默認用戶沒有操做sudo配置的權限。要修正這個問題須要編輯/etc/sudoers中的Defaults requiretty,把這個註釋掉便可。這樣就能夠防止操做系統阻塞Galera Arbitrator

Starting Galera Arbitrator from the Shell

當開始經過shell命令執行Galera Arbitrator的時候,首先你須要經過命令行參數配置。例如:

$ garbd --group=example_cluster \
     --address="gcomm://192.168.1.1,192.168.1.2,192.168.1.3" \
     --option="socket.ssl_key=/etc/ssl/galera/server-key.pem;socket.ssl_cert=/etc/ssl/galera/server-cert.pem;socket.ssl_ca=/etc/ssl/galera/ca-cert.pem;socket.ssl_cipher=AES128-SHA""

若是你使用SSL的方式,則你須要輸入密碼。不然會有terminate called after throwing an instance of ‘gu::NotSet’SSL提示。

若是你不想每次經過shell方式啓動Galera Arbitrator,那你能夠自定義配置文件中執行。
例如配置文件以下:

# arbtirator.config
group = example_cluster
address = gcomm://192.168.1.1,192.168.1.2,192.168.1.3

當你開始啓動Galera Arbitrator,使用--cfg選項。
例如:

$ garbd --cfg /path/to/arbitrator.config

更多的參數,可用過--help來查看幫助。

$ garbd --help

Usage: garbd [options] [group address]

Configuration:
  -d [ --daemon ]       Become daemon
  -n [ --name ] arg     Node name
  -a [ --address ] arg  Group address
  -g [ --group ] arg    Group name
  --sst arg             SST request string
  --donor arg           SST donor name
  -o [ --options ] arg  GCS/GCOMM option list
  -l [ --log ] arg      Log file
  -c [ --cfg ] arg      Configuration file

Other options:
  -v [ --version ]      Print version
  -h [ --help ]         Show help message

除了標準的配置,Galera集羣中任何配置,均可用於Galera Arbitrator,除了那些repl前綴的命令。
當你從shell啓動的話,你可使用 --option 來設置參數。

更多Galera Arbitrator參數可參考Galera 參數

Starting Galera Arbitrator as a Service

當開始Galera Arbitrator服務時,不管你使用init或者systemd,經過shell命令,指定不一樣的配置文件,來啓動不用的服務,以實現靈活啓動。

# Copyright (C) 2013-2015 Codership Oy
# This config file is to be sourced by garbd service script.

# A space-separated list of node addresses (address[:port]) in the cluster:
GALERA_NODES="192.168.1.1:4567 192.168.1.2:4567"

# Galera cluster name, should be the same as on the rest of the node.
GALERA_GROUP="example_wsrep_cluster"

# Optional Galera internal options string (e.g. SSL settings)
# see http://galeracluster.com/documentation-webpages/galeraparameters.html
GALERA_OPTIONS="socket.ssl_cert=/etc/galera/cert/cert.pem;socket.ssl_key=/$"

# Log file for garbd. Optional, by default logs to syslog
LOG_FILE="/var/log/garbd.log"

爲了讓Galera Arbitrator使用配置文件啓動,須要你把他放到系統配置文件中,因操做系統發行版而異,而放到不一樣的地方,一般是放在/etc下。

一般位置:

  • /etc/defaults/

  • /etc/init.d/

  • /etc/systemd/

  • /etc/sysconfig/

檢查你的發行版的來肯定配置文件放在哪裏。

一旦你把配置文件放到對的地方,你能夠用garb命令來啓動服務。

# service garb start
或者
# systemctl start garb

以後它會執行配置文件裏面設置的參數來運行對集羣的監聽。


http://www.javashuo.com/article/p-cccrbkmf-kv.html原創文章,版權全部,轉載請註明出處

相關文章
相關標籤/搜索