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
94
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
280
20230121_NGK2023S_DM
gplains
0
400
202101_t1d_telework
gplains
0
420
202012_juiceshop
gplains
0
110
20201218_pktmon_netsh
gplains
0
550
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
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
45
2.3k
A better future with KSS
kneath
238
17k
Fireside Chat
paigeccino
34
3.1k
Optimizing for Happiness
mojombo
376
70k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
1.2k
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.5k
Fashionably flexible responsive web design (full day workshop)
malarkey
406
66k
No one is an island. Learnings from fostering a developers community.
thoeni
19
3.1k
Building Flexible Design Systems
yeseniaperezcruz
328
38k
The Pragmatic Product Professional
lauravandoore
32
6.4k
Making the Leap to Tech Lead
cromwellryan
133
9k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
33
2.7k
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側でルーティング の追加を検討する…