たった2つのノードでGaleraクラスターをセットアップする方法について定期的に質問があります。
ドキュメントには、ネットワークのパーティション分割を回避するために、少なくとも3つのGaleraノードが必要であることが明確に記載されています。ただし、2ノードの展開を検討する正当な理由がいくつかあります。たとえば、データベースの高可用性を実現したいが、3番目のデータベースノードに費やす予算が限られている場合などです。または、開発/サンドボックス環境でGaleraを実行していて、最小限のセットアップを好む場合もあります。
Galeraは、クォーラムベースのアルゴリズムを実装して、一貫性を強制する主要コンポーネントを選択します。主要コンポーネントは過半数の票を獲得する必要があるため、2ノードシステムでは、過半数がないためにスプリットブレインが発生します。幸い、garbd(Galera Arbitrator Daemon)を追加することができます。これは、奇数ノードとして機能できる軽量のステートレスデーモンです。アービトレーターの障害はクラスターの動作に影響を与えず、新しいインスタンスはいつでもクラスターに再接続できます。クラスタには複数のアービトレータが存在する可能性があります。
ClusterControlは、データベース以外のホストへのgarbdのデプロイをサポートしています。
通常、Galeraクラスターが完全に機能するには、少なくとも3つのホストが必要ですが、デプロイ時に、プライマリコンポーネントを作成するには2つのノードで十分です。手順は次のとおりです。
- 2つのノードのGaleraクラスターをデプロイします。
- ClusterControlによってクラスターがデプロイされたら、ClusterControlノードにgarbdを追加します。
最終的には次の設定になります。
ガレラクラスターを展開する
ClusterControl Deployセクションに移動して、クラスターをデプロイします。
展開するテクノロジーを選択したら、SSHでホストに接続するためのユーザー、キー、またはパスワードとポートを指定する必要があります。新しいクラスターの名前と、ClusterControlに対応するソフトウェアと構成をインストールさせる場合にも必要です。
SSHアクセス情報を設定した後、ベンダー/バージョンを選択し、データベース管理者パスワード、datadir、およびポートを定義する必要があります。使用するリポジトリを指定することもできます。
ClusterControlは、Galeraクラスターには奇数のノードが必要であると警告しますが、クラスターに追加するノードは2つだけです。
Galeraクラスターをデプロイすると、[ジョブ]ページで監視できるClusterControlジョブがトリガーされます。
Garbdをインストールする
展開が完了したら、ClusterControlホストにgarbdをインストールします。 ClusterControlからgarbdをデプロイするオプションがありますが、同じClusterControlサーバーにデプロイする場合、このオプションは機能しません。これは、データベースのバージョンとパッケージの依存関係に関連する問題を回避するためです。
したがって、手動でインストールしてから、garbdをClusterControlにインポートする必要があります。
CentOS7へのPerconaGarbdの手動インストールを見てみましょう。
Perconaリポジトリファイルを作成します:
$ vi /etc/yum.repos.d/percona.repo
[percona-release-$basearch]
name = Percona-Release YUM repository - $basearch
baseurl = http://repo.percona.com/release/$releasever/RPMS/$basearch
enabled = 1
gpgcheck = 0
[percona-release-noarch]
name = Percona-Release YUM repository - noarch
baseurl = http://repo.percona.com/release/$releasever/RPMS/noarch
enabled = 1
gpgcheck = 0
[percona-release-source]
name = Percona-Release YUM repository - Source packages
baseurl = http://repo.percona.com/release/$releasever/SRPMS
enabled = 0
gpgcheck = 0
次に、Percona XtraDBClustergarbdパッケージをインストールします。
$ yum install Percona-XtraDB-Cluster-garbd-57
次に、garbdを構成する必要があります。このためには、/ etc / sysconfig/garbファイルを編集する必要があります。
$ vi /etc/sysconfig/garb
# Copyright (C) 2012 Codership Oy
# This config file is to be sourced by garb service script.
# A comma-separated list of node addresses (address[:port]) in the cluster
GALERA_NODES="192.168.100.192:4567,192.168.100.193:4567"
# Galera cluster name, should be the same as on the rest of the nodes.
GALERA_GROUP="Galera1"
# Optional Galera internal options string (e.g. SSL settings)
# see http://galeracluster.com/documentation-webpages/galeraparameters.html
# GALERA_OPTIONS=""
# Log file for garbd. Optional, by default logs to syslog
# Deprecated for CentOS7, use journalctl to query the log for garbd
# LOG_FILE=""
Galeraノードの構成に従って、GALERA_NODESおよびGALERA_GROUPパラメーターを変更します。また、サービスを開始する前に、#REMOVE THISAFTERCONFIGURATIONという行を削除する必要があります。
そして今、私たちは服装サービスを開始することができます:
$ service garb start
Redirecting to /bin/systemctl start garb.service
これで、新しいgarbdをClusterControlにインポートできます。
ClusterControl-> Select Cluster-> AddLoadBalancerに移動します。
次に、[Garbd]と[ImportGarbd]セクションを選択します。
ここでは、ホスト名またはIPアドレスと新しいGarbdのポートのみを指定する必要があります。
garbdをインポートすると、[ジョブ]ページで監視できるClusterControlジョブがトリガーされます。完了すると、上部のバーに緑色のチェックマークが付いたgarbdが実行されていることを確認できます。
以上です!
これで、最小限の2ノードのGaleraクラスターの準備が整いました。