今回は、複数の仮想マシンからなる環境の自動構築に挑戦します。複数の仮想マシンをまとめて構築した上で、これらを連携させる設定処理を実施してみましょう。
ここでは、具体例として、「GlusterFS」による分散ファイルシステムを構築します。GlsuterFSは、複数のサーバーのローカルディスクを結合し、仮想的に1つのボリュームを構成する機能を提供します。詳細については、「GlusterFS技術情報」が参考になるでしょう。
構築環境の全体像
図1のように、「vda」と「vdb」の2個の仮想ディスクを接続した、4台の仮想マシンを構成することを目指します。それぞれ、「vda」にはRHEL6.4とGlusterFSをインストールして、「vdb」は空のファイルシステムとして、「/data」にマウントします。それぞれの「vdb」は4GBのサイズで用意しておき、GlusterFSでこれらを結合することで、16GBのボリューム「vol01」を作成します。
RHEL6.4とGlusterFSがインストールされた、4台の仮想マシンを準備する作業は、前回と同様に、virt-constructからKickStartとPuppetを連携させることで実現が可能です。4台の仮想マシンの準備ができたら、代表となる1台として「gluster01」から次のコマンドを実行します。
# gluster peer probe gluster02
# gluster peer probe gluster03
# gluster peer probe gluster04
# gluster vol create vol01 \
gluster01:/data/brick01 \
gluster02:/data/brick01 \
gluster03:/data/brick01 \
gluster04:/data/brick01
# gluster vol start vol01
これにより、4台の仮想マシンそれぞれのディレクトリー「/data/brick01」を結合したボリューム「vol01」が作成されます。ただし、この最後のコマンドの実行は、Puppetで実施するのは少し困難です。Puppetは、あくまで、1台のサーバーの構成を実施するためのツールですので、「他の3台の構成が終わったことを確認してからコマンドを実行する」ということができません。
もちろん、Puppetのリソースを拡張して、そのための機能を追加することは可能ですが、あまり複雑になりすぎるのも考え物です。ここでは、複数の仮想マシンを連携する部分は、シンプルにシェルスクリプトで実装することにします。つまり、1つのシェルスクリプトで、次の処理をまとめて実行しようというわけです。
- virt-constructで4台の仮想マシンを作成して、GlusterFSを導入する
- 4台の仮想マシンすべての構築が完了して、ログイン可能になるまで待つ
- gluster01で前述のボリューム作成コマンドを実行する