LoginSignup
7
8

More than 5 years have passed since last update.

VirtualBox+Vagrant+Docker+HAProxy+MySQLでMySQLロードバランシングを実現する #1 準備編

Last updated at Posted at 2016-01-25

AWSに適用する前に仮想環境でテストしたいと思ってこの構成にしました

Windowsで仮想環境を作りたいと先週Vagrantを使ってみましたが立ち上げ遅すぎワロタ~となってしまったので苦肉の策でVirtualBox上にVagrantでCentOS6.7を用意してその中にdocker-engineをインストールして爆速立ち上げ環境を作ってしまおうという意図の下、勤務中に書き上げたエントリーです。仕事は楽しい :dancers::dancers::dancers:

前提

立ち上げるVMはCentOS6.7でVagrantboxはこちらを使っています
https://github.com/CommanderK5/packer-centos-template/releases/download/0.6.7/vagrant-centos-6.7.box

ただvagrant upした後にyum updateを行うのでそれをvagrant packageしたものをベースとし、そのboxで生成したVM上にdocker-engineをインストールするのでそれもpackageしてそれを今回動作させるVMとして使用します

boxの派生イメージ的には
centos6-7 : ダウンロードした状態のCentOS
:arrow_down:
centos6-7-yum-update : CentOSにyum updateしただけ
:arrow_down:
centos6-7-docker-engine : docker-engineインストールした状態
となります
こまめに分割しているのはCentOS6.7ベースで他の事したい時にいちいちupdateすると時間の無駄になるからですね

今回はMySQLとPHPとHAProxyを使用したいのですがそれらはdockerコンテナとして起動します

yum update状態のbox作成

vagrant upで何もしていないCentOSを立ち上げてください
vagrant init ~~とvagrantfile編集は割愛します、全く分からない場合ここを見てvagrant upがキメられるようにしてください

おもむろに
sudo yum update
をかまします

[vagrant@localhost ~]$ sudo yum update

~~色々~~

  perl-version.x86_64 3:0.77-141.el6_7.1                          postfix.x86_64 2:2.6.6-6.el6_7.1
  procps.x86_64 0:3.2.8-35.el6_7                                  puppet-agent.x86_64 0:1.3.2-1.el6
  selinux-policy.noarch 0:3.7.19-279.el6_7.8                      selinux-policy-targeted.noarch 0:3.7.19-279.el6_7.8
  udev.x86_64 0:147-2.63.el6_7.1

Complete!

完了しました

この時点でboxcentos6-7-yum-updateを作成したいと思います

boxを作成するコマンドは
vagrant package --output 作成するbox名
です
vagrant packageだけでもいいらしいですがbox名を指定したいのでオプションを付けています。

現在のbox一覧

centos6-7というboxだけが存在しています

j5hhht1@J5HHHT1-PC /d/various/vagrant/centos6-7
$ vagrant box list
centos6-7 (virtualbox, 0)

package実行

※packageを実行する時自動的にvagrant haltが実行されます、先にhaltしててもしなくてもどっちでもいいです

vagrant package --output centos6-7-yum-update
実行が完了するとカレントディレクトリにcentos6-7-yum-updateというboxファイルが生成されます

j5hhht1@J5HHHT1-PC /d/various/vagrant/centos6-7
$ vagrant package --output centos6-7-yum-update
==> default: Attempting graceful shutdown of VM...
==> default: Clearing any previously set forwarded ports...
==> default: Exporting VM...
==> default: Compressing package to: d:/various/vagrant/centos6-7/centos6-7-yum-
update

j5hhht1@J5HHHT1-PC /d/various/vagrant/centos6-7
$ ls
Vagrantfile  centos6-7-yum-update

boxの登録

先ほどpackageで生成したboxファイルを登録します
vagrant box add box名 boxファイルPATH
実行コマンド
vagrant box add centos6-7-yum-update ./centos6-7-yum-update

j5hhht1@J5HHHT1-PC /d/various/vagrant/centos6-7
$ vagrant box add centos6-7-yum-update ./centos6-7-yum-update
==> box: Box file was not detected as metadata. Adding it directly...
==> box: Adding box 'centos6-7-yum-update' (v0) for provider:
    box: Unpacking necessary files from: file://d:/various/vagrant/centos6-7/cen
tos6-7-yum-update
    box: Progress: 100% (Rate: 33.1M/s, Estimated time remaining: --:--:--)
==> box: Successfully added box 'centos6-7-yum-update' (v0) for 'virtualbox'!

j5hhht1@J5HHHT1-PC /d/various/vagrant/centos6-7

登録されたか確認

j5hhht1@J5HHHT1-PC /d/various/vagrant/centos6-7
$ vagrant box list
centos6-7            (virtualbox, 0)
centos6-7-yum-update (virtualbox, 0)

新しくcentos6-7-yum-updateというboxが登録されていますね

centos6-7-yum-updateboxからCentOS起動まで

手順は
1.centos-6-7-yum-updateディレクトリを作成
2.vagrant initをキメる
3.vagrantfile編集
4.vagrant upで起動

1.ディレクトリ作成
※同じディレクトリ構成ではないと思うので各自の環境に合わせて変更してください
僕の場合カレントディレクトリは
/d/various/vagrant/centos6-7

mkdir ../centos6-7-yum-update
作ったディレクトリに移動
cd ../centos6-7-yum-update

2.vagrant init
centos6-7-yum-update用のvagrantfileを作成します

vagrant init centos6-7-yum-update

3.Vagrantfile編集
今回GUIモードは指定しません

vagrantfile
// Windowsから見ることの出来るIPを指定
config.vm.network "private_network", ip: "192.168.33.11"

4.vagrant upで起動
vagrant up

sudo yum updateで特に更新されなければ大丈夫です

これでcentos6-7-yum-updateboxは作成完了

1つのbox作るだけでも長い……………………………………

packageから作ったboxのVMにssh接続出来ない場合

vagrant sshでログインして
sudo ln -s -f /dev/null /etc/udev/rules.d/70-persistent-net.rules
ssh切って
vagrant reload

ssh vagrant@192.168.33.10でも入れるようになりました
参考
macで作られたvagrant boxをもらったときに出るネットワークエラーの対処法

docker-engineインストール状態のbox作成

手順はcentos6-7-yum-updateboxと大して変わりません、docker-engineインストールするくらいです
なのでdocker-engineのインストールだけ書きます

手順
1.centos6-7-yum-updateにdocker-engineインストール
2.vagrant package --output centos6-7-docker-engineでbox作成
3.vagrant box add centos6-7-docker-engine ./centos6-7-docker-engineでbox登録
4.vagrant init centos6-7-docker-engineでvagrantfile生成
5.vagrantfile編集
6.vagrant upで実行

docke-engineインストール

curl -sSL https://get.docker.com/ | sh
これ一発です笑
Installation on CentOS

dockerデーモン起動
sudo service docker start

[vagrant@localhost ~]$ sudo service docker start
Starting docker:                                           [  OK  ]

イメージ確認等のコマンド

[vagrant@localhost ~]$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED
VIRTUAL SIZE
[vagrant@localhost ~]$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED
STATUS              PORTS               NAMES

何もpullしていないのでimageは表示されませんが動くのは確認出来ました

一旦終了

ひとまずdockerの入ったbox作成までを行い、vagrant upしたらdockerが使える状態になっていれば問題ありません

いくつもVagrantfileを作ってディレクトリごとにvagrant upするのがvagrantの基本で良いのか疑っていますがdockerが動く状態にはなったのでここでひとまず

以上です :anchor:

7
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
8