openstack
やってみた
の巻
cheep環境

Open Stack をやってみたの巻(編集中)

More than 1 year has passed since last update.

目的

オンプレミスハードの仮想化を行い、運営コストを見直せるか使ってみる

目標

検証端末一台の上にVertualBox で、2台のUbuntu Server を建てて、Open Stack で仮想化してみる

前提

日本仮想化技術株式会社 OpenStack構築手順書 Newton版 (下のサイトからダウンロード可能)を参考にする
https://enterprisecloud.jp/installguide-openstack/

検証端末情報
Windows 10 Pro ver.1703 64bit
Intel(R) Core(TM) i5-6200U CPU @2.30GHz 2.40Ghz
実装RAM 16GB
238GB ストレージ

VirtualBox ver.5.1.26

環境のセットアップ

まずは、Ubuntu Server を下のサイトからダウンロード
https://www.ubuntu.com/download/server

今回は、
Ubuntu Server 16.04.3 LTS を選択
WS000000.JPG

30分程度のダウンロードで完了。

VM 間の通信を実現するため、
ダウンロードの合間にNAT ネットワークを作成する。
参考は下のサイト
http://changineer.info/server/virtualization/virtualbox.html#_8211-4

Oracle VM VirtualBox マネージャー から、
ファイル > 環境設定 > ネットワーク > NATネットワーク, +マークを押下 > NatNetwork という項目が追加される > NatNetwork を右クリック > 編集

NAT ネットワーク詳細 から、
ネットワークを有効化をチェック
ネットワークCIDR : 10.0.1.0/24(任意)
ネットワークオプション:DHCP のサポート にチェック
OK

Oracle VM VirtualBox マネージャー画面で、OK

VirtualBox を下の情報で、Ubuntu Server を2台作成する
※画像では、"ubuntu_Atype" サーバがあるが無視する

・contoroller
WS000000.JPG

・compute
WS000001.JPG

VM 同士の通信をしたいため、NIC を追加する
※contoroller と compute 両方で設定する
Oracle VM VirtualBox マネージャー画面にて、
該当VMを右クリック > 設定 > ネットワーク > アダプター2

アダプター2画面にて、
ネットワークアダプターを有効化へチェック
割り当て:NAT ネットワーク
OK
WS000012.JPG

VM 起動して、起動ディスク(Ubuntu Serverのiso ファイル )を指定する。

OS の初期設定

起動後、下のパラメータで設定した。

設定項目  標準設定 今回設定 備考
Language English 同左 本当は日本語がいいが、文字ずれするらしく英語を選択
Ubuntu top? page Install Ubuntu Server 同左
Select a language English 同左
Select your location United States Other > Asia > Japan
Configure locales United States 同左
Configure the keyboard No 同左
Country of orgin for the keyboard Japanese 同左
Keyborad layout Japanese 同左
Hostname ubuntu openstackcontroller / openstackcompute 任意
Full name for the new user brank 任意
Username for your account 上の情報の性 任意
Choose a password for the new user blank 任意
Encrypt your home directory No 同左
Is this time zone correct Asia/Tokyo Yes 同左 Asia/Tokyo であることを確認する
Partitioning method Guided - use entire disk and set up LVM 同左
Select disk to partition SCSI3 (0,0,0) (sda) - 53.7 GB ATA VBOX HARDDISK 同左
Write the changes to disks and configure LVM No Yes 設定値が上の情報であることを確認する
Amount of volume group to use for guided partitioning 53.2GB 同左
Write the changes to disk No Yes 上の設定になっていることを確認する
HTTP proxy informatin blank 任意
manage upgrades on this system No automatic updates 任意
Choose software to install standard system utilities OpenSSH server 初期値のスタンダートユーティリティはチェックを外す
Install the GRUB boot loader to the master bott record Yes 同左
Finish the Installation Continue 同左

5分程度で、Ubuntu Server が立ち上がる。
登録したユーザ情報で、ログインする。

Ubuntu Server のネットワークデバイス設定

両サーバで設定を実施すること
まずは、interfaces ファイルのバックアップ。バックアップ先は任意で

オリジナルファイルのバックアップ先フォルダを作成
mkdir /tmp/orgfiles

interfaces のバックアップ
cp -p /etc/network/interfaces /tmp/orgfiles/interfacesORG

controller のIP設定(例)

/etc/network/interfaces
auto enp0s3
iface enp0s3 inet dhcp

auto enp0s8
iface enp0s8 inet dhcp

※上の作業を両方のVM で実施

設定の反映のため、サーバの再起動
sudo reboot

サーバ再起動後、両サーバのインターフェース情報を確認する。
ifconfig

3.PNG

確認点
1.インターフェースが3つ(enp0s3,enp0s8,lo等)出ていること
2.それぞれのインターフェースのIP をメモ
※controller と compute で実施する

インターネットに抜けていることと他のサーバへping が失敗しないことを確認する。
1.NAT 経由で、公開サーバへ抜けていることを確認する
  (例) ping 8.8.8.8
2.NAT ネットワーク経由で、隣接サーバのIF (恐らく、enp0s8 に設定しているはず)へ抜けていることを確認する
  (例) ping 10.0.1.4

