Vagrantの勉強でサーバを構築したのでメモ

サーバの構成は

  • ロードバランサー(Nginx)1台
  • webサーバ(Apache)3台
  • DBサーバ(MySQL)2台
  • キャッシュサーバ(Memcached)1台

をそれぞれ独立したサーバとして構築する。

VirtualBoxとVagrantのインストール

VirtualBoxVagrantからダウンロードしてインストール

VagrantBOXの追加

Vagrantbox.esから使用するBOXを取得してくる(今回はCentOS7.0のものを使用)

vagrant box add centOS7 https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.1.0/centos-7.0-x86_64.box

Vagrantfileの設定

環境を構築する用のフォルダを作成し、取得してきたBOXを初期化する

vagrant init centOS7

その際に生成されたVagrantファイルを以下のように変更する
■Vagrantfile(local)

Vagrant.configure("2") do |config|
  config.vm.box = "CentOS7"
  
  # load brancer
  config.vm.define "nginx" do |server|
     server.vm.hostname = "nginx.CentOS7"
     server.vm.network "private_network", ip: "192.168.33.10"
  end
  
  # web1
  config.vm.define "web01" do |server|
     server.vm.hostname = "web01.CentOS7"
     server.vm.network "private_network", ip: "192.168.33.11"
  end

  # web2
  config.vm.define "web02" do |server|
     server.vm.hostname = "web02.CentOS7"
     server.vm.network "private_network", ip: "192.168.33.12"
  end

  # web3
  config.vm.define "web03" do |server|
     server.vm.hostname = "web03.CentOS7"
     server.vm.network "private_network", ip: "192.168.33.13"
  end
  
  # db01
  config.vm.define "db01" do |server|
     server.vm.hostname = "db01.CentOS7"
     server.vm.network "private_network", ip: "192.168.33.20"
  end
  
  # db02
  config.vm.define "db02" do |server|
     server.vm.hostname = "db02.CentOS7"
     server.vm.network "private_network", ip: "192.168.33.21"
  end
  
  # memcached01
  config.vm.define "memcached01" do |server|
     server.vm.hostname = "memcached01.CentOS7"
     server.vm.network "private_network", ip: "192.168.33.30"
  end
end

■Vagrantfile(public)

Vagrant.configure("2") do |config|
  config.vm.box = "CentOS7"
  
  # load brancer
  config.vm.define "nginx" do |server|
     server.vm.hostname = "nginx.CentOS7"
     server.vm.network "public_network", ip: "192.168.11.20"
     server.vm.network "private_network", ip: "192.168.33.10", virtualbox__intnet:true
  end
  
  # web1
  config.vm.define "web01" do |server|
     server.vm.hostname = "web01.CentOS7"
     server.vm.network "private_network", ip: "192.168.33.11", virtualbox__intnet:true
  end

  # web2
  config.vm.define "web02" do |server|
     server.vm.hostname = "web02.CentOS7"
     server.vm.network "private_network", ip: "192.168.33.12", virtualbox__intnet:true
  end

  # web3
  config.vm.define "web03" do |server|
     server.vm.hostname = "web03.CentOS7"
     server.vm.network "private_network", ip: "192.168.33.13", virtualbox__intnet:true
  end
  
  # db01
  config.vm.define "db01" do |server|
     server.vm.hostname = "db01.CentOS7"
     server.vm.network "private_network", ip: "192.168.33.20", virtualbox__intnet:true
  end
  
  # db02
  config.vm.define "db02" do |server|
     server.vm.hostname = "db02.CentOS7"
     server.vm.network "private_network", ip: "192.168.33.21", virtualbox__intnet:true
  end
  
  # memcached01
  config.vm.define "memcached01" do |server|
     server.vm.hostname = "memcached01.CentOS7"
     server.vm.network "private_network", ip: "192.168.33.30", virtualbox__intnet:true
  end
end

※ホストOS(Vagrantを立ち上げたPC)のみでアクセスする場合はlocalの方、外部からのアクセスを許容する場合はpublicの方で設定

環境の立ち上げ

■起動

vagrant up

■停止

vagrant halt

■Vagrantfileを読み込みなおして再起動

vagrant reload

SSHクライアントでの接続

user、pass共にvagrantで接続可能
※外部からのアクセスを可能にしている場合はpublic_networkを設定しているサーバのみ接続可能

それぞれ各サーバで必要なものをインストールしていく

参考
Windows版Vagrantを利用して仮想マシーンを操作してみよう
Vagrantで複数台同時起動するマルチマシン設定
よく使うVagrantfileの設定のまとめ