GNU/Linux >> Linux の 問題 >  >> Cent OS

CentOS7でMariaDBのロードバランサーとしてHAProxyを設定する方法

このチュートリアルでは、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台すべてのサーバーでのルート権限。

ステップ1-MariaDBGaleraクラスターをインストールして構成する

このステップでは、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 xinetd 

clustercheckを実行するには、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 / hosts

HAProxyはCentOSベースリポジトリで利用できます。次のyumコマンドを実行してインストールします。

 yum -y install haproxy 

次に、rsyslog構成ファイルを編集してHAProxyのログを構成します。

 vi /etc/rsyslog.conf 

udpポートのコメントを解除します:

#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 --reload

systemctlコマンドを使用して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
  1. Ubuntu20.04でMariaDBGaleraクラスターをセットアップする方法

  2. HAProxyロードバランサーを設定する方法

  3. CentOS/RHEL 5 で新規ユーザー用に VNC サーバーをセットアップする方法

  1. CentOS7にMariaDBをインストールする方法

  2. CentOS8にMariaDBをインストールする方法

  3. CentOS7でNginxのロードバランサーとしてHAProxyを設定する方法

  1. CentOSでSVNサーバーをセットアップする方法

  2. CentOS7でPureFTPdをセットアップする方法

  3. CentOS7でProjectSendファイル共有ツールをセットアップする方法