今日の記事では、負荷分散された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つのパブリックアドレスのみがサイトへのアクセスに使用されます。この記事はこれですべてです。読んでいただきありがとうございます。良い一日をお過ごしください。