最初のクラウドとして、それなりに要件を満たしていたGMOクラウドALTUSを9ヶ月ほど使ってきた。しかし、その間にサーバ運用の価値観が大きく変わり、別のクラウドも触ってみたくなってきた。価値観の変化というのはマルチマスターの便利さ。スケールアウトによって更新処理が犠牲になるマルチマスターを避けてきたが、glusterfsの利用による構成管理の単純化に大きく心変わりした。同様にDBもmariadbのマルチマスターに変更して、wordpressのスケールアウトを可能にしたい。性能面でのスケールアウトはまるで必要ないが、運用面で複数台運用ができるとローテーションによる再構築やメンテがし易くなるので実用的。
クラウドとは言え、最低料金で運用したいのでアーカイブ領域すら使わない2台運用。それでもブログのおかげでやっと最近黒字になってきた程度w 自宅環境の考えと一緒なのだけど、基幹機能を落とせないから古いOSを使い続けるという悪循環には2度とはまりたくない。サーバAからサーバBを生成して、サーバBからもサーバAが作れるという環境にする必要がある。これには2台が同じ機能と同じデータを持つ必要があり、それをミドルウェアレベルのレプリケーションやrsync/lsyncで実装してきた。今までのやり方だと、どうしてもmaster/slaveの関係性が出来てしまい、slaveとなるサーバBの再構築は容易だが、サーバAを再構築する際の昇格処理が問題となった。
bind/yum/git/lsync/mysqlなど、ミドルウェアが増えれば増えるほど、この昇格処理の依存関係が密接に絡み合ってしまってロジックが複雑になっていく。その負担は片手間で運用している個人サーバではありえないレベル。別の要件で自宅環境にglusterfsを導入したところ、複雑化していた処理が極めてシンプルに。以降、出来るものは全てマルチマスターに変更してきた。しかし、GMOクラウドALTUSは仮想サーバ間の通信速度が貧弱なため(ミニサーバだけ?)、レスポンスに影響する部分で内部通信を使う事はできない。phpとmysql間の通信すらローカルで閉じるように作り直したくらいなので、同期更新を伴うマルチマスターの利用は不可能と考えていた。
そこで今回は2つ目の候補としていたIDCFクラウドを使ってみた。たまたまかもしれないけど、評価期間的なキャンペーンが全くなくて残念。アカウントを作って電話認証を通すと、すぐにクラウド環境を使えた。構築はウェブUIで簡単に行える。sshの公開鍵を登録しておけば、最初から公開鍵認証状態でサーバを作れる。私の場合は、どうせkickstart + ansibleで再構築環境を用意するので、ウェブUIでの構築は最初だけ。2台目を作ってみる。当然、同じセグメントにサーバが出来るので、もうこの時点で幸せw 自分専用のセグメントを1つ自由に使えるのだ。サーバ間通信を試してみるが、これも極めて高速。もう何の問題もなし!
この時点であえてGMOクラウドALTUSの利点を述べるなら、GIPを仮想サーバ数だけもらえる事。2台作れば2つのGIPがもらえる。とはいえ専用のセグメントではない上に、2台の仮想サーバが別セグメントになる可能性もあるので、個々のサーバをもらったGIPにNATしないと外にすら出れない。クラウドというよりは内部経路を持つVPSを2台借りてるといった印象。また、アダルトコンテンツの扱いが公式に許容されているのも人によっては利点となるかもしれない。それ以外の点においては、全てIDCFクラウドが勝ると今のところ考えている。
IDCFクラウドで構築した2台の仮想サーバは何もしないでもインターネットとの通信は可能。更に50GBのオブジェクトストレージも無料で使えるので、kickstartに使うyumリポジトリもここに配置出来る。読み書きには非常に時間がかかるが、s3fsでマウントしてローカルのyumリポジトリとして使うにはそれほど違和感はない。内部のネットワークも自由度が高く、仮想ノードのNICをブリッジ化する事も出来た。GMOクラウドALTUSでは不可能だったLXCコンテナのブリッジ接続も問題なかった。調子に乗ってコンテナ上でs3fsマウントやkeepalivedのvrrpを使ってみたが、途端にコンテナからの反応が途絶えてしまったので、ブリッジ内であまり複雑なネットワーク構成は避けておいた方が無難そう。
ないものねだりにはなるが、仮想ルータでのロードバランスがUDPに対応していないのが残念。ヘルスチェックもカスタマイズは出来なそうなので、自分でLVSを用意してそこにポートフォワードするような構成。この辺りはIDCFのブログでも紹介されていて、cloudstackのAPIを使って設定する。やっとクラウドっぽくなってきたw 環境的にはかなり満足度が上がったので、早くIDCFクラウドの環境を作り上げてマルチマスターなwordpressに移行したい。wordpressは画像投稿やアップデート処理もウェブUIから行うので、リクエストをラウンドロビンさせるとどのサーバが受けるかわからない。バックエンドはmariadbでマルチマスターにしてもwordpressディレクトリ内の更新が問題になる。そのwordpressディレクトリにglusterfsを利用する事で完全なマルチマスターを実現するつもり。そんな運用が可能なのかどうか、性能面も含めて試してみたい。