これから数回に別けて、Open Stack(pike)のインストールから、Neutron, OvS, DVR, Trunk(VLAN aware VMs)周りの構築方法について記載したいと思います。*1
環境は、Windows10のVMWare上にController×1台、Compute×2台を構築し、その中でNeutronを稼働させる構成となります。
このため、Compute Node上で稼働させるVMインスタンスはネストされてる点に注意してください。
構成情報は可能な限りオブラートに包まないようにしたいと思います。*2
1.構成
1-1.環境
HostOS : Windows10pro Ver:1809 Build:17763.503 NIC : Intel I350 Driver : Intel PROSet 23.5.2 VMWare : VMware(R) Workstation 15 Pro 15.1.0 build-13591040 GuestOS : Ubuntu16.04 Kernel : 4.13.0-041300
上記GuestOS上にController&Compute Nodeを稼働させます。
1-3.構成概要2
論理的な要素を追記します。
ens33 | 10.10.0.0/24 | ssh&Internet接続出来るようにしておいてください。 |
ens34 | 10.20.0.0/24 | Node間通信用のため、L3SW側にVlan Intは無くても構いません。 |
ens35 | IP不要 | br用なので現段階ではLinkUpだけさせればOKです。 |
2.事前準備その1
Open Stack周りの各コンポーネント をインストールしていく前にやっておくべきことを記載していきます。
2-1.Intel Driver
I350#1 | Physical1 | 過去記事などを参考にVLAN Interfaceの設定を行ってください。*6 |
I350#2 | Physical2 | 過去記事などを参考にTrunkできるようにしておいてください。 |
2-2.仮想ネットワークエディタ
VMnet15 | I350#1_VLAN10 | Intel DriverにてVLAN10をタグ付けしてL3SWと送受信。 |
VMnet16 | I350#1_VLAN20 | Intel DriverにてVLAN20をタグ付けしてL3SWと送受信。 |
VMnet9 | I350#2 | Intel Driverでは何もせずにL3SWと送受信。*7 |
2-4.仮想マシンの設定2
ネストしますので、赤枠にチェックを入れておいてください。
2-5.仮想マシンの設定3
ens33 | ネットワークアダプタ | カスタム(VMnet15) |
ens34 | ネットワークアダプタ2 | カスタム(VMnet16) |
ens35 | ネットワークアダプタ3 | カスタム(VMnet9) |
ネットワークアダプタは上記のように設定してください。*9
2-6.L3SWの設定
vlan 10,20,30,300 ! interface GigabitEthernet0/1 switchport trunk encapsulation dot1q switchport trunk allowed vlan 10,20 switchport mode trunk ! interface GigabitEthernet0/2 switchport trunk encapsulation dot1q switchport trunk allowed vlan 30,300 switchport mode trunk ! interface vlan 10 ip address 10.10.0.254/24 ! interface vlan 20 ip address 10.20.0.254/24 ! interface vlan 30 ip address 10.30.0.1/24 ! interface vlan 300 ip address 192.168.30.254/24
上記に加えて、Internetに出られるようDefaultRouteなどを設定しておいてください。
ここまで完了すると、1-2.構成概要1になると思います。
3.事前準備その2
仮想マシンの諸々の設定を実施します。
*10
重複設定もあるためクローンを作成するなど工夫してください。
対象:全Node*11
3-1.rootログイン
sudo su - sudo passwd root sudo sed -e 's/^PermitRootLogin prohibit-password/PermitRootLogin yes/g' \ -i /etc/ssh/sshd_config sudo systemctl restart sshd
3-2.ホスト名とHostsファイル
#ホスト名設定 #各Nodeごとに変更 hostnamectl set-hostname controller01 #Hostsファイル設定 #127.0.1.1のみ、各Nodeごとに変更 vi /etc/hosts 127.0.0.1 localhost 127.0.1.1 controller01.local.jp controller01 10.10.0.100 controller01.local.jp controller01 10.10.0.101 compute01.local.jp compute01 10.10.0.102 compute02.local.jp compute02
3-3.インターフェース設定
#以下はController01の設定例 #Compute01&02では第4octetを修正 vi /etc/network/interfaces auto ens33 iface ens33 inet static address 10.10.0.100 netmask 255.255.255.0 gateway 10.10.0.254 dns-nameserver 8.8.8.8 auto ens34 iface ens34 inet static address 10.20.0.100 netmask 255.255.255.0 auto ens35 iface ens35 inet manual systemctl restart networking
3-4.NTP
apt -y install chrony vi /etc/chrony/chrony.conf #pool 2.debian.pool.ntp.org offline iburst server ntp1.jst.mfeed.ad.jp offline iburst server ntp2.jst.mfeed.ad.jp offline iburst server ntp3.jst.mfeed.ad.jp offline iburst systemctl restart chrony systemctl enable chrony chronyc sources
3-5.apt updateなど
apt update apt -y install software-properties-common add-apt-repository cloud-archive:pike apt update apt dist-upgrade
3-5.Kernel更新
mkdir /root/tmp cd tmp wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v4.13/linux-headers-4.13.0-041300_4.13.0-041300.201709031731_all.deb && \ wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v4.13/linux-headers-4.13.0-041300-generic_4.13.0-041300.201709031731_amd64.deb && \ wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v4.13/linux-image-4.13.0-041300-generic_4.13.0-041300.201709031731_amd64.deb dpkg -i *.deb reboot
ここまで完了すると、1-3.構成概要2になると思います。
各NodeからGWアドレスへの疎通確認やNode同士による相互疎通確認など実施してください。*12
以上です。
4.最後に
下回りがうまく作れずに外部NWへトラフィックが流せないと色々残念なので少し掘り下げてみました。
これをベースに、あとはNeutron側の設定だけで、L2のまま外部へ流したり、L3でRoutingすることが可能になります。
*1:Open StackやNeutronのインストール方法をご存じの方は構成だけザックリ眺めてもらう程度で構いません
*2:この先は物理NWです、的な説明にはならないように心がけます。
*3:ControllerやCompute Nodeが物理サーバであれば、9個の物理ポートでL3SWに直結されます。
*4:厳密にはOpen vSwitchです
*5:Routingに加えて、TrunkによるBridgeにもフォーカスしたいと思います。
*6:VLAN30は不要です
*7:Linuxであれば簡単にできるのですが、Windowsの場合は過去記事のような方法が必要でした。
*8:メモリが厳しい場合、Controller=4GB, Compute=2GBでもいけるかもしれません。
*9:私の環境では、ネットワークアダプタ1~3がそれぞれens33~35に紐づいていましたが、Ubuntu16.04以外で稼働させる場合は、適宜その環境に合わせて読み替えてください。
*10:ネットワーク周りやHostsファイル、NTP、apt-update、Kernel更新などですが、そこまで重要ではないため、サラッと流します。
*11:対象ホストは必要に応じて記載します。
*12:名前解決可否も忘れずに。