Upgrade to Pro — share decks privately, control downloads, hide ads and more …

20201117_vagrant

ONO,Tetsuo
November 17, 2020
91

 20201117_vagrant

VirtualBox+VagrantでのHA検証環境構築に際して、ネットワーク/追加ディスク問題についてまとめたメモ。

ONO,Tetsuo

November 17, 2020
Tweet

Transcript

  1. 目次  はじめに  VirtualBox+Vagrant 初期構成 ◦ ダウンロード/インストール ◦ 環境変数の設定

    ◦ 仮想マシンを実際に作って壊す  作業を簡便にするために ◦ 「ごった煮」boxの作成 ◦ ディスクの追加 ◦ ネットワークの管理  ふりかえり
  2. はじめに:検証でVirtualBoxを使う理由  VMware ESXi の場合:Ansible/Vagrantに支障 - Ansible:2.9以降でPymomiのみ利用可能 →ESXi単体での利用には対応不能 - Vagrant:VMware用プラグインは有償

     KVM の場合:別途Linuxサーバが必要 ちょっと(物理的に)敷居が高い…?  Hyper-Vの場合:Windows10Proが必要 ※Windows2016ベースの無償Hyper-Vもあるが こちらは別途ハードウェアが必要
  3. Vagrant:仮想マシンを作って壊す  初期フォルダを作成する コマンドプロンプトを開き、 c:¥vagrantフォルダを作る  CentOS7 のイメージを受信して作って壊す コマンドプロンプトより、c:¥vagrant配下に移動して実行 初回のvagrant

    up の時にboxの受信で大量通信が発生する ので注意… mkdir c:¥vagrant cd ¥vagrant mkdir centos-7 cd centos-7 # c:¥vagrant¥centos-7 に移動 vagrant init centos/7 #Vagrantfile が生成される vagrant up # boxをpull して VMを構築 vagrarnt ssh # 対象VMにssh接続してみる vagrrant destroy # 構築したVMを破棄
  4. Vagrant:Guest Additionsの自動投入  VirtualBoxではboxに含まれるGuest Additions(準仮想化ド ライバ)と実行環境とでバージョンが違う場合、エラーが出 力されてVagrantのジョブが異常終了することがある  Vagrantのプラグイン投入 コマンドプロンプトを開き、

    以下コマンドを実行  「vagrant up」実行時にGuest Additionsの更新チェック/ ビルドを行うようになる…が カーネルヘッダ他のライブラリをまとめて受信するため、 boxの生成サイズが非常に大きくなる(+800MB?)  不要になったら削除も考える vagrant plugin install vagrant-vbguest vagrant plugin uninstall vagrant-vbguest
  5. Vagrant:「ごった煮」boxの作成-1  HAの検証では「作って壊し」を頻繁に行うため、結果的に (CentOSでいうところの)yum/dnf を頻繁に実施する  なるべくネットワークアクセスを抑えるため、予め「ごった 煮」イメージを作って、これをもとに環境作成を検討する  「ごった煮」Vagrantfileの例

    (httpd/lvs/corosync用) Vagrant.configure("2") do |config| config.vm.box = "centos/7" config.vm.provision "shell", inline: <<-SHELL sudo yum update -y # ベースラインを更新 sudo yum install -y httpd # バックエンドサーバ用httpd sudo yum install -y ipvsadm keepalived # LVS/keepalived sudo yum install -y haproxy # LVS用 haproxy sudo yum install -y pacemaker pcs # pacemaker/corosync SHELL end
  6. Vagrant:「ごった煮」boxの作成-2  実際に「ごった煮」boxを作成してみる コマンドプロンプトより、c:¥vagrant配下に移動して実行  前頁ではhttpd/lvs/keepalived/corosync のサービスは いずれもdisabled になっているので、検証時は適宜有効化 vagrant

    init # Vagrantfile の作成 # 前頁の「ごった煮」Vagrantfile の内容をVagrantfileにコピペ… vagrant up # yum update他が実行される vagrant package --output gottani.box vagrant destroy -f # 仮想マシンはここで削除される vagrant box list vagrant box add oreno-gottani gottani.box vagrant box list systemctl is-enabled httpd # disabled であること systemctl start httpd # 停止>実行に変化する systemctl enable httpd # 無効>有効 に変化する systemctl is-enabled httpd # enabledであること
  7. Vagrant:ディスク追加-1  Vagrant ではvboxmanageを介してディスクを追加する ※予め vboxmanage に対してPathが切ってあること - vboxmanage list

    vms ノード名と UUIDのペアが表示される - vboxmanage showvminfo (UUID) | find “Stor” ここで”Storage Controller Name”に着目する →今回は「IDE」がストレージコントローラのようだ > vboxmanage list vms "node1_xxxx_xxxxx" {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} > vboxmanage showvminfo (上述のUUID) | find “Stor” Storage Controller Name (0): IDE Storage Controller Type (0): PIIX4 Storage Controller Instance Number (0): 0 Storage Controller Max Port Count (0): 2 Storage Controller Port Count (0): 2 Storage Controller Bootable (0): on
  8. Vagrant:ディスク追加-2  Vagrantfile の記述例 --storagectl について、適宜(今回はIDE)記述する これにより、box以外にもう一つ仮想ディスクが設定される Vagrant.configure("2") do |config|

    config.vm.box = “centos/7" config.vm.define "node1" do |machine| machine.vm.hostname = "node1" machine.vm.provider :virtualbox do |vb| file_to_disk = ".vagrant/machines/node1/sdb.vdi" if not File.exist?(file_to_disk) then vb.customize ["createhd", "--filename", file_to_disk, "--size", 100 * 1024] end vb.customize ['storageattach', :id, '--storagectl', 'IDE’, '--port', 1,'--device', 0, '--type', 'hdd’, '--medium', file_to_disk] end end
  9. Vagrant:ネットワーク管理 Vagrantの仮想マシンは以下のネットワークを取りうる  NAT(10.0.2.0/24) デフォルトで作られる  ホストオンリー(192.168.12.0/24 とか) private_network を指定する。

    マルチホームになるので、別途 ip route 等実施必要  ブリッジ( 表に 192.168.24.0/24 が向いている例) public_network を指定する。 machine.vm.network “private_network”, ip: “192.168.12.1“ , virtualbox_intnet: "backend" machine.vm.network “public_network”, ip: “192.168.24.101“ ,