#目的
オンプレミスハードの仮想化を行い、運営コストを見直せるか使ってみる
#目標
検証端末一台の上に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 を選択
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" サーバがあるが無視する
VM 同士の通信をしたいため、NIC を追加する
※contoroller と compute 両方で設定する
Oracle VM VirtualBox マネージャー画面にて、
該当VMを右クリック > 設定 > ネットワーク > アダプター2
アダプター2画面にて、
ネットワークアダプターを有効化へチェック
割り当て:NAT ネットワーク
OK
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設定(例)
auto enp0s3
iface enp0s3 inet dhcp
auto enp0s8
iface enp0s8 inet dhcp
※上の作業を両方のVM で実施
設定の反映のため、サーバの再起動
sudo reboot
サーバ再起動後、両サーバのインターフェース情報を確認する。
ifconfig
確認点
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
設定の反映のため、それぞれ、サーバを再起動する
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
共通で、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
2.LAN からのアクセスを許可する
下の行を追加する
allow 10.0.1.0/24
chrony 再起動
sudo service chrony restart
同期の確認
chronyc sources
下のようになっていれば成功
■Compute 側
sudo vi /etc/chrony/chrony.conf
下のように修正する
server 10.0.1.101
上の行を追加して、pool 2.~ をコメントアウトする。
同期の確認
chronyc sources
下のようになっていれば成功
#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
下の内容を全て追記
[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
admin ユーザの環境変数設定ファイルを新規作成する
sudo vi ~/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
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
下のように変更する
-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;
下のように表示されれば完了