このチュートリアルでは、HAProxyロードバランサーが前面にあるCentOS7にMariaDBGaleraクラスターをインストールする方法について説明します。セットアップ全体は4台のサーバーで構成されています。データベースノードに3台のCentOS7サーバーを使用し、2台のノードがアクティブになり、1台がバックアップノードとして機能します。 4番目のサーバーはHAProxyロードバランサーに使用されます。バランスアルゴリズムには、leastconnを使用します(ただし、他のアルゴリズムを使用することもできます)。
MariaDBは、MySQLデータベースサーバーの最初の開発者によって作成された最も人気のあるリレーショナルデータベースサーバーの1つです。 MariaDBは、XtraDBストレージエンジン、InnoDBストレージエンジン、およびariaと呼ばれる新しいストレージエンジンをサポートするMySQLのフォークです。
MariaDB Galera Clusterは、GNU/Linuxベースのオペレーティングシステムでのみ使用可能なMariaDBの同期マルチマスタークラスターです。 Galera Clusterは、XtraDBおよびInnoDBストレージエンジンのみをサポートします。これは、自動メンバー制御によるレプリケーション、自動ノード参加、およびクラスターノードへの読み取りと書き込みにGaleraライブラリを使用します。
前提条件
- 4台のCentOS7サーバー-64ビット:
mariadb1
192.168.1.132
mariadb2
192.168.1.133
mariadb3
192.168.1.134
HAProxy
192.168.1.135
- 4台すべてのサーバーでのルート権限。
このステップでは、3つのCentOSサーバーにMariaDBGaleraClusterをインストールして構成します。 MariaDB-Galeraサーバーをインストールしてから、ファイアウォールを有効にして、データベースやその他のサービス用にいくつかのポートを開きます。次に、各MariaDBサーバーにclustercheckスクリプトをインストールして、HAProxyからサーバーのステータスを確認できるようにします。
A。ホスト名を構成し、ベースシステムを準備します
sshアカウントですべてのデータベースサーバーにログインします:
ssh[メール保護]
ssh[メール保護].133
ssh[メール保護]
sudoコマンドを使用してrootユーザーに切り替えます:
sudo su
各MariaDBサーバーのhostsファイルを編集し、他のノードのすべてのサーバーIPアドレスとホスト名を追加します。
vi / etc / hosts
以下の/etc/hosts構成を参照してください:
192.168.1.132 mariadb1
192.168.1.133 mariadb2
192.168.1.134 mariadb3
ファイルを保存して終了します。
次に、MariaDB Galeraで問題が発生するため、各サーバーでSELinuxを無効にします。次のsedコマンドでSELinuxを無効にします:
sed -i -e's / SELINUX =permit / SELINUX =disable / g'/ etc / sysconfig / selinux
sed (ストリームエディタ):/ etc / sysconfig/selinuxファイルの「SELINUX=permissive」を「SELINUX=disabled」に置き換えます。
B。 MariaDBGaleraServerをインストールします
このステップでは、MariaDBリポジトリで利用可能なMariaDBGalera10.0をインストールします。
viコマンドを使用して、yum.repos.dディレクトリに新しい.repoファイルを作成します。
vi /etc/yum.repos.d/mariadb.repo
以下にMariaDBGaleraリポジトリの詳細を貼り付けて保存します:
#MariaDB10.0CentOSリポジトリリスト-作成済み2015-07-0914:56UTC
#http://mariadb.org/mariadb/repositories/
[mariadb]
name =MariaDB
baseurl =http://yum.mariadb.org/10.0/centos7-amd64
gpgkey =https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck =1
次に、MariaDB Galeraサーバーとクライアント、およびこのチュートリアルに必要なその他のパッケージをインストールします。
yum -y install MariaDB-Galera-server MariaDB-client galera rsync xinetd percona-toolkit precona-xtrabackup xinetd wget
インストールプロセスが完了するまで待ちます。
C。 Firewalldを設定する
Firewalldと呼ばれるCentOS7のデフォルトのファイアウォールをオンにします。オンにして、インストールするサービスで使用されるTCPポートを開きます。
3306 =MySQL/MariaDBクライアント接続に使用されます。
4567 =GaleraClusterレプリケーショントラフィック。
873 =Rsyncポート。
4444 =他のすべての状態スナップショット転送(SST)の場合。
9200 =xinetd-clustercheck。
次のsystemctlコマンドでfirewalldをオンにします:
systemctl start Firewalld
次に、firewall-cmdでポートを開きます:
Firewall-cmd --permanent --add-port =3306 / tcp
firewall-cmd --permanent --add-port =4567 / tcp
firewall-cmd --permanent --add -port =873 / tcp
Firewall-cmd --permanent --add-port =4444 / tcp
firewall-cmd --permanent --add-port =9200 / tcp
そしてfirewalldをリロードします:
Firewall-cmd --reload
D。 MariaDBGaleraクラスターを構成する
/etc/my.cnf.d/ディレクトリに移動し、vi:
を使用してserver.confファイルを編集します。cd /etc/my.cnf.d/
vi server.conf
コメントを外していくつかの構成行を追加すると、以下の詳細が表示されます:
wsrep_provider =/ usr / lib64 / galera / libgalera_smm.so#wsrepプロバイダーライブラリへのパス
wsrep_cluster_address ="gcomm://192.168.1.132,192.168.1.133,192.168.1.134"#グループノード、すべて追加MardiaDBサーバーIP
binlog_format =row
default_storage_engine =InnoDB
innodb_autoinc_lock_mode =2
bind-address =0.0.0.0
#以下に構成を追加します
#クラスター名
wsrep_cluster_name ="mariadb_cluster"
#サーバーIPを追加-mariadb2 =192.168.1.133-mariadb3 =192.168.1.134
wsrep_node_address ="192.168.1.132 "
#rsyncを使用するレプリケーションプロバイダー
wsrep_sst_method =rsync
ファイルを保存して終了します。
サーバーmariadb1で、次のコマンドを使用してクラスターをブートストラップしましょう。
/etc/rc.d/init.d/mysql bootstrap
結果:
クラスターのブートストラップ..MySQLの起動..成功!
mariadb2およびmariadb3サーバーで、MariaDBを通常どおり起動します。
/etc/init.d/mysql start
mariadb1ブートストラップ。
mariadb2とmariadb3が開始します。
MariaDBはすべてのノードで開始されました。次に、以下のコマンドを使用して、すべてのサーバーでMariaDBのルートパスワードを構成します。
/ usr / bin / mysql_secure_installation
E。 Clustercheckを構成する
Clustercheckは、MariaDBサーバーを監視できるプロキシ(例:HAProxy)を作成するための便利なbashスクリプトです。
/ tmpディレクトリに移動し、wgetを使用してスクリプトをダウンロードします:
cd / tmp
wget https://raw.githubusercontent.com/olafz/percona-clustercheck/master/clustercheck
次に、権限を変更してスクリプトを実行可能にし、/ usr /bin/ディレクトリに移動します。
chmod + x clustercheck
mv clustercheck / usr / bin /
次に、「/ etc /xinet.d/」ディレクトリでviコマンドを使用してclusterchekのxinetdスクリプトを作成します。
vi /etc/xinetd.d/mysqlchk
以下に設定を貼り付けます:
#default:on
#description:mysqlchk
service mysqlchk
{
disable =no
flags =REUSE
socket_type =stream
port =9200#このポートはxinetdがclustercheckに使用します
wait =no
user =nobody
server =/ usr / bin / clustercheck
_ log =only_from =0.0.0.0/0
per_source =UNLIMITED
}
保存して終了します。
clustercheckをサービスリストに追加します:
vi / etc / services
行10101に移動し、ポート9200を使用するサービスにコメントを付け、mysqlchk/clustercheckの新しい行を追加します。
mysqlchk 9200 / tcp #mysqlchk
#wap-wsp 9200 / tcp 9200 / tcpセッション#WAPコネクションレスセッションサービス
#wap-wファイルを保存して終了します。
次に、xinetdサービスを開始します:
systemctl start xinetdclustercheckを実行するには、MySQLで新しいユーザーを作成する必要があります。 MariaDBシェルにログインし、「clustercheckuser」という名前と「clustercheckpassword!」というパスワードで新しいユーザーを作成します。
mysql -u root -p
GRANT PROCESSON*。*TO'clustercheckuser'@'localhost' IDENTIFIED BY'clustercheckpassword!';
終了;
この段階で、すべてのMariaDBサービスが同期されます。
clustercheckのテスト:
/ usr / bin / clustercheck結果コードが200であることを確認してください。
ステップ2-HAProxyをインストールして設定する HAProxyサーバーにログインします:
ssh[メール保護]rootユーザーになり、MariaDBサーバーのIPとホスト名を「/ etc/hosts」ファイルに追加します。
sudo su
vi / etc / hostsHAProxyはCentOSベースリポジトリで利用できます。次のyumコマンドを実行してインストールします。
yum -y install haproxy次に、rsyslog構成ファイルを編集してHAProxyのログを構成します。
vi /etc/rsyslog.confudpポートのコメントを解除します:
#UDPsyslog受信を提供します
$ ModLoad imudp
$ UDPServerRun 51ファイルを保存してエディタを終了します。
rsyslog.dディレクトリにHAProxy設定を追加します:
vi /etc/rsyslog.d/haproxy.conf以下に構成を貼り付けます:
local2。=info/var/log/haproxy-access.log
local2.notice /var/log/haproxy-info.logファイルを保存してrsyslogを再起動します:
systemctl restart rsyslog次に、新しいHAProxy構成ファイルを作成します。
/ etc / haproxyディレクトリに移動し、dafulthaproxy構成ファイルをバックアップします。
cd / etc / haproxy /
mv haproxy.cfg haproxy.cfg.orig新しいhaproxy構成ファイルを作成します:
vi /etc/haproxy/haproxy.cfgそして、HAProxy設定を以下に貼り付けます:
global
log 127.0.0.1 local2
maxconn 1024
user haproxy
group haproxy
run daemon
ock / stats socket / var mode 600 level admin#haproxy用のソケットファイルを作成する
defaults
log global
mode http
option tcplog
ries
option dontlog null br/>オプション再ディスパッチ
maxconn1024
タイムアウト接続5000ms
タイムアウトクライアント50000ms
タイムアウトサーバー50000ms
listen mariadb_cluster 0.0> ## MariaDBbalanceleastconn-ポート3030でリッスンしているクラスター。
モードtcp
バランスleastconn
オプションhttpchk
server mariadb1 192.168.1.132:3306 check port 9200
server mariadb2 192.168.1.133:3306 check port 9200
server mariadb3 192.168.1.134:3306 check port 9200 backup#mariadb3を作成しますバックアップとして-自動レプリケーションデータ
listen stats 0.0.0.0:9000
## HAProxy stats web gui running on port 9000-username and password:howtoforge。
モードhttp
stats enable
stats uri / stats
stats realm HAProxy \ Statistics
stats auth howtoforge:howtoforge
stats admin if TRUEポート3030 は負荷分散されたMariaDBポートであり、ロードバランサーIPとそのポートを使用してすべてのMariaDBサーバー上のデータベースにアクセスできます。
ポート9000 はweb-guiのポートであり、ブラウザからHAProxyを監視できます。
次に、firewalldを起動し、ポート9000と3030を開いてから、リロードします。
systemctl start Firewalld
Firewall-cmd --permanent --add-port =9000 / tcp
firewall-cmd --permanent --add-port =3030 / tcp
Firewall- cmd --reloadsystemctlコマンドを使用してHAProxyを起動します:
systemctl start haproxy
ステップ3-HAProxyとMariaDBのテスト A。レプリケーションテスト
MariaDBサーバーにログインし、MySQLシェルにアクセスして、mariadb1、次にmariadb2、最後にmariadb3から新しいデータベースを作成します。
mysql -u root-p
データベースthis_mariadb1を作成します。 #これをmariadb1サーバーで実行します
データベースthis_mariadb2を作成します; #これをmariadb2サーバーで実行します
データベースthis_mariadb3を作成します; #これをmariadb3サーバーで実行するデータベースを確認してください:
B。 HAProxyを介してMariaDBサーバーにアクセスする
ここで、ポート3030のHAProxyIPを介してMariaDBサーバークラスターとデータベースにアクセスします。
このテストを行う前に、ホスト "%"で新しいユーザーrootを作成して、MariaDBサーバーへのリモートアクセスを有効にします。
MariaDBシェルにログインし、パスワード「aqwe123」を使用して新しいユーザー「root」を作成します。
mysql -u root -p
すべての特権を*。*に付与して[メールで保護]'%'を「aqwe123」で識別;次に、HAProxyサーバーを介して「mysql.user」データベーステーブルにアクセスします。
mysql -u root -p -h 192.168.1.135 -P 3030 -e "mysql.userからホスト、ユーザー、パスワードを選択"
ポート3030でロードバランサーIPにアクセスすると、データベースサーバーのユーザーを確認できます。ポート3030でHAProxy IPにアクセスすると、MySQLノードのデータベースにアクセスできます。
サーバーの別のテスト:leastconnアルゴリズム:
C。 HAProxyWeb-Guiにログインします
ユーザー名とパスワード「howtoforge」を使用して、ポート9000でHAProxy監視サーバーにアクセスしてHAProxyWebUIを表示できます。
http://192.168.1.135:9000/stats
HAProxyが正常にインストールされ、MariaDBサーバーが監視されていることがわかります。
結論 MariaDB Galera Clusterは、MySQLデータベースの負荷分散を提供する同期マルチマスタークラスターです。これは、サイトに強力なデータベースシステムを構築するための優れたソリューションです。 MariaDB Galera Clusterは、xtradbおよびinnodbストレージエンジンをサポートし、自動レプリケーションを提供し、新しいノードの自動参加を可能にします。データベースクラスターの前でHAProxyをロードバランサーとして使用できます。ロードバランサーは、着信要求をすべてのデータベースに分散するのに役立ちます。 bashスクリプトclustercheckを使用して、HAProxyからデータベース監視を実行します。 MariaDB Galera ClusterとHAProxyは、高可用性データベースシステムを構築するための最良のソリューションの1つです。
Cent OS