OpenStack liberty をKVMにInstallしてみた
OpenStack liberty がリリースされましたね。*1
折しも今週はOpenStack Summitが東京で開かれていました。
かいしゃぐらし!のためSummitに行けませんでしたが、参加した気分を味わうためにlibertyをインストールしてみました。
ざっくりですが、そのときのおもいでをまとめてみました。
・用意したもの
ホストOS CentOS7.1 メモリ16GB*2
ゲストOS × 2 ( Disk50GB メモリ4GB )
ゲストOS用のisoファイル (CentOS-7.0-1406-x86_64-DVD.iso)
第1話 はじまり
今回はCentOS7.1のKVM上ににゲストOSを2つ作り、Controllerノード、Computeノードとしてインストールしました。
予めゲストOSをインストールする前ににホストOS側でKVMの有効化、KVMのネストを有効にします。
virt-manager で CentOS-7.0-1406-x86_64-DVD.iso のファイルからゲストOSをインストールします。インストールが完了後、yum update を行いパッケージのupdateを実行します。update完了後、ゲストOSをいったん終了し virt-manager で複製します。
第2話 せってい
ゲストOS には、Public用とPrivate用の2つのNICを割り当てます。
Public用にはKVMを入れた時に作成される、NAT接続の default を使用します。
Private用には、以下のパラメータでNWを作成しました。
[root@xxxx ~]# cat network01.xml
<network>
<name>network01</name>
<bridge name='virbr1'/>
<ip address='192.168.10.1' netmask='255.255.255.0'>
</ip>
</network>
virsh net-define → virsh net-start で作成した仮想NWを起動します。
仮想NWを起動したら、virt-managerでゲストOSにNICを追加します。
NICを追加したら、ゲストOSを起動して固定IPを設定します。
今回は以下のようにIPを設定しました。
・Controller
eth0 192.168.122.20 (Public)
eth1 192.168.10.20 (Private)
・Compute
eth0 192.168.122.21 (Public)
eth1 192.168.10.21 (Private)
※実際はNIC名がensになりましたが、わかりやすいようにethで記載しています。
PackStackを入れる前に以下の設定をしておきます。
・ホスト名の変更
Controller→Controller 、Compute→Compute とホスト名を変えておきます。
・/etc/hostsファイル
/etc/hostsファイルにホスト名とIPアドレスを書き込みます。
[root@Controller ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.122.20 Controller Controller.localdomain
192.168.122.21 Compute compute.localdomain
・firewallとNetworkManagerを停止します。
[root@Controller ~]# systemctl stop NetworkManager
[root@Controller ~]# systemctl disable NetworkManager
rm '/etc/systemd/system/multi-user.target.wants/NetworkManager.service'
rm '/etc/systemd/system/dbus-org.freedesktop.NetworkManager.service'
rm '/etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service'
[root@Controller ~]# systemctl stop firewalld
[root@Controller ~]# systemctl enable firewalld
[root@Controller ~]#
・libertyのレポジトリを設定します。
/etc/yum.repos.d/CentOS-Base.repoファイルの末尾に以下を追記して、yum clean
all →yum repolist でパッケージが表示されればOKです。
[Liberty]
priority=1
name=OpenStack Liberty
baseurl=http://buildlogs.centos.org/centos/7/cloud/openstack-liberty/
enabled=1
gpgcheck=0
ここまでで準備は整いました。
第3話 こうちく
・packstackをインストールします。
[root@Controller ~]# yum install -y openstack-packstack
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: www.ftp.ne.jp
* extras: www.ftp.ne.jp
* updates: www.ftp.ne.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ openstack-packstack.noarch 0:2015.2-0.1.dev1654.gcbbf46e.el7 を インストール
省略
依存性を更新しました:
python-six.noarch 0:1.9.0-1.el7
完了しました!
[root@Controller ~]#
・answerファイルを作成します。
[root@Controller ~]# packstack --gen-answer-file=answer.txt
・answerファイルをviで開き編集します。
CONFIG_COMPUTE_HOSTS=192.168.122.21 ← ComputeのIPに変えます
CONFIG_KEYSTONE_ADMIN_PW=password ← passwordに変えます
CONFIG_NEUTRON_OVS_TUNNEL_IF=eth1 ← private用のNICを指定します
CONFIG_PROVISION_DEMO=n ← DEMOは作成しないためnにします
・PackStackを実行しOpenStackをインストールします。
[root@Controller ~]# packstack --answer-file=answer1.txt
Welcome to the Packstack setup utility
省略
Finalizing [ DONE ]
**** Installation completed successfully ******
インストール成功できました。
PublicとPrivateで通信ができるように、ブリッジを作成します。
・Public用(br-ex)のブリッジを作成します。
ifcfg-eth0ファイルを書き換えて、ifcfg-br-exファイルを新規作成して設定を書き込みます。
[root@Controller network-scripts]# cat ifcfg-eth0
HWADDR=52:54:00:C4:5B:54
TYPE=OVSPort
DEVICETYPE=ovs
OVS_BRIDGE=br-ex
NM_CONTROLLED=no
BOOTPROTO=none
ONBOOT=yes
DEVICE=eth0
[root@Controller network-scripts]# cat ifcfg-br-ex
DEVICE=br-ex
DEVICETYPE=ovs
TYPE=OVSBridge
BOOTPROTO=none
IPADDR=192.168.122.20
PREFIX=24
GATEWAY=192.168.122.1
ONBOOT=yes
・Private用(br-int)のブリッジを作成します。
ifcfg-eth1ファイルを書き換えて、ifcfg-br-intファイルを新規作成して設定を書き込みます。
[root@Controller network-scripts]# cat ifcfg-ens9
HWADDR=52:54:00:b1:16:a0
TYPE=OVSPort
DEVICETYPE=ovs
OVS_BRIDGE=br-int
NM_CONTROLLED=no
BOOTPROTO=none
ONBOOT=yes
DEVICE=ens9
[root@Controller network-scripts]# cat ifcfg-br-int
DEVICE=br-int
DEVICETYPE=ovs
TYPE=OVSBridge
BOOTPROTO=none
IPADDR=192.168.10.20
PREFIX=24
GATEWAY=192.168.10.1
ONBOOT=yes
ブリッジの設定を編集が完了したら、NWを再起動します。
Computeノードではbr-intのブリッジの設定をします。(※br-exは不要です)
第4話 かくにん
インスタンスを起動して、ssh接続をするためにdashboardから設定を行います。
dashboardにアクセスしてanswerファイルで設定したパスワードでログインします。
ネットワークを選択して、Public用とPrivate用のNWをVXLANで作成します。
作成したNWにはそれぞれサブネットを作成し、範囲内で使用するIPアドレスを確保します。
・Public → 192.168.122.0/24
・Private → 192.168.10.0/24
PublicとPrivateのNWを作成後、仮想ルータを作成しPublicとPrivateを接続します。
libertyでNWトポロジーのGUIが変わったようですね。。。
セキュリティグループの設定でICMPとSSH接続を許可し、キーペアの作成とFloating IPの確保を行います。
CirrOSをglanceに登録したら、インスタンスを起動します。
インスタンスが起動しました。
それでは ip netns コマンドでインスタンスのIPにPING飛ぶかなーと確認した結果
→ 飛びませんでした。。。
Oct 22 00:36:49 Controller dnsmasq-dhcp[4344]: DHCPOFFER(tapd1f23b51-89) 192.168.10.52 fa:16:3e:d2:87:d0
Oct 22 00:36:49 Controller dnsmasq-dhcp[4344]: DHCPDISCOVER(tapd1f23b51-89) fa:16:3e:d2:87:d0
Oct 22 00:36:49 Controller dnsmasq-dhcp[4344]: DHCPOFFER(tapd1f23b51-89) 192.168.10.52 fa:16:3e:d2:87:d0
Oct 22 00:36:49 Controller dnsmasq-dhcp[4344]: DHCPDISCOVER(tapd1f23b51-89) fa:16:3e:d2:87:d0
Oct 22 00:36:49 Controller dnsmasq-dhcp[4344]: DHCPOFFER(tapd1f23b51-89) 192.168.10.52 fa:16:3e:d2:87:d0
Oct 22 00:36:49 Controller dnsmasq-dhcp[4344]: DHCPDISCOVER(tapd1f23b51-89) fa:16:3e:d2:87:d0
Oh....
/var/log/messages 見るとインスタンスにDHCPでPrivateのIPが設定されていない模様。。。
ねえどうしてー教えてよーめぐねえー(なにもない空間に向かって)