ネットワーク素人が、さくらクラウドで負荷分散構築した時のメモ3【DBサーバー編】
なんか準備編がホッテントリに載ってるし。
続きを書かねば・・・(使命感)
前回のネットワーク素人が、さくらクラウドで負荷分散構築した時のメモ2【webサーバー編】 - なりせなるてずから引き続きです。
前回までの構成で以下のようになりました。
今回はDBサーバ2台と負荷分散のためのロードバランサ1台を構築します
ロードバランサの追加
この辺は前回とほぼ同じです。
「接続先スイッチ」を前回つくったローカル用のスイッチを選択して作成します。
VIPも前回同様追加しますが、ポート番号を3306にします。
さらっと書きましたが、ここを80にしていたせいで2時間位悩みました。
下で書きますがMariaDBの標準で使用するポートが3306なのです。
ループバックアドレス、APRの設定
これも前回と同様です。
MariaDBのインストール
まずはyumのリポジトリファイルを作ります
MariaDB - Setting up MariaDB Repositories - MariaDB
上記のページで環境に合わせた設定を書き出してくれます。
今回はCentOSの64bitでMariaDBのバージョンは10.0を選択したので以下のようになります
# MariaDB 10.0 CentOS repository list - created 2014-05-09 04:00 UTC # http://mariadb.org/mariadb/repositories/ [mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.0/centos6-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1
これを/etc/yum.repos.d/mariadb.repoというファイルを作って書き込みます。
書き込んだらインストールします。
2つのDBサーバーでデータを同期させたいのでGalera Replicationというものを使います。
CentOS 6.5 で MariaDB の Galera Replication Cluster を試す | CUBE SUGAR STORAGE
ここを参考にしました
$ sudo yum install MariaDB-Galera-server MariaDB-client galera rsync
インストールしたら同期するようの設定を行います。
# vim /etc/my.cnf.d/server.cnf
ファイルを開いてこんな感じの設定を書き込みます。
[mysqld] binlog_format=ROW default_storage_engine=InnoDB innodb_autoinc_lock_mode=2 innodb_locks_unsafe_for_binlog=1 wsrep_provider=/usr/lib64/galera/libgalera_smm.so wsrep_cluster_address=gcomm://192.168.0.101,192.168.0.102 wsrep_cluster_name='cluster_name' wsrep_node_name='node_name_1' wsrep_node_address='192.168.0.101 wsrep_sst_method=rsync
wsrep_cluster_addressには同期するDBのIPをカンマで区切って入力します。
wsrep_cluster_nameはクラスター名で任意のものを入力します。この名前が一緒のものが同じクラスターに所属します。
wsrep_node_nameはノード名です。これも任意のものでいいです。
wsrep_node_addressはこのノードのIPアドレスです。
MariaDBを起動します。
クラスター内で一番はじめに起動するノードには--wsrep-new-clusterというオプションを付けないと行けないみたいです。
# service mysql start --wsrep-new-cluster
Starting MySQL.. SUCCESS!
MariaDBで使用するポートをiptablesで開けておきます。
# iptables -I INPUT -p tcp -m tcp --dport 3306 -j ACCEPT # iptables -I INPUT -p tcp -m tcp --dport 4444 -j ACCEPT # iptables -I INPUT -p tcp -m tcp --dport 4567 -j ACCEPT # service iptables save
1台目のDBサーバのMariaDBに関する設定は以上です。
接続先の変更
MariaDBをインストールしたのでグローバルネットワークにつなぐ必要はなくなりました。
DBサーバの接続先をローカル用スイッチに変更します
さくらクラウドコントロールパネルの上部メニューにあるマップをクリックします。
DBサーバをクリックし電源操作から「シャットダウン」します。
シャットダウンが完了したら、DBサーバから出てる紐みたいなのをドラッグしてローカルスイッチに接続します。
これでローカルスイッチに接続されました。
再度DBサーバを起動します。
IPアドレスの設定
サーバの接続先がグローバルからローカルに変更したのでIPアドレスをローカル変更します。
先ほどMariaDBの設定時に書き込んだIPアドレスにします。
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
以下を貼り付けます
DEVICE=eth0 ONBOOT=yes BOOTPROTO=static HWADDR=サーバのMACアドレス IPADDR=192.168.0.101 NETMASK=255.255.255.0
HWADDRやIPADDRはサーバー毎に変えてください。
設定を反映します。
# ifup eth0
サーバーのコピー
前回同様サーバーをコピーします。
接続先はローカル用スイッチです。
コピーしてサーバーを起動したら、以下の設定を変更します。
・/etc/sysconfig/network-scripts/ifcfg-eth0のHWADDRとIPADDR
・/etc/my.cnf.d/server.cnfのwsrep_node_nameとwsrep_node_address
MariaDBの起動ですが、2台目以降のノードではオプションを付けずに起動します
# service mysql start
これで2台のDBサーバが同期されているはずです。
1台目にテストデータを入れて2台目で確認できた時は感動しましたw
ロードバランサに実サーバの登録
これまた前回同様、今作った2台のサーバーのIPアドレスを入力します。
今回のまとめ
今回の設定で以下の図のようになりました。
大分最初の図に近づきました!
次回で最終回Fileサーバを設定します。