OpenStack 向けにIF のIP を固定する。
それぞれ下のようにIP を固定する。
sudo vi /etc/network/interfaces

■Controller(例)
WS000020.JPG

■Compute(例)
WS000019.JPG

設定の反映のため、それぞれ、サーバを再起動する
sudo reboot

疎通を確認する。
■Controller 側
ping 8.8.8.8
ping 10.0.2.102

■Compute 側
ping 8.8.8.8
ping 10.0.2.101

静的ホスト名の解決設定

hosts 情報を下のように修正する
sudo vi /etc/hosts

■例 Compute 側
WS000018.JPG

共通で、127.0.1.1 の行をコメントアウト(行の先頭に# を入力)する

システムの更新

各VM で、
Mitaka向けUbuntu Cloud Archiveリポジトリーを登録する

sudo add-apt-repository cloud-archive:newton

各VM で、
システムをアップデートする。
apt-get update && apt-get dist-upgrade

クライアントソフトのインストール

Controller サーバで、
sudo apt-get install python-openstackclient python-pymysql

上のコマンドの途中で、"do you wanto continue?" と聞かれるので、
Yes

NTP の設定

Chrony を利用する。
初利用なので、下のサイトで概要を勉強。
https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/ch-Configuring_NTP_Using_the_chrony_Suite.html#sect-differences_between_ntpd_and_chronyd

ntpd より、
頻繁にネットワーク接続が一時停止したり、断続的に切断され再接続されるようなシステムに強い。
たとえば、モバイルや仮想システムで、導入を検討する。

各VM で、
時刻同期のため、Chrony をインストールする。
sudo apt-get install chrony
上のコマンドの途中で、"do you wanto continue?" と聞かれるので、
Y

Chrony の設定を変更する。
Controller を親として、Compue を子とする。
NTP 参照先は、ntp.nict.jp で。

■Controller 側
sudo vi /etc/chrony/chrony.conf
下のように修正する

1.指定のNTP サーバと同期する
下の行を追加して、pool 2.~ をコメントアウトする。
server ntp.nict.jp iburst
WS000030.JPG

2.LAN からのアクセスを許可する
下の行を追加する
allow 10.0.1.0/24
WS000029.JPG

chrony 再起動
sudo service chrony restart

同期の確認
chronyc sources
下のようになっていれば成功
WS000028.JPG

■Compute 側
sudo vi /etc/chrony/chrony.conf
下のように修正する

server 10.0.1.101
上の行を追加して、pool 2.~ をコメントアウトする。

同期の確認
chronyc sources
下のようになっていれば成功
WS000031.JPG

DB のインストール

Controller へMaria DB をインストール
sudo apt-get install mariadb-server python-pymysql
上のコマンドの途中で、 Do you wanto continue? と聞かれるので
Y

設定ファイルの作成
sudo vi /etc/mysql/conf.d/openstack.cnf

下の内容を全て追記

/etc/mysql/conf.d/openstack.cnf
[mysqld]
bind-address = 10.0.1.101
default-storage-engine = innodb innodb_file_per_table
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8

設定の反映のため、DB を再起動
sudo service mysql restart

RabbitMQ のインストール

OpenStack のメッセージによる連携のため、メッセージパッケージをインストールする

■Controller 側
sudo apt-get install rabbitmq-server
途中で、continue 聞かれるので、
y

インストールには、15分程度時間がかかるので、ここで小休憩。

RabbitMQ へユーザを作成する
sudo /usr/sbin/rabbitmqctl add_user openstack (PW任意)

RabbitMQ のopenstack ユーザへ権限を付与する
sudo /usr/sbin/rabbitmqctl set_permissions openstack ".*" ".*" ".*"

サービスの再起動
sudo /etc/init.d/rabbitmq-server restart

正常に動作していることをログで確認する
tailf /var/log/rabbitmq/rabbit@openstackcontroller.log

下のようにエラーなく、待ち受けていればOK
WS000032.JPG

admin ユーザの環境変数設定ファイルを新規作成する
sudo vi ~/admin-openrc

~/admin-openrc
export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=password
export OS_AUTH_URL=http://controller:35357/v3 
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
export PS1='\u@\h \W(admin)\$ '

demo ユーザの環境変数設定ファイルを新規作成する
sudo vi ~/demo-openrc.sh

~/demo-openrc.sh
export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=password
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
export PS1='\u@\h \W(demo)\$ 

memcached のインストールと設定

sudo apt-get install memcached python-memcache

sudo vi /etc/memcached.conf
下のように変更する
WS000033.JPG

-l 10.0.1.101
上の行を追加する。初期は、127.0.0.1 になっているので変更する。

memcached サービスの再起動
sudo /etc/init.d/memcached restart

Keystone のインストール

データベースを作成する
■Controller 側
mysql へログイン
mysql -u root

CLI の表記が下になっていれば、ログイン完了
MariaDB [(none)]>

keystone データベースの作成とユーザの作成
CREATE DATABASE keystone;

GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'password';

exit

ログインでkyestone ユーザとデータベースがあることを確認する
mysql -u keystone -p

show databases;

下のように表示されれば完了