Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
20201117_vagrant
Search
ONO,Tetsuo
November 17, 2020
0
91
20201117_vagrant
VirtualBox+VagrantでのHA検証環境構築に際して、ネットワーク/追加ディスク問題についてまとめたメモ。
ONO,Tetsuo
November 17, 2020
Tweet
Share
More Decks by ONO,Tetsuo
See All by ONO,Tetsuo
20240127_NGK2024S_DM
gplains
0
250
20230121_NGK2023S_DM
gplains
0
380
202101_t1d_telework
gplains
0
410
202012_juiceshop
gplains
0
100
20201218_pktmon_netsh
gplains
0
460
20201130_keepalived
gplains
0
120
20201123_prep_exam_1
gplains
0
110
202011_rsyslog
gplains
0
41
20200505_networkmanager
gplains
0
140
Featured
See All Featured
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Building a Scalable Design System with Sketch
lauravandoore
459
33k
RailsConf 2023
tenderlove
29
890
Optimizing for Happiness
mojombo
376
69k
A Tale of Four Properties
chriscoyier
156
23k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
109
49k
Code Reviewing Like a Champion
maltzj
520
39k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.1k
Docker and Python
trallard
40
3.1k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
Designing the Hi-DPI Web
ddemaree
280
34k
Practical Orchestrator
shlominoach
186
10k
Transcript
VirtualBox+Vagrant による検証環境の作成 大野 哲生(@g_plains)
目次 はじめに VirtualBox+Vagrant 初期構成 ◦ ダウンロード/インストール ◦ 環境変数の設定
◦ 仮想マシンを実際に作って壊す 作業を簡便にするために ◦ 「ごった煮」boxの作成 ◦ ディスクの追加 ◦ ネットワークの管理 ふりかえり
はじめに:検証でVirtualBoxを使う理由 VMware ESXi の場合:Ansible/Vagrantに支障 - Ansible:2.9以降でPymomiのみ利用可能 →ESXi単体での利用には対応不能 - Vagrant:VMware用プラグインは有償
KVM の場合:別途Linuxサーバが必要 ちょっと(物理的に)敷居が高い…? Hyper-Vの場合:Windows10Proが必要 ※Windows2016ベースの無償Hyper-Vもあるが こちらは別途ハードウェアが必要
相手に用意してもらう環境 物理マシン(以下の機能を具備すること) 2C4T以上、メモリ8GB以上 HDD空き40GB ※VM個数+1C=3VMの場合、4C8Tが望ましい 100Mbps以上のブロードバンド環境 1-2GBのダウンロードが発生するため
VirtualBox+Vagrant 初期構築 ダウンロード/インストール 環境変数の設定 仮想マシンを実際に作って壊す
準備(ダウンロード/インストール) VirtualBoxのダウンロード https://www.virtualbox.org/wiki/Downloads Vagrantのダウンロード https://www.vagrantup.com/downloads.html 適宜インストールを行う
VirtualBox:環境変数の設定 VBoxManageを頻繁に使うため、予め環境変数を設定する 「スタート」>sysdm.cpl で「システムのプロパティ」開く 「詳細設定」タブ>「環境変数」をクリック 「ユーザ環境変数」>「Path」をダブルクリック
%VBOX_MSI_INSTALL_PATH% を追加 「システムのプロパティ」を閉じた後で、コマンドプロンプ トを開く VBoxManage を実行して応答があることを確認する
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を破棄
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
作業を簡便にするために boxの選定 「ごった煮」boxの作成 ディスクの追加 ネットワークの管理
Vagrant:boxの選定 box自体はいっぱいある を実行すると、CentOS7のboxイメージが受信できる等 利用可能なbox https://app.vagrantup.com/boxes/search?provider=virtualbox から、任意のフレーバーを検索してみる vagrant init
centos/7 vagrant up
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
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であること
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
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
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“ ,
ふりかえり box 頻繁にアップデートの走るboxは、台数分デプロイする前に、 仮デプロイ>必要なアップデート>特定用途box化しておく ディスク IDEかSATAかは一回デプロイしてから判断してみる ネットワーク
標準で張られるNATネットワークの扱いが難しいので ブリッジネットワークを張ったあとでOS側でルーティング の追加を検討する…