という話

技術ブログにしたい

ネットワーク素人が、さくらクラウドで負荷分散構築した時のメモ3【DBサーバー編】

なんか準備編ホッテントリに載ってるし。
続きを書かねば・・・(使命感)


前回のネットワーク素人が、さくらクラウドで負荷分散構築した時のメモ2【webサーバー編】 - なりせなるてずから引き続きです。
前回までの構成で以下のようになりました。
f:id:ichiy:20140501104345p:plain


今回は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サーバをクリックし電源操作から「シャットダウン」します。
f:id:ichiy:20140509134901p:plain


シャットダウンが完了したら、DBサーバから出てる紐みたいなのをドラッグしてローカルスイッチに接続します。
f:id:ichiy:20140509135201p:plain

これでローカルスイッチに接続されました。
再度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アドレスを入力します。


今回のまとめ

今回の設定で以下の図のようになりました。
f:id:ichiy:20140509143327p:plain

大分最初の図に近づきました!
次回で最終回Fileサーバを設定します。