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

CentOS7でHAproxyを使用してMariaDBGaleraクラスターをセットアップする方法

今日の記事では、負荷分散されたMariaDBとwordpress用にHAproxyを使用してMariaDBGaleraクラスターをインストールします。 Galeraはアクティブ-アクティブクラスタリングテクノロジーです。つまり、すべてのノードで書き込みをサポートし、クラスター全体に複製することができます。ノードのみが書き込み可能であるアクティブ-パッシブクラスタリングもあります。また、クラスターに負荷分散するためのHAproxyをインストールします。インストールは5台のCentOS7サーバーで行われ、3台はMariaDB 10.1 Galera用、1台はHaproxy用、1台はwordpress用です。 HAproxyは、フロントエンドとして表示しながら、ラウンドロビンモードで各ノードにリクエストをルーティングするように機能します。ここでは、データベースサーバーをプライベートネットワークに配置し、WebサーバーのみがパブリックIPアドレスに面しているという、従来のクラスタリング方法を使用しています。

ガレラクラスターのセットアップ

すべてのサーバーにmysqlをインストールする必要があります。まず、リポジトリを追加します

echo '[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1' >> /etc/yum.repos.d/MariaDB.repo

次に、mariadb、rsync、xinetdをインストールします

sudo yum install mariadb-server rsync xinetd

/ etc / hostsを編集する必要があります。どのエディターでも実行できますが、nanoを使用します

nano /etc/hosts

たとえば、IPとホストの名前

192.168.207.241 mariadb01
192.168.209.91 mariadb02
192.168.129.168 mariadb03

ホストのプライベートIPを使用していることを確認してください。パブリックIPを使用している場合は、クラスターを保護するためにホスト間のトラフィックを暗号化する必要があります。

MariaDBをインストールした後、編集

nano /etc/my.cnf.d/server.cnf

すべてのサーバーで、ファイル内の[galera]セクションを見つけて、このように表示する必要があります。太字で変更する必要があるIPアドレスを除いて

[galera]
# Mandatory settings
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so

#add your node ips here
wsrep_cluster_address="gcomm://192.168.207.241,192.168.209.91,192.168.129.168"
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
#Cluster name
wsrep_cluster_name="linoxide_cluster"
# Allow server to accept connections on all interfaces.

bind-address=0.0.0.0

# this server ip, change for each server
wsrep_node_address="192.168.207.241"
# this server name, change for each server
wsrep_node_name="mariadb01"

wsrep_sst_method=rsync

ガレラクラスターを見つめる

これを構成したら、クラスターを開始する必要があります

まず、このコマンドのマスターであるmariadb01ノードで

galera_new_cluster

次に、通常のsystemctlコマンドを使用して他の2つのノードで:

systemctl start mariadb

次に、クラスターが実行されていることを確認できます:

mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"

次に、mysql_secure_installationスクリプトを実行します

mysql_secure_installation

firewalldの設定

これで、3つのノードがすべて接続されたら、firewalldを起動して構成できます。

systemctl start firewalld

mariadbクライアントとgaleraレプリケーションポートを開きます:

firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --permanent --add-port=4567/tcp

レプリケーションに使用するrsyncポートを開きます

firewall-cmd --permanent --add-port=873/tcp

その他の重要なポート

firewall-cmd --permanent --add-port=4444/tcp
firewall-cmd --permanent --add-port=9200/tcp

最後にファイアウォールをリロードします

firewall-cmd --reload

xinetdとclustercheckの使用

Clustercheckは、クラスターを監視するための便利なスクリプトです。次のコマンドでインストールしましょう

wget https://raw.githubusercontent.com/olafz/percona-clustercheck/master/clustercheck
chmod +x clustercheck
mv clustercheck /usr/bin/

次に、mysqlchkをサービスリストに追加する必要があります。そのために、サービスファイルを編集します:

nano /etc/services

長いファイルなので、nanoでCtrl-Wを入力して9200を検索します。そのポートを使用するすべてのサービスにコメントを付け、新しいサービスを追加する必要があるため、パーツは次のようになります。

mysqlchk 9200/tcp # mysqlchk
#wap-wsp 9200/tcp # WAP connectionless session service
#wap-wsp 9200/udp # WAP connectionless session service

これが保存されて完了すると、xinetdを開始できます

systemctl start xinetd

これはすべてすべてのノードで実行する必要があり、マスターでのみclustercheckのユーザーを追加する必要があります。

mysql -u root -p

GRANT PROCESS ON *.* TO 'clustercheckuser'@'localhost' IDENTIFIED BY 'clustercheckpassword!';

exit;

次に、clustercheckスクリプトを試すことができます

clustercheck

HAproxyの設定

指定されたhaproxyサーバーにログインします。現在、ロードバランサーをインストールしています

/ etc / hostsファイルを次のように編集します(もちろん、ipsを使用)

192.168.207.241 mariadb01
192.168.209.91 mariadb02
192.168.129.168 mariadb03
192.168.210.252 haproxy01

次に、haproxyをインストールできます

yum install haproxy

次に、rsyslog.confを編集する必要があります

nano /etc/rsyslog.conf

