クライアントHyper-V上とvyOSでネットワーク検証する その5 OSPFで障害テスト
前回までに作ってみOSPF経由の接続でわざとvyOSを落として経路交換やらダウンタイムを見てみましょうかね。
- 測定用の簡易PowerShell
- クライアント側ゲートウェイ(プライマリがダウンした場合)
- クライアント側ゲートウェイ(プライマリが復旧した場合)
- DC側の対向ゲートウェイ(プライマリがダウンした場合)
- DC側の対抗ゲートウェイ(プライマリが復旧した場合)
測定用の簡易PowerShell
①ダウンタイム測定の簡易PowerShell
for($i = 0; $i -le 10000; $i++){ curl -Uri http://192.168.20.100 -TimeoutSec 1 $date = date $date.DateTime sleep 1 }
②経路確認の簡易PowerShell
for($i = 0 ; $i -le 10000 ; $i++){ tracert -d -w 2 192.168.20.100 }
クライアント側ゲートウェイ(プライマリがダウンした場合)
2018年8月16日 23:46:34頃にダウン
2018年8月16日 23:47:03頃に回復
ダウンタイムは約30秒ですね~。
経路も確認
DC側の対抗ゲートウェイ(プライマリが復旧した場合)
2018年8月17日 0:31:39に再度ダウン
2018年8月17日 0:31:43に復旧
5秒以内ですか!なるほど。
経路も確認
無事にネットワークの自動復旧は確認できたわけですが、
こんなネットワークを組むことはないかもしれませんが、
LAN側のプライマリゲートウェイの復旧時に発生するダウンタイムより
DC対向側のゲートウェイが復旧した際のダウンタイムのほうが短いという気づきがありました。
ちゃんと確認してませんが、vyOSの復旧起動後にVRRPのほうがOSPFより早く復旧し、ゲートウェイに昇格するが、OSPFのルーティング情報の復旧までは引き続きダウンするためかと思います。
と、するとOSPFのルート情報が切り替わる直前でVRRPも復旧するようにチューニングすればダウンタイムを減らせるかもしれません。
うーん奥が深い。
今度は少し構成に手を入れて、ECMPか、vyOSのアウトバウンドの回線負荷分散機能を利用し、待機系ネットワークの有効利用を検証したいです。
クライアントHyper-V × Windows Server コンテナーのIIS × OSPF経由で試してみる
- ホストVM(Windows Server2016 Server Core)にIPを設定
- NATモードでコンテナを起動(※Dockerイメージは取得済みの前提)
- ホストVMのWindows FireWallを無効化
※赤枠の中の話。
ホストVM(Windows Server2016 Server Core)にIPを設定
PowerShellで以下を実行
New-NetIPAddress -InterfaceAlias "Ethernet" -IPAddress "192.168.20.100" -PrefixLength "24" -DefaultGateway "192.168.20.250"
NATモードでコンテナを起動(※Dockerイメージは取得済みの前提)
docker run --name iis01 -p 80:80 -it microsoft/windowsservercore powershell |
コンテナ上でIISの役割をインストールします
Install-WindowsFeature Web-Server
クライアントHyper-V上とvyOSでネットワーク検証する その4 OSPFを設定
さてシンプルなOSPFとしてarea 0を設定していきます。
上記赤枠LAN1号機を一例:OSPFのアドレスを設定
set protocols ospf area 0 network 192.168.10.0/24 set protocols ospf area 0 network 10.0.1.0/24
インターフェースに適用
set interfaces ethernet eth0 ip ospf set interfaces ethernet eth1 ip ospf
各4つのvyOSに設定。
さて、これで最低限の回復性(VRRP + OSPF)は実装できたかなと思います。
設計としては内部-WAN1経由するネットワークをActive
内部-WAN2を経由するネットワークをPassiceとしてスタンバイできてるはずです。
クライアントHyper-V上とvyOSでネットワーク検証する その3 VRRPを設定
さて、vyosの仮想マシンができたので、実際にネットワークで遊んでいきます。
- インターフェースのIP設定
- VRRPの設定
1.インターフェースのIP設定
適当にIPアドレスとインターフェースの採番を決めます。
conf
2号機Eth1の一例だけ
set interfaces ethernet eth1 address 10.0.2.2/24
show interfaces
"+"がついているのはまだコミットされていない。
commit
※commit後に再確認
設定の保存もしておきましょう
save
残りのインターフェースも設定する。
VRRPの設定
LAN(CL)1号機に次の設定追加
set interfaces ethernet eth0 vrrp vrrp-group 10 priority 255 set interfaces ethernet eth0 vrrp vrrp-group 10 sync-group lan-sync set interfaces ethernet eth0 vrrp vrrp-group 10 virtual-address 192.168.10.250
LAN(CL)2号機に次の設定追加
set interfaces ethernet eth0 vrrp vrrp-group 10 priority 200 set interfaces ethernet eth0 vrrp vrrp-group 10 sync-group lan-sync set interfaces ethernet eth0 vrrp vrrp-group 10 virtual-address 192.168.10.250
Pingが1発落ちましたが通信は継続。
再起動完了後に宛先の到達エラーが1発
結構Hyper-V上だけでも遊べますね!
次はOSPFを設定してみたいです。
ServerCoreなWindows Server 2016をインストールした後にWindowsコンテナーを試してみた備忘録
ノートPC上で作る動的ネットワークのデータセンター側サービス例としてよいサービスはないかなぁ?と考えていたところ
Powershellは好きな割に、ServerCore、Windowsコンテナーを使う機会がなかったので使ってみました~!
とりあえず準備まで。
Windowsコンテナーの導入
では早速Dockerの機能を追加していきます。
Install-Module -Name DockerMsftProvider -Repository PSGallery -Force
Install-Package -Name docker -ProviderName DockerMsftProvider
Restart-Computer -force
試しにwindowsservercoreのイメージを取得
ダウンロードには時間がかかるので寝て待ちましょうかね!
クライアントHyper-V上とvyOSでネットワーク検証する その2
タイトルの通り前回ったvyOSのネットワークで動的ルーティングで遊んでみようと思います。
仮想ディスクへのインストール
何はともあれ、Hyper-V マネージャーより対象のvyOSが正常に起動していることを確認。
最初の操作としてはISOメディアからブートしている状態なのでID,Passともvyosでログインし、
仮想ハードディスクにインストールする必要があります。
コマンドは
install system
ISO DVDのマウント解除
パーティションやらパスワードの設定が聞かれますので進んでいき、インストールを4台にインストールが完了したら、ISOのDVDのマウントを外しておきます。
こういう手間なのはPoweShellで自動化しておくと便利!
VMの停止とISOのアンマウント
Get-VM | Where-Object {$_.Name -like "vy*" -and $_.Name -ne "vyOS_template"} | Stop-VM Get-VM | Where-Object {$_.Name -like "vy*" -and $_.Name -ne "vyOS_template"} Remove-VMDvdDrive "vyOS_LAN1" -ControllerNumber 1 -ControllerLocation 0 Remove-VMDvdDrive "vyOS_LAN2" -ControllerNumber 1 -ControllerLocation 0 Remove-VMDvdDrive "vyOS_DC3" -ControllerNumber 1 -ControllerLocation 0 Remove-VMDvdDrive "vyOS_DC4"-ControllerNumber 1 -ControllerLocation 0
VMの起動
Get-VM | Where-Object {$_.Name -like "vy*" -and $_.Name -ne "vyOS_template"} | Start-VM Get-VM | Where-Object {$_.Name -like "vy*" -and $_.Name -ne "vyOS_template"}
再度VMを起動後にインストール時に設定したパスワードでログイン出来たら成功!
show interfaces
ちゃんとインターフェースが2つ設定されています。
IPとSSHの設定
Hyper-Vマネージャーから操作するのも面倒なので
最低限のIPを割り振ってSSHを有効化したい。
で、ホストコンピューターからアクセスするためには
ホストコンピューター側から仮想スイッチにアクセスするためには、こちらも同セグメントでIPを設定しないと。こっちはPowerShellで簡単にできそう。
とりあえず、vyOS側を設定。
設定モードへ
conf
IPは一例ですが~。
set interfaces ethernet eth0 address 192.168.10.251/24 set interfaces ethernet eth1 address 10.0.1.1/24
設定出来たら
commit save
次はホスト側へのIP採番。
New-NetIPAddress -InterfaceAlias "vEthernet (内部-WAN-1)" -IPAddress "10.0.1.100" -PrefixLength "24" New-NetIPAddress -InterfaceAlias "vEthernet (内部-WAN-2)" -IPAddress "10.0.2.100" -PrefixLength "24" Get-NetAdapter | Where-Object {$_.Name -like "*vEthernet*"}
できたらホストPC側のcmdからPingが通るようになる。
SSHを有効化して、設定の有効化と保存。
set service ssh
できましたよ!
クライアントHyper-V上とvyOSでネットワーク検証する
最近、子どもの看病やら、自分の体調不良であまりITを触る時間がとれておらず、
流行りの働き方改革を考えないとなぁと思っています。
子育てに力を入れたい⇒ITもこれまで通り検証し続けたい=睡眠時間を削る⇒体調壊した。
うーん。。。やっぱり効率化が必要ですね。
ということで!
"いつでも"、"どこでも"、"短時間で"、ネットワーク系の検証・勉強が可能な環境を整える!
と、考えたところソコソコスペックの高いノートPC上でOSPFやBGPを完結して検証できると便利じゃね?
と思って以下をWindows10のクライアントHyper-Vを利用して短時間で構成できるようにしてみました。
※前提としてHyper-Vの機能を有効化しておく必要があります。
構成の概要
右側がクライアント、オンプレで左側がDCなどルーティング先のイメージ。
L3はvyOSを利用します。
が、ISOやらイメージファイルをセットすればなんでも使えるよ!
vyOSのコンフィグは自動化しません。
VRRPやOSPF、BGPの検証利用を想定した物理配線の相当まで。
可用性の構成をとったうえで
対象のvyOSのVMをダウンさせて遊ぶといいかなぁ。
なんて。
仮想スイッチの作成
まずは仮想スイッチを4つ作成しておきます。
New-VMSwitch "内部-LAN-CL" -SwitchType Internal New-VMSwitch "内部-WAN-1" -SwitchType Internal New-VMSwitch "内部-WAN-2" -SwitchType Internal New-VMSwitch "内部-LAN-DC" -SwitchType Internal
vyOS4台分に必要なものを作成してVMを起動する。
パパっとHyper-V用のPowershellの動作確認しながら作ったので・・・(^^)/
せめてISOイメージのpathくらい変数化しとけばよかったなぁとか思いつつ。まだ改善途上の現状提供っす。
1.VHDファイルを以下のpathに作成します。
C:\Users\Public\Documents\Hyper-V\Virtual hard disks\
2.vyOSは以下のpathのISOを利用しています
D:\OS\vyos-1.1.7-i586-virt.iso
New-VHD -Path "C:\Users\Public\Documents\Hyper-V\Virtual hard disks\vyOS_LAN1.vhdx" -SizeBytes 20GB New-VHD -Path "C:\Users\Public\Documents\Hyper-V\Virtual hard disks\vyOS_LAN2.vhdx" -SizeBytes 20GB New-VHD -Path "C:\Users\Public\Documents\Hyper-V\Virtual hard disks\vyOS_DC3.vhdx" -SizeBytes 20GB New-VHD -Path "C:\Users\Public\Documents\Hyper-V\Virtual hard disks\vyOS_DC4.vhdx" -SizeBytes 20GB New-VM -Name "vyOS_LAN1" -MemoryStartupBytes 256MB -VHDPath "C:\Users\Public\Documents\Hyper-V\Virtual hard disks\vyOS_LAN1.vhdx" -SwitchName "内部-LAN-CL" -Generation 1 -BootDevice CD Set-VMDvdDrive "vyOS_LAN1" -Path "D:\OS\vyos-1.1.7-i586-virt.iso" New-VM -Name "vyOS_LAN2" -MemoryStartupBytes 256MB -VHDPath "C:\Users\Public\Documents\Hyper-V\Virtual hard disks\vyOS_LAN2.vhdx" -SwitchName "内部-LAN-CL" -Generation 1 -BootDevice CD Set-VMDvdDrive "vyOS_LAN2" -Path "D:\OS\vyos-1.1.7-i586-virt.iso" New-VM -Name "vyOS_DC3" -MemoryStartupBytes 256MB -VHDPath "C:\Users\Public\Documents\Hyper-V\Virtual hard disks\vyOS_DC3.vhdx" -SwitchName "内部-LAN-DC" -Generation 1 -BootDevice CD Set-VMDvdDrive "vyOS_DC3" -Path "D:\OS\vyos-1.1.7-i586-virt.iso" New-VM -Name "vyOS_DC4" -MemoryStartupBytes 256MB -VHDPath "C:\Users\Public\Documents\Hyper-V\Virtual hard disks\vyOS_DC4.vhdx" -SwitchName "内部-LAN-DC" -Generation 1 -BootDevice CD Set-VMDvdDrive "vyOS_DC4" -Path "D:\OS\vyos-1.1.7-i586-virt.iso" Add-VMNetworkAdapter "vyOS_LAN1" -Name "アダプターWAN-1" Connect-VMNetworkAdapter "vyOS_LAN1" -Name "アダプターWAN-1" -SwitchName "内部-WAN-1" Rename-VMNetworkAdapter "vyOS_LAN1" -Name "ネットワーク アダプター" -NewName "アダプターLAN-CL" Add-VMNetworkAdapter "vyOS_LAN2" -Name "アダプターWAN-2" Connect-VMNetworkAdapter "vyOS_LAN2" -Name "アダプターWAN-2" -SwitchName "内部-WAN-2" Rename-VMNetworkAdapter "vyOS_LAN2" -Name "ネットワーク アダプター" -NewName "アダプターLAN-CL" Add-VMNetworkAdapter "vyOS_DC3" -Name "アダプターWAN-1" Connect-VMNetworkAdapter "vyOS_DC3" -Name "アダプターWAN-1" -SwitchName "内部-WAN-1" Rename-VMNetworkAdapter "vyOS_DC3" -Name "ネットワーク アダプター" -NewName "アダプターLAN-DC" Add-VMNetworkAdapter "vyOS_DC4" -Name "アダプターWAN-2" Connect-VMNetworkAdapter "vyOS_DC4" -Name "アダプターWAN-2" -SwitchName "内部-WAN-2" Rename-VMNetworkAdapter "vyOS_DC4" -Name "ネットワーク アダプター" -NewName "アダプターLAN-DC" Get-VM | Where-Object {$_.Name -like "vyOS*"} | Start-VM Get-VM
ネットワーク検証環境がノートPCで完結するのはいいですね~。
どういうパターンを用意しておくと便利かは奥が深いですが、
他にも何パターンか用意しておいて後で少しだけ必要な構成を追加するのがよさそうですね~。
検証がはかどりそうです!
次回は実際の検証について書いていきたい。