1. tk3fftk

    Posted

    tk3fftk
Changes in title
+VirtualBoxで作成したCentOSにOpenStackを構築する(環境編)
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,289 @@
+
+# OpenStackとは
+>・OpenStack プロジェクトは、あらゆる種類のクラウド環境をサポートする、オープンソースのクラウドコンピューティングプラットフォームです。シンプルな実装、大規模なスケーラビリティ、豊富な機能を目指しています。世界中のクラウドコンピューティング技術者がプロジェクトに貢献しています。
+・OpenStack は、補完関係にある様々なサービスの組み合わせで Infrastructure-as-a-Service (IaaS) ソリューションを提供します。各サービスは application programming interface (API) を提供しており、簡単に連携できるようになっています。
+・最低限,Controller Node と Compute Node の2つのノード(ホスト)が必要
+・各ノードは少なくとも2つのネットワークインタフェースが必要
+
+>[公式](http://docs.openstack.org/liberty/ja/install-guide-rdo/index.html)より引用
+
+- 構築方法としては一から手動で入れていく方法と、PackStackという一括でバッとやってくれる方法があります。
+ - この記事では一から手動で入れていく方法を書いていきます。
+ - PackStackについては以下あたりを参考に
+ - https://www.rdoproject.org/install/quickstart/
+ - http://www.slideshare.net/h-saito/openstack-quickstart-icehouse
+ - http://blog.bit-isle.jp/bird/2014/11/527
+ - http://ken5owata.hatenablog.com/entry/2015/10/31/130849
+
+- 基本的に公式の[インストールガイド](http://docs.openstack.org/liberty/ja/install-guide-rdo/environment.html
+)に沿ってやっていきます。
+ - 単純化のために、hogehoge_PASSみたいなのは統一(root++)
+ - ずっとrootで操作していたので、root権限がいらないコマンドも`# hogehoge`と書いています。
+
+# VM環境
+- Windows7(ホストOS)で動作させているVirtualBox上に立ち上げました。
+- http://docs.openstack.org/liberty/ja/install-guide-rdo/environment-networking.html の図を見ながらだとイメージつきやすいです。
+ - 図の左2つのノード(ゲストOS)を立ち上げる感じ。
+
+## ネットワーク
+### Public
+- 外と直接繋がるネットワーク
+- IP: 192.168.12.0/24
+- ゲートウェイ: 192.168.12.1
+
+### Management
+- VirtualBoxのNAT経由で外と繋がるネットワーク
+- IP: 10.0.3.0/24
+- ゲートウェイ: 10.0.3.1
+
+## ノード(ゲストOS,VM)
+- ノードのネットワーク設定は、CentOSのインストール時に設定してしまってもいいし、/etc/sysconfig/networkscriptsで後で書いてもいい。
+
+### 共通
+- user/pass = root/root++
+- OS: [CentOS7](https://www.centos.org/download/)
+- Memory: 8GB
+- Storage: 10GB
+- ネットワークインタフェースは2つ。設定は以下:
+ - ブリッジアダプター
+ - ホストOSのインタフェースと繋げて通信する。
+ - NATネットワーク
+ - ゲストOS同士の通信を可能にしつつ、VirtualBoxのNATを利用して外と通信する
+ - VirtualBoxの環境設定->ネットワークでNATネットワークを作成し、上記の設定にした。
+
+### コントローラノード
+- OpenStackの脳ミソ的な役割をするノード。
+- PublicNetwork:
+ - インタフェース: enp0s3
+ - IP: 192.168.12.11
+ - NetMask: 255.255.255.0
+ - ゲートウェイ: 192.168.12.1
+ - ネームサーバ: 8.8.8.8
+- ManagementNetwork:
+ - インタフェース: enp0s8
+ - IP: 10.0.3.11
+ - NetMask: 255.255.255.0
+ - ゲートウェイ: 10.0.3.1
+- hostname: controller.localdomain
+
+### コンピュートノード
+- OpenStack内のインスタンスを動作させるノード。
+- PublicNetwork:
+ - インタフェース: enp0s3
+ - IP: 192.168.12.12
+ - NetMask: 255.255.255.0
+ - ゲートウェイ: 192.168.12.1
+ - ネームサーバ: 8.8.8.8
+- ManagementNetwork:
+ - インタフェース: enp0s8
+ - IP: 10.0.3.12
+ - NetMask: 255.255.255.0
+ - ゲートウェイ: 10.0.3.1
+- hostname: compute.localdomain
+
+## インストール後処理
+### ネットワークまわり
+- `/etc/sysconfig/network-script/ifcfg-xxx`を編集
+ - `BOOTPROT=none`
+ - `ONBOOT=yes`
+ - IPとかの指定が出来てなればそれも行う。
+- ネットワーク再起動
+ - `systemctl restart network`
+ - 初回だけOSごと再起動したかも
+ - `ip addr show`
+ - IPとか確認
+ - `ping google.com`
+ - とかして外と繋がってるか+名前解決できてるか確認
+
+### yumまわり
+- `yum update`
+- `yum install net-tools`
+ - お好みで。慣れ親しんだコマンドが使えるようになるやつ。
+
+### hostまわり
+- ホスト名の変更
+ - `$ hostname` で確認できる
+ - `# vi /etc/sysconfig/network`を書き換えて再起動で変更できる
+ - インストール時に名前を設定していたら今回は不要
+- ホスト入力
+
+```
+# cat /etc/hosts
+127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
+::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
+192.168.12.11 controller controller.localdomain
+192.168.12.12 compute compute.localdomain
+```
+
+ - `ping compute` でつながればOK
+
+### Serviceまわり
+- NetworkManagerを停止
+ - `# systemctl stop NetworkManager`
+ - `# systemctl disable NetworkManager`
+
+- SELinuxを設定
+ - `# setenforce 0`
+ - `# getenforce`
+ - permissiveであることを確認
+ - `# vim /etc/selinux/config` で
+ - `SELINUX=permissive`
+
+# OpenStack
+- ここから[環境](http://docs.openstack.org/liberty/ja/install-guide-rdo/environment.html)に従って、OpenStackに必要なサービスを入れていきます。
+
+## Network Time Protocol(NTP)
+>サービスをノード間で正しく同期するために、NTP の実装である Chrony をインストールすべきです。コントローラーノードをできる限り正確な(ストラタム値が小さい)サーバーに参照するように設定し、他のノードはコントローラーノードを参照するよう設定することを推奨します。
+
+### @コントローラノード
+- `# yum install chrony`
+- `# vim /etc/chrony.conf`
+ - `server ntp.nict.jp iburst` を追加
+ - `allow 10.0.3.0/24`
+- `# systemctl enable chronyd`
+ - OS起動時に起動するようにして
+- `# systemctl start chronyd`
+ - サービス起動
+
+### コンピュートノード
+- `# yum install chrony`
+- `# vim /etc/chrony.conf`
+ - `server controller iburst`
+ - を追加し,残りのserver項目はすべてコメントアウト
+ - `allow 10.0.3.0/24`
+- `# systemctl enable chronyd`
+- `# systemctl start chronyd`
+
+### 検証
+- `# chronyc sources`
+ - controllerなら,参照しているNTPサーバのアドレス
+ - 他のノードならcontrollerが表示される
+
+## OpenStack パッケージ
+- 全てのノードで行う
+- `# yum install centos-release-openstack-liberty`
+ - インスコ
+- `# yum upgrade`
+ - パッケージをアップグレード
+- `# yum install python-openstackclient`
+ - Openstackクライアントのインスコ
+- `# yum install openstack-selinux`
+ - openstack用selinuxのインスコ
+
+## SQL
+>ほとんどの OpenStack のサービスは、情報を保存するために SQL データベースを使用します。データベースは、一般的にコントローラーノードで実行します。このガイドの手順では、ディストリビューションによりますが、 MariaDB か MySQL を使用します。OpenStack のサービスは、PostgreSQL などの他の SQL データベースもサポートしています。
+
+- コントローラノードにて行う
+- `# yum install mariadb mariadb-server MySQL-python`
+ - インスコ
+- `# vim /etc/my.cnf.d/mariadb_openstack.cnf`
+ - 作成して以下を記入
+
+```
+[mysqld]
+
+# 管理ネットワーク経由で他のノードによりアクセスできるようにする
+bind-address = 10.0.3.11
+
+# 有用なオプションとUTF-8文字セットを有効にする
+default-storage-engine = innodb
+innodb_file_per_table
+collation-server = utf8_general_ci
+init-connect = 'SET NAMES utf8'
+character-set-server = utf8
+```
+
+- `# systemctl enable mariadb`
+- `# systemctl start mariadb` 起動設定
+- `# /usr/bin/mysql_secure_installation`
+ - mysqlの設定を行う。
+
+```
+NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
+SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
+
+In order to log into MariaDB to secure it, we'll need the current
+password for the root user. If you've just installed MariaDB, and
+you haven't set the root password yet, the password will be blank,
+so you should just press enter here.
+
+Enter current password for root (enter for none): //enter
+OK, successfully used password, moving on...
+
+Setting the root password ensures that nobody can log into the MariaDB
+root user without the proper authorisation.
+
+Set root password? [Y/n] Y // rootパスワードの設定
+New password: // root++
+Re-enter new password:
+Password updated successfully!
+Reloading privilege tables..
+... Success!
+
+By default, a MariaDB installation has an anonymous user, allowing anyone
+to log into MariaDB without having to have a user account created for
+them. This is intended only for testing, and to make the installation
+go a bit smoother. You should remove them before moving into a
+production environment.
+
+Remove anonymous users? [Y/n] Y // アノニマスユーザの削除
+... Success!
+
+Normally, root should only be allowed to connect from 'localhost'. This
+ensures that someone cannot guess at the root password from the network.
+
+Disallow root login remotely? [Y/n] Y // rootユーザのリモートログインの禁止
+... Success!
+
+By default, MariaDB comes with a database named 'test' that anyone can
+access. This is also intended only for testing, and should be removed
+before moving into a production environment.
+
+Remove test database and access to it? [Y/n] Y // テストDBの削除
+- Dropping test database...
+... Success!
+- Removing privileges on test database...
+... Success!
+
+Reloading the privilege tables will ensure that all changes made so far
+will take effect immediately.
+
+Reload privilege tables now? [Y/n] Y // 権限の変更を再読み込みする
+... Success!
+
+Cleaning up...
+
+All done! If you've completed all of the above steps, your MariaDB
+installation should now be secure.
+
+Thanks for using MariaDB!
+```
+
+- `# mysql -u root -p`
+ - root++を入力して操作ができることを確認
+
+
+## NoSQL
+>Telemetry サービスは、情報を保存するために NoSQL データベースを使用します。このデータベースは一般的にコントローラーノードで実行します。このガイドの手順では MongoDB を使用します。
+
+- コントローラノードで行う
+- `# yum install mongodb-server mongodb`
+ - インスコ
+- `# vim /etc/mongod.conf` 以下の設定を記述
+ - `bind_ip = 10.0.3.11`
+ - コントローラノードのIPアドレスに変更
+ - `smallfiles = true`
+ - コメントアウトを解除 ジャーナルファイルのサイズを減らす
+- 起動処理 (mongodをenableにしてstart)
+
+## メッセージキュー
+>クライアントからのリクエストを適切なワーカーに渡す。ジョブ完了後、出力をクライアントに返す。
+>OpenStack は、サービス間での操作と状態をやり取りするのに、メッセージキュー を使用します。メッセージキューサービスは、一般的にコントローラーノードで動作します。OpenStack は RabbitMQ, Qpid, ZeroMQ などのメッセージキューサービスをサポートしています。しかしながら、OpenStack のパッケージを提供しているほとんどのディストリビューションでは、特定のメッセージキューサービスだけがサポートされています。このガイドでは、ほとんどのディストリビューションがサポートする RabbitMQ メッセージキューサービスを導入します。別のメッセージキューサービスを導入したければ、関連ドキュメントを参照してください。
+
+- コントローラノードで行う
+- `# yum install rabbitmq-server`
+- 起動処理 (rabbitmq-serverをenableにしてstart)
+- `# rabbitmqctl add_user openstack root++`
+ - openstackユーザとパスワードを追加
+- `# rabbitmqctl set_permissions openstack ".*" ".*" ".*"`
+ - openstack ユーザーに対して、設定、書き込み、読み出しアクセスを許可する。