これらの2行のコメントを解除します

# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

保存して終了

echo 'local2.=info /var/log/haproxy-access.log
local2.notice /var/log/haproxy-info.log
' >> /etc/rsyslog.d/haproxy.conf

デフォルトのhaproxy構成をバックアップできます

mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bk

次に、nanoを使用して新しいファイルを作成します

nano /etc/haproxy/haproxy.cfg

このペーストビンを構成として使用しますが、IPアドレスを変更します。

haproxyノードにファイアウォールを設定する時が来ました

systemctl start firewalld
firewall-cmd --permanent --add-port=9000/tcp
firewall-cmd --permanent --add-port=3030/tcp

次に、ファイアウォールをリロードします

firewall-cmd --reload

HAproxyからのMariaDBへのアクセスの設定

mariadbクラスタータイプの場合:

mysql -u root -p

GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY "verystrongpassword";

次に、haproxy01サーバーに移動し、データベースへのアクセスを試みます。

MariaDBクライアントをインストールする必要があるので、最初にそれを実行しましょう:

echo '[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1' >> /etc/yum.repos.d/MariaDB.repo

これはリポジトリを追加するためのもので、このコマンドはリポジトリをインストールします

yum install MariaDB-client

次に、テストしてみましょう

mysql -u root -p -h 192.168.210.252 -P 3030 -e "select Host, User, Password from mysql.user"

通常のrootパスワードではなく、パスワードとして非常に強力なパスワードを入力してください。

Wordpressのインストール

最後に、クラスターで使用するワードプレスをセットアップします。 mariadb01ノード、haproxy01、およびwp01ノードで実行する必要のある作業があります。

mariadb01について

mysql -u root -p

CREATE DATABASE wordpress;

CREATE USER wordpressuser@localhost IDENTIFIED BY 'password';

GRANT ALL ON wordpress.* TO wordpressuser@'192.168.210.252' IDENTIFIED BY 'password';

/ etc / hosts /

に設定されたwp01ノード
192.168.220.17 wp01
192.168.210.252 haproxy01

また、haproxy01に追加

192.168.220.17 wp01

次に、必要なパッケージをwp01ノードにインストールする必要があります

yum install httpd php php-gd php-mysqlnd rsync

ここから、sudo権限を持つroot以外のアカウントを使用する必要があります。持っていないので作成します:

useradd miki
usermod miki -aG wheel

passwd miki

次に、ユーザーとしてログインします

su miki

dirをhomeに変更

cd

次に、最新バージョンのワードプレスをダウンロードして解凍します

wget http://wordpress.org/latest.tar.gz
tar xzvf latest.tar.gz

rsyncを使用してwordpressをapachedirにコピーします

sudo rsync -avP ~/wordpress/ /var/www/html/
mkdir /var/www/html/wp-content/uploads

また、所有権をapacheユーザーに変更する必要があります

sudo chown -R apache:apache /var/www/html/*

ワードプレスの設定

WordPressはwp-config.phpファイルで構成されているため、データベースサーバーのホストアドレス、ログイン資格情報、データベース名などのパラメーターを設定する必要があります。構成ファイルをバックアップしましょう:

cd /var/www/html

cp wp-config-sample.php wp-config.php

次に、編集を行います:

nano wp-config.php

それらの行のみを変更してください

define('DB_NAME', 'wordpress');

/** MySQL database username */
define('DB_USER', 'wordpressuser');

/** MySQL database password */
define('DB_PASSWORD', 'password');

/** MySQL hostname */
define('DB_HOST', '192.168.210.252:3030');

最後に、ApacheWebサーバーを再起動します。

sudo systemctl restart httpd

ブラウザからWordPressのインストールを完了します

以下のようなワードプレスノードのパブリックアドレスに移動して、ワードプレスのインストールプロセスを続行できます

これで、WordPressを実行してクラスターをセットアップできました

結論

ここでは、HAproxyによってロードバランスされたGaleraクラスターの上にwordpressをセットアップしました。これは、負荷の高いサイト向けの復元力のあるソリューションであり、セットアップには時間がかかりますが、ダウンタイムからサイトにほぼ完全な保険を提供します。ノード間のすべてのトラフィックはプライベートIPアドレスによって行われ、Worpressフロントエンドの1つのパブリックアドレスのみがサイトへのアクセスに使用されます。この記事はこれですべてです。読んでいただきありがとうございます。良い一日をお過ごしください。


Cent OS
  1. Ubuntu16.04にMariaDBGaleraクラスターをインストールする方法

  2. Ubuntu20.04でMariaDBGaleraクラスターをセットアップする方法

  3. CentOSおよびRedHatでMySQLを使用してPure-FTPDをセットアップする方法

  1. CentOS7でVSFTPDを使用してFTPサーバーをセットアップする方法

  2. CentOS8でVSFTPDを使用してFTPサーバーをセットアップする方法

  3. CentOS6でMySQLをMariaDBに置き換える方法

  1. CentOS7でRiakKVNoSQLデータベースクラスターをセットアップする方法

  2. CentOS7にNginxとMariaDBを使用してownCloud9.1をインストールする方法

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