Metonymical Deflection

ゆるく日々のコト・たまにITインフラ

Open Stack Neutron環境構築 その1:足回りの事前準備

これから数回に別けて、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-2.構成概要1

f:id:metonymical:20190527140044p:plain
物理的な構成概要です。*3

ens33 管理用
ens34 Compute Node間通信用
ens35 インスタンス通信用
1-3.構成概要2

f:id:metonymical:20190527140525p:plain
論理的な要素を追記します。

ens33 10.10.0.0/24 ssh&Internet接続出来るようにしておいてください。
ens34 10.20.0.0/24 Node間通信用のため、L3SW側にVlan Intは無くても構いません。
ens35 IP不要 br用なので現段階ではLinkUpだけさせればOKです。
1-4.構成概要3

f:id:metonymical:20190527141522p:plain
Compute02のens35にフォーカスしたNeutron導入後のイメージです。
ens35は図のようなイメージでNeutron*4のbr用に使用するためIP不要となります。
ここがメインの内容となるため詳細は次々回以降くらいに別途記載します。*5

2.事前準備その1

Open Stack周りの各コンポーネント をインストールしていく前にやっておくべきことを記載していきます。

2-1.Intel Driver

f:id:metonymical:20190527143633p:plain

I350#1 Physical1 過去記事などを参考にVLAN Interfaceの設定を行ってください。*6
I350#2 Physical2 過去記事などを参考にTrunkできるようにしておいてください。

HostOSをLinuxにしたい場合は、過去記事などを参考にして頂ければと思います。

2-2.仮想ネットワークエディタ

f:id:metonymical:20190527144640p:plain

VMnet15 I350#1_VLAN10 Intel DriverにてVLAN10をタグ付けしてL3SWと送受信。
VMnet16 I350#1_VLAN20 Intel DriverにてVLAN20をタグ付けしてL3SWと送受信。
VMnet9 I350#2 Intel Driverでは何もせずにL3SWと送受信。*7
2-3.仮想マシンの設定1

f:id:metonymical:20190527145807p:plain
Controller×1台、Compute×2台の3台とも同様の設定にします。*8

2-4.仮想マシンの設定2

f:id:metonymical:20190527150139p:plain
ネストしますので、赤枠にチェックを入れておいてください。

2-5.仮想マシンの設定3

f:id:metonymical:20190527150253p:plain

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:名前解決可否も忘れずに。