ちょうど2年前に上記の記事を書いたのですが、同じことをRed Hatの製品版ディストリビューションRHEL-OSP7(Kilo)でやれるようにquickrdoを拡張しました。
Fedoraなどで、Nested KVMが利用できるLinux KVM環境を用意して、その上の3台の仮想マシンで下記のクラスタを構成します。各ノード共通に「eth0」がAPI/管理アクセス用で、「eth1」がVXLAN接続用になっています。コントローラーノードの「eth2」は、テナントネットワークから外部ネットワークに接続するNICになります。Packstackの制限で、VXLAN接続用NICは全ノードで同じ名前のNICデバイスを使用する必要があります。
[Internet] | | [物理NIC] |(NAT) | external01 192.168.200.0/24 ------------------------------------------ | | | | |eth0 |eth2 |eth0 |eth0 -------------- ----------- ----------- | osp7-00 | | osp7-01 | | osp7-02 | | Controller | | Compute | | Compute | -------------- ----------- ----------- |eth1 |eth1 |eth1 | | | ------------------------------------------ internal01 192.168.250.0/24
製品サポート外の構成ですので、デモ、素振り用などに限定してお使いください。
事前準備
IPアドレスとその他のネットワーク構成情報は、次のとおりです。
項目 | 値 |
---|---|
サブネット | 192.168.200.0/24 |
ゲートウェイ | 192.168.200.1 |
DNSサーバ | 192.168.200.1 |
IPアドレスプール | 192.168.200.100〜192.168.200.199 |
仮想マシン | IPアドレス |
---|---|
osp7-00 | eht0:192.168.200.90, eth1:192.168.250.90 |
osp7-01 | eth0:192.168.200.91, eth1:192.168.250.91 |
osp7-02 | eth0:192.168.200.92, eth1:192.168.250.92 |
Nested KVMを有効化した物理ホストに、上記の仮想ネットワーク「external01」と「internal01」を作成した上で、RHEL7を最小構成でインストールした仮想マシン「osp7-00」〜「osp7-02」を用意します。それぞれの仮想マシンには、上記の図にあわせた仮想NICを用意してください。また、ops7-00には、CinderのLVMバックエンドとして使う仮想ディスク「/dev/vdb」を追加で接続しておきます。それぞれのRHEL7は、subscription-managerでRHEL-OSPに必要なサブスクリプションを登録しておいてください。(必要なチャネルの有効化はインストールスクリプトで自動的に行ないます。)
また、Neutronとの相性が悪いので、NetworkManagerは停止しておきます。
# systemctl mask NetworkManager.service
それぞれのNICの設定ファイルを下記の内容で作成して、仮想マシンを再起動すると、network.serviceでネットワークが有効化されます。(下記はコントローラーノードの例です。コンピュートノードはこれを参考に同様に作成してください。)
ifcfg-eth0
TYPE=Ethernet BOOTPROTO=static DEVICE=eth0 ONBOOT=yes IPADDR=192.168.200.90 NETMASK=255.255.255.0 GATEWAY=192.168.200.1 DNS1=192.168.200.1 NM_MANAGED=no
ifcfg-eth1
TYPE=Ethernet BOOTPROTO=static DEVICE=eth1 ONBOOT=yes IPADDR=192.168.250.90 NETMASK=255.255.255.0 NM_MANAGED=no
ifcfg-eth2
TYPE=Ethernet BOOTPROTO=none IPV6INIT=no DEVICE=eth2 ONBOOT=yes NM_MANAGED=no
また、/etc/hostsに下記のエントリーを記載しておきます。
192.168.200.90 osp7-00 192.168.200.91 osp7-01 192.168.200.91 osp7-02
コントローラーノードの構成
Cinderのバックエンドとして使うVG「cinder-volumes」を作成します。lvm2のパッケージを追加して、一度、再起動します。
# yum -y install lvm2 # reboot
/dev/vdbを未使用の仮想ディスクとして、これをPVとして、VGを作成します。
# pvcreate /dev/vdb # vgcreate cinder-volumes /dev/vdb
quickrdoでRHEL-OSP7をインストールします。
# yum -y install git # git clone https://github.com/enakai00/quickrdo.git # cd quickrdo # git checkout osp7-mn # ./setup.sh External NIC: eth2 <=== 外部接続用NIC Private NIC: eth1 <=== トンネル用NIC
完了したら、一度、再起動しておきます。
# reboot
コンピュートノードを追加する前に、ここで先にテナント、仮想ネットワークなどを構成しておきます。config.shを開いて、冒頭のネットワーク設定を必要に応じて編集します。
# cd ~/quickrdo # vi config.sh
下記は、テナント用仮想ネットワークを「192.168.101.0/24」と「192.168.102.0/24」で2個作る指定になっています。
#### public="192.168.200.0/24" gateway="192.168.200.1" nameserver="8.8.8.8" pool=("192.168.200.100" "192.168.200.199") private=("192.168.101.0/24" "192.168.102.0/24") ####
構成スクリプトを実行します。
# ./config.sh
コンピュートノードの構成
コントローラーノードからネットワーク経由で構成します。コンピュートノードの外部接続用IPアドレスを指定して実行します。
# cd ~/quickrdo # ./add_compute.sh 192.168.200.91 ... Are you sure you want to continue connecting (yes/no)? <=== yes [enter] ... root@192.168.200.91's password: <=== コンピュートノードのroot pw
もうひとつのコンピュートノードも同様に構成します。
# cd ~/quickrdo # ./add_compute.sh 192.168.200.92 ... Are you sure you want to continue connecting (yes/no)? <=== yes [enter] ... root@192.168.200.92's password: <=== コンピュートノードのroot pw
ここで最後に、コントローラーノードを再起動すれば完了です。
# reboot
構成されるテナント環境は、下記と同じものになります。