【OPENSTACK】構築してみた
遊び用の環境につき、各種不届きな点はあるかと思いますが
とりあえず、インスタンスの生成とssh接続ができれば万歳な企画である。。
ようやく出来たので、取り急ぎ忘れぬようやったことを記録に残さなきゃ(汗)な状況~
環境説明
自宅学習用環境なので、ありがち? ですが、CentOS7上に構築しました。
そして、CentOS7も仮想(VMWare Workstation)上での構築となっております。
かなりネストしてしまいますが、潤沢な余裕がありませんので(頭脳も)。。
やったこと
VM環境作成
OpenStack導入にあたり、いくつか前提事項があり、これを満たすようセッティングしたつもりである。
・ベースOS
>CentOS、RHEL、Fedora21などが可能とのこと。
当方は、CentOS7とした。 64bit版が必須な模様。
・スペック
1ノードOpenStack環境をRDO Packstackを使って構築するには、以下が必要※
>CPUコア:3つ必要
>RAM:4GB
>HD:30GB以上
OSインストールと最新化
・使用iso
現在の最新を使用しただけである。古いものでは、構築時にBUGを踏む模様。
>CentOS-7-x86_64-DVD-1810.iso
・言語について
RDOによると、USが推奨となる。
だが、当方は日本語にした。
・最新化
OSインストール後作業
インターネット接続確認
ネット使うので繋がることを確認ください。
OS設定
自宅につき、以下バシバシ無効化~
・ファイアーウォール
systemctl disable firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)
[root@localhost ~]#
cp -p /etc/selinux/config /etc/selinux/config.yyyymmdd
ls -l /etc/selinux/config*
vi /etc/selinux/config
⇒SELINUX=disabled と編集する。
diff /etc/selinux/config /etc/selinux/config.yyyymmdd
☆ここで一旦再起動☆
再起動完了後、事後確認する。
getenforce
NIC定義変更
nmtuiにて変更を施す。
ホスト名の変更
nmtuiを使っているため、そのままついでに。
hosts登録
自己登録します。
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.4 openstack
[root@localhost ~]#
言語設定
RDOとしては、前述にあわせUS化手順が存在している。
当方は行わなかった。
☆ここで一旦再起動☆
再起動完了後、事後確認する。
ip a
openstack
[root@openstack ~]#
[root@openstack ~]# ip a
1: lo:
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
~中略~
3: ens37:
link/ether 00:0c:29:d8:cd:04 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.4/24 brd 192.168.1.255 scope global noprefixroute dynamic ens37
valid_lft 14323sec preferred_lft 14323sec
inet6 2001:c90:8843:242d:b731:b2c2:2315:ba6/64 scope global noprefixroute dynamic
valid_lft 2591925sec preferred_lft 604725sec
inet6 fe80::3fc5:69d6:bfed:d098/64 scope link noprefixroute
valid_lft forever preferred_lft forever
4: virbr0:
link/ether 52:54:00:5d:fd:d2 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
5: virbr0-nic:
link/ether 52:54:00:5d:fd:d2 brd ff:ff:ff:ff:ff:ff
[root@openstack ~]#
NetworkManagerサービスの停止、networkサービスの有効化
なんかよく分からんが、RDOはじめ皆やってるから、やる。
勉強しとくです。。
systemctl status network
systemctl stop NetworkManager
systemctl disable NetworkManager
systemctl enable network
systemctl start network
● NetworkManager.service - Network Manager
Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)
Active: active (running) since 日 2019-01-27 12:08:47 JST; 3min 55s ago
Docs: man:NetworkManager(8)
Main PID: 8967 (NetworkManager)
Tasks: 4
CGroup: /system.slice/NetworkManager.service
tq8967 /usr/sbin/NetworkManager --no-daemon
mq9126 /sbin/dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-ens37.pid -lf /var/lib/NetworkManager/dhcl...
1月 27 12:08:53 openstack NetworkManager[8967]:
1月 27 12:08:53 openstack NetworkManager[8967]:
1月 27 12:08:53 openstack NetworkManager[8967]:
1月 27 12:08:53 openstack NetworkManager[8967]:
1月 27 12:08:53 openstack NetworkManager[8967]:
1月 27 12:08:53 openstack NetworkManager[8967]:
1月 27 12:08:53 openstack NetworkManager[8967]:
1月 27 12:08:53 openstack NetworkManager[8967]:
1月 27 12:08:53 openstack NetworkManager[8967]:
1月 27 12:08:53 openstack NetworkManager[8967]:
Hint: Some lines were ellipsized, use -l to show in full.
[root@openstack ~]#
[root@openstack ~]# systemctl status network
● network.service - LSB: Bring up/down networking
Loaded: loaded (/etc/rc.d/init.d/network; bad; vendor preset: disabled)
Active: active (exited) since 日 2019-01-27 12:08:50 JST; 4min 17s ago
Docs: man:systemd-sysv-generator(8)
Process: 9219 ExecStart=/etc/rc.d/init.d/network start (code=exited, status=0/SUCCESS)
Tasks: 0
1月 27 12:08:50 openstack systemd[1]: Starting LSB: Bring up/down networking...
1月 27 12:08:50 openstack network[9219]: ループバックインターフェイスを呼び込み中 [ OK ]
1月 27 12:08:50 openstack network[9219]: インターフェース ens33 を活性化中: [ OK ]
1月 27 12:08:50 openstack systemd[1]: Started LSB: Bring up/down networking.
[root@openstack ~]#
[root@openstack ~]#
[root@openstack ~]# systemctl stop NetworkManager
[root@openstack ~]# systemctl disable NetworkManager
Removed symlink /etc/systemd/system/multi-user.target.wants/NetworkManager.service.
Removed symlink /etc/systemd/system/dbus-org.freedesktop.NetworkManager.service.
Removed symlink /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service.
Removed symlink /etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service.
[root@openstack ~]#
[root@openstack ~]# systemctl status NetworkManager
● NetworkManager.service - Network Manager
Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; disabled; vendor preset: enabled)
Active: inactive (dead) since 日 2019-01-27 12:14:01 JST; 17s ago
Docs: man:NetworkManager(8)
Main PID: 8967 (code=exited, status=0/SUCCESS)
CGroup: /system.slice/NetworkManager.service
mq9126 /sbin/dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-ens37.pid -lf /var/lib/NetworkManager/dhcl...
1月 27 12:08:53 openstack NetworkManager[8967]:
1月 27 12:08:53 openstack NetworkManager[8967]:
1月 27 12:08:53 openstack NetworkManager[8967]:
1月 27 12:08:53 openstack NetworkManager[8967]:
1月 27 12:08:53 openstack NetworkManager[8967]:
1月 27 12:14:01 openstack systemd[1]: Stopping Network Manager...
1月 27 12:14:01 openstack NetworkManager[8967]:
1月 27 12:14:01 openstack NetworkManager[8967]:
1月 27 12:14:01 openstack NetworkManager[8967]:
1月 27 12:14:01 openstack systemd[1]: Stopped Network Manager.
Hint: Some lines were ellipsized, use -l to show in full.
[root@openstack ~]#
☆ここで一旦再起動☆
再起動完了後、念のためインターネット接続確認ください~
OpenStackインストール
リポジトリのインストール
RDOに準拠し実施します。
読み込んだプラグイン:fastestmirror, langpacks
rdo-release.rpm | 5.8 kB 00:00:00
/var/tmp/yum-root-fCx3fb/rdo-release.rpm を調べています: rdo-release-queens-1.noarch
/var/tmp/yum-root-fCx3fb/rdo-release.rpm をインストール済みとして設定しています
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ rdo-release.noarch 0:queens-1 を インストール
--> 依存性解決を終了しました。
依存性を解決しました
==========================================================================================================================================
Package アーキテクチャー バージョン リポジトリー 容量
==========================================================================================================================================
インストール中:
rdo-release noarch queens-1 /rdo-release 2.9 k
トランザクションの要約
==========================================================================================================================================
インストール 1 パッケージ
合計容量: 2.9 k
インストール容量: 2.9 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
インストール中 : rdo-release-queens-1.noarch 1/1
検証中 : rdo-release-queens-1.noarch 1/1
インストール:
rdo-release.noarch 0:queens-1
完了しました!
[root@openstack ~]#
最新化
リポジトリのインストール後、最新化を図ります。
(動作イメージが長いため略記)
インストーラ・・・packstack等パッケージのインストール
CentOS向けのOpenStackバイナリは、EPELパッケージリポジトリで公開されており
epel-releaseパッケージとあわせてインストールする。
(動作イメージが長いため略記)
OpenStackインストール(オールインワンインストール)
オールインワンで実施する。
ここで、ovs情報もオプションに含め、CentOS7とOpenStackが疎通可能となるよう設定する。
CentOS7的に、ブリッジのデフォ名称がvirbr0であり、そのまま採用する。
パスワードを、何気に「password」としている。通常は、インストール完了後のログに
表示されるのだが、複雑で面倒なので、設定しちゃいます。
(動作イメージが長いため略記)
☆ここで一旦再起動☆
インストールが終了したところで、なんとなく実施する。
インストール後作業
管理画面へのログイン確認
PATHはインストールログの最後らへんに出ます。
admin/password で入れるか確認してください~
ログイメージ
「http://192.168.1.4/dashboard」とかいてあるのが分かる。
Finalizing [ DONE ]
**** Installation completed successfully ******
Additional information:
* A new answerfile was created in: /root/packstack-answers-20190210-002701.txt
* Time synchronization installation was skipped. Please note that unsynchronized time on server instances might be problem for some OpenStack components.
* File /root/keystonerc_admin has been created on OpenStack client host 192.168.1.4. To use the command line tools you need to source the file.
* To access the OpenStack Dashboard browse to http://192.168.1.4/dashboard .
Please, find your login credentials stored in the keystonerc_admin in your home directory.
* The installation log file is available at: /var/tmp/packstack/20190210-002657-CyscWg/openstack-setup.log
* The generated manifests are available at: /var/tmp/packstack/20190210-002657-CyscWg/manifests
[root@openstack network-scripts]#
一旦の疎通はここまでしか出来ません。
以降、OpenStack上でルーターを作成次第、HOST側よりpingを打っての確認
となります。
OVSブリッジ設定@HOST側
先ほど先行してovs情報込みでインストールした。
これよりHOST側にてブリッジ設定を施します。
IP等の数字以外はまんまコピペで良く、当初存在した設定項目が抜けても問題なし。
不安であればバックアップを取得。
DEVICETYPE=ovs
TYPE=OVSBridge
BOOTPROTO=static
IPADDR=192.168.1.232 ・・・「ifcfg-
NETMASK=255.255.255.0
GATEWAY=192.168.1.1 ・・・自宅ルーターとした
DNS1=8.8.8.8
ONBOOT=yes
☆ここで一旦再起動☆
再起動完了後、事後確認する。
OpenStack環境構築
外部ネットワーク:作成
GUIですと複雑なため、CUIでまいります。
論理名称をオプションにて「external_network」としています。
neutron net-create external_network --provider:network_type flat --provider:physical_network extnet --router:external
作成後、画面で見てみました。
管理→ネットワーク→ネットワーク と進み。。
外部ネットワーク:サブネット作成
論理名称をオプションにて「public_subnet」としています。
また、前述からのとおり外部は「192.168.1.0/24」となります。
neutron CLI is deprecated and will be removed in the future. Use openstack CLI instead.
Created a new subnet:
+-------------------+----------------------------------------------------+
| Field | Value |
+-------------------+----------------------------------------------------+
| allocation_pools | {"start": "192.168.1.100", "end": "192.168.1.170"} |
| cidr | 192.168.1.0/24 |
| created_at | 2019-02-10T03:08:08Z |
| description | |
| dns_nameservers | |
| enable_dhcp | False |
| gateway_ip | 192.168.1.1 |
| host_routes | |
| id | 25fa05a5-a51a-465c-b152-50c35f9bcad5 |
| ip_version | 4 |
| ipv6_address_mode | |
| ipv6_ra_mode | |
| name | public_subnet |
| network_id | b86f0a44-5994-4076-b4d0-a3fb10150503 |
| project_id | d69dac4cb478467fae06534be8170d4c |
| revision_number | 0 |
| service_types | |
| subnetpool_id | |
| tags | |
| tenant_id | d69dac4cb478467fae06534be8170d4c |
| updated_at | 2019-02-10T03:08:08Z |
+-------------------+----------------------------------------------------+
[root@openstack ~(keystone_admin)]#
画面ですが、先ほどの動画面でサブの表示が増えています。
また、設定画面を表示します。
GUIで作成する場合は、このように手打ちすればOKということ。
一覧より、外部NW名をクリックし、「サブネット」タブをクリック。
その後、サブネット名をクリック~
Privateネットワーク:作成
サブネット名:pri_sub_network ・・・任意ですが、ここでは左記とした。
NWアドレス:192.168.2.0/24
ゲートウェイ:192.168.2.1
プロジェクト→ネットワーク→ネットワーク
と進み、「+ネットワークの作成」をクリック。
ネットワーク名、全てにチェックを入れ、「次へ」をクリック。
そのままサブネットの作成まで行います。
名称、各IPを入力して、「次へ」をクリック。
外部時同様、プールを指定してもよかったが、面倒になりやめた。。
登録完了にて、一覧には外部と内部の2つが表示されています。
ネットワークトポロジーも見てみましょう。
まあ、2つが表示されています。
別セグで以て、繋がりがありません。
そこで、ルーターを作成して繋いでみます。
ルーター作成
プロジェクト→ネットワーク→ルーター
と進み、「+ルーターの作成」をクリックします。
外部ネットワーク:先ほど作成したものを選択します。
「ルーターの作成」をクリックします。
その後、一覧に表示が出たかと思います。
さらに、一覧よりルーター名をクリックして・・・
IPアドレスはじめ、情報が出ましたでしょうか。
ここで、
ルーターへのping疎通確認をしてみましょう。
繋がりますね?
PING 192.168.1.100 (192.168.1.100) 56(84) bytes of data.
64 bytes from 192.168.1.100: icmp_seq=1 ttl=64 time=2.10 ms
64 bytes from 192.168.1.100: icmp_seq=2 ttl=64 time=0.143 ms
64 bytes from 192.168.1.100: icmp_seq=3 ttl=64 time=0.133 ms
64 bytes from 192.168.1.100: icmp_seq=4 ttl=64 time=0.254 ms
^C
--- 192.168.1.100 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 0.133/0.658/2.104/0.836 ms
[root@openstack ~]#
最後に、ネットワークトポロジーを見てみましょう。
ルーターを作成し、作成画面にて、指定の外部ネットワークと連結しています。
そして、pingにてルーターまで到達できることを見ました。
引き続き、プライベート側は隔離されており
次にてルーターと連結、全部繋げます。
インターフェース作成
ルーターの設定にて行います。
先ほど同様、
プロジェクト→ネットワーク→ルーター
さらに、
ルーター名をクリックします。
次に、「インターフェース」タブをクリックします。
すると、現状として対外部ネットワーク向けのインターフェース1本分の表示があります。
同様に対内部向けを作成しようということです。
「+インターフェースの追加」をクリックします。
サブネット:先ほど作成したもの
何もせず任意にまかせ「送信」押下にて完了させます。
一覧、そしてネットワークトポロジーより
作成完了、全部繋がった様子が伺えます。
疎通確認として、
ルーターから先、内部ネットワークへの通信については
次の設定および作業を以てして可能となります。
アクセス制御設定
プロジェクト→ネットワーク→セキュリティーグループと進みます。
デフォの設定が存在し、学習用ということもあって
これに追加して設定してしまいます。
「ルールの管理」をクリックします。
既にいくつか設定が居る中で、学習用につき
適当に甘いセキュリティとします。「+ルールの追加」をクリックします。
以下、全開に。
一覧で、2行増えていればOK。
SSHキーの作成
続いて、SSH用にキーを作成します。
プロジェクト→コンピュート→キーペア
にて「+キーペアの作成」をクリックします。
名称入力して、「+キーペアの作成」を押下です。
イメージの作成
テスト作成してみます。
テストとしては、cirrosを用いたインスタンス作成が常套のようなので
そうしてみます。
適当に、当時最新のイメージを落としました。
古いのも、デフォで入っていたのですが、BUG情報などもあり嫌気しました。
-rw-r--r--. 1 root root 13M 11月 20 2017 /tmp/cirros-0.4.0-x86_64-disk.img
[root@openstack tmp]#
◆イメージの作成
内部ネットワーク上に作成します。
外部ですと、後のFloating 割り当てでハマり、内部に作成すべしとの
参考サイト多数でした。
プロジェクト→コンピュート→イメージ と進みます。
「+イメージの作成」を押下し、先ほど入手したcirros-0.4.0のイメージを作成します。
ソース指定方法:ファイル
で、先ほどGETしたファイルを指定。
「イメージの作成」を押下。
作成したイメージが一覧に登場しました。
◆インスタンスの作成
一覧のまま、右欄より「起動」を押下
[詳細]
インスタンス名:任意
[フレーバー]
最小サイズのものとした
[ネットワーク]
前述のとおり、内部ネットワークを選択。外部ではない。
その他、
デフォルトのままです。
デキュリティグループ、キーペアなども
前述登録の1通りしかなく、自動でセッティングされており
それを受け入れるまでです。
「インスタンスの起動」をクリック
その後、インスタンスの確認をします。
プロジェクト→コンピュート→インスタンス とすすむ。
環境スペック、インスタンスの規模にもよると思いますが
一覧に、"実行中"と表示されると、終了。
◆起動正常性確認(起動ログ確認)、パスワード確認
インスタンス名をクリックする。
ログタブをクリックする。
「すべてのログの表示」を押下する。
異常っぽいメッセージがなければOK。
★パスワード★
次のように、ログ下部に出ると思います。
⇒下部の例では、、、
パスワード:gocubsgo
____ ____ ____
/ __/ __ ____ ____ / __ \/ __/
/ /__ / // __// __// /_/ /\ \
\___//_//_/ /_/ \____/___/
http://cirros-cloud.net
login as 'cirros' user. default password: 'gocubsgo'. use 'sudo' for root.
さて、それではインスタンスへの接続を試み
そもそも、内部ネットワークへの疎通から未だでありましたが
外部から接続を試みるにあたりFloating IPの割り当てが必要となります。
Floating IPの割り当て
いろんなやり方ありますが、一旦現状として
Floating IPがどのようか見てみます。
プロジェクト→ネットワーク→Floating IP と進みます。
現状、無しの状況となり、
今後の流れとしては、作成→割り当て→疎通確認 となります。
作成にあたり
「Floating IPの確保」をクリックします。
特に何もできることはなく、「IPの確保」をクリックします。
すると、一覧に1行出ました。
Floatingということで、内部を外部に魅せるものですので、
192.168.1で以て、範囲指定した100~170に収まった采番となっています。
それでは、次に・・・
割り当て
です。
一覧よりそのまま、「割り当て」をクリックします。
まあ、発行したFloatingIPも、作成したインスタンスも1つずつなので
一択ですが、それぞれ選択して「割り当て」押下です。
一覧に、対応する固定側IPが出ましたね。
また、
インスタンスの一覧(プロジェクト→コンピュート→インスタンス)を見ましても
前述に加え、Floatingが追記されている様子が伺えます。
インスタンスへのping確認
FloatingIPに向けて、やってみましょう。
PING 192.168.1.117 (192.168.1.117) 56(84) bytes of data.
64 bytes from 192.168.1.117: icmp_seq=1 ttl=63 time=152 ms
64 bytes from 192.168.1.117: icmp_seq=2 ttl=63 time=9.09 ms
64 bytes from 192.168.1.117: icmp_seq=3 ttl=63 time=10.3 ms
64 bytes from 192.168.1.117: icmp_seq=4 ttl=63 time=56.8 ms
^C
--- 192.168.1.117 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3042ms
rtt min/avg/max/mdev = 9.094/57.069/152.021/58.093 ms
[root@openstack ~]#
[root@openstack ~]# ping 192.168.2.13
PING 192.168.2.13 (192.168.2.13) 56(84) bytes of data.
^C
--- 192.168.2.13 ping statistics ---
9 packets transmitted, 0 received, 100% packet loss, time 8010ms
[root@openstack ~]#
The authenticity of host '192.168.1.117 (192.168.1.117)' can't be established.
ECDSA key fingerprint is SHA256:rOa80uzCXRW0358nxlaw8hGy+oW3OcdizP1EQSYp6Mw.
ECDSA key fingerprint is MD5:ec:fc:fd:35:2f:da:4d:76:fe:22:c7:90:c1:cc:49:bc.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.117' (ECDSA) to the list of known hosts.
cirros@192.168.1.117's password:
$
$ id
uid=1000(cirros) gid=1000(cirros) groups=1000(cirros)
$
$ uname -n
testinst
$
如何でしょうか。
cirrosにつき、実用性が無いため
別なOSを投入してみたいなぁ。
参考(多謝)
参考文献
◆【公式】【RDO】構築について https://www.rdoproject.org/install/packstack/
https://www.rdoproject.org/networking/neutron-with-existing-external-network/
https://docs.openstack.org/ja/install-guide/environment-packages-rdo.html
◆インスタンス生成時に[Error: Host 'openstack' is not mapped to any cell] https://ask.openstack.org/en/question/104029/how-can-i-solve-this-issue-when-i-create-instance/
◆外部NWにインスタンス生成したときの、Floating付与時エラー https://ask.openstack.org/en/question/11463/assigning-floating-ip-fails/
https://answers.launchpad.net/neutron/+question/225757
◆外部NWにインスタンス生成したときの、cirros起動エラー 「failed 1/20: up 20.64. request failed //FAILED MESSEAGE//」→20カウント到達事象 http://designetwork.hatenablog.com/entry/2018/03/05/os-ssh-keypair-trouble
◆内部NWにてインスタンス生成 https://docs.openstack.org/liberty/ja/install-guide-ubuntu/launch-instance-private.html
◆Floating付与 https://docs.openstack.org/ja/user-guide/cli-manage-ip-addresses.html
◆cirrosマニュアル的なもの(入手、操作) https://docs.openstack.org/mitaka/install-guide-obs/glance-verify.html
https://docs.openstack.org/mitaka/ja/install-guide-obs/glance-verify.html
◆リンク集 http://blog.father.gedow.net/2013/02/19/openstack-links/
◆エラー全般集 https://qiita.com/2m1tsu3/items/35d34df6f57271679461
◆構築ガイド・指導・体験記 系 https://ccie-go.com/openstack-install/#i-15
http://designetwork.hatenablog.com/entry/2018/03/04/openstack-pike-packstack-basic