GNU/Linux >> Linux の 問題 >  >> Cent OS

CentOSにOpenStackIcehouseをインストールするための簡単なガイド–2ノードアーキテクチャ

「OpenStack」という言葉は最近非常に人気があります。クラウドコンピューティングの分野で働いていなくても、この言葉を聞いたことがあるかもしれません。私は過去10年間グリッドコンピューティングドメインで働いてきましたが、OpenStackの背後にある騒ぎを理解したことはありません。しかし、この流行語は、どこへ行っても耳を澄ませ続けました。真剣に、私のオフィス、会議、そしてOpenStackを宣伝し続けている人気のあるWebサイトです。最後に、私は(ええ、上司から強制的に)OpenStackの世界に押し込まれ、これらの大きな質問は私に大きな打撃を与えました– Openstackとは何ですか、どのように実装され、どのように機能しますか?そうですね、OpenStackを理解する唯一の方法は、インストールから始めることです。

一見、OpenStackの使用を開始するのは簡単に見えましたが、そうではありません。はい、OpenStackの公式ウェブサイトには優れたドキュメントがありますが、私が直面した本当の問題は、使用されている用語(Horizo​​n、Glance、Keystone、Nova、Neutron、Swift、Heat、Cinder、Ceilometer…。そのような名前ですか?そして、インストールに関連する他のいくつかの用語がありました– RDO、Packstack、Devstack、異なるアーキテクチャ(1ノード、2ノード、マルチノード)、レガシーネットワークなど…真剣に、私はそれらすべてを理解するためにGoogleに戻る必要がありました(そしてこの男は素晴らしい仕事をしました)。そうですね、OpenStackでの私の経験について書くように言われたら、この記事は20ページになります。ここで停止して、トピックに進みます。

目次

  • OpenStackの概要
  • テストベッドアーキテクチャ
  • コントローラーとコンピュートノードの両方にNTPをインストールして構成する
  • コントローラーとコンピュートノードの両方にMySQLをインストールして構成する
  • コントローラーとコンピュートノードの両方にApacheQpidをインストールして構成する
  • コントローラーとコンピュートノードにOpenStackIcehouseベースパッケージをインストールします
  • コントローラーノードにKeyStoneをインストールする
  • コントローラーノードにGlanceをインストールする
  • コントローラーノードにNovaをインストールする
  • コントローラーノードにNova-Networkingをインストールする
  • コントローラーノードにダッシュボードをインストールする
  • コンピュートノードにNovaをインストールする
  • コンピュートノードにNova-Networkingをインストールする
  • インスタンスを作成する
  • インスタンスにログイン

OpenStackとは何ですか?

OpenStackは、サービスとしてのインフラストラクチャ(IaaS)を提供するオープンソースのクラウドコンピューティングプラットフォームです。グリッドコンピューティングの専門家であれば、OpenStackは、Globus Toolkit、Glite、Oracle Grid Engine、Unicoreなどの一般的なグリッドミドルウェアに似ています。OpenStackは基本的にミドルウェアであり、クラウドコンピューティングリソースをより効率的に管理できます。 、効果的に。

OpenStackサービス

  • 地平線 :基盤となるサービス、仮想インスタンス、ユーザー、ネットワークを操作および管理するためのウェブポータルを提供するダッシュボードサービス。
  • ノヴァ :コンピューティングインスタンスの管理に役立つコンピューティングサービス–仮想マシンの生成、スケジューリング、起動、終了が含まれます。
  • キーストーン :認証と承認を提供するIDサービス。
  • 中性子 :ネットワークの作成と管理を可能にするネットワークサービス。
  • 一瞥 :仮想マシンイメージの保存とフェッチを支援するイメージサービス。
  • データベース service:データベースをサービスとして提供します。
  • スウィフトとシンダー :サービスとしてのストレージを提供します。
  • テレメトリ :請求とベンチマークの管理を支援するサービス。
  • 他にもたくさんのサービスがあります…openstack.orgで詳細をご覧ください。

アーキテクチャ

初心者の場合、理想的な方法は2ノードアーキテクチャから始めることです。1つのノードは「コントローラー」と呼ばれ、もう1つのノードは「計算」と呼ばれます。このチュートリアルでは、CentOS6.6オペレーティングシステムにOpenStackIcehouseバージョンをインストールします。コントローラノードにインストールされるサービスは、Keystone、Glance、Nova、Networking(レガシーnova-networking)、Horizo​​nであり、コンピューティングノードにはNovaとNetworking(レガシーnova-networking)があります。

注: OpenStack初心者ですか? Novaのレガシーネットワーキングから始めることをお勧めします。この段階では、「Neutron」を理解して構成することが大きな課題です。ただし、後の段階でレガシーネットワークからNeutronへの移行を検討する必要があります。

以下は、私のテストベッドを表す図です。私のインストール手順はすべて、以下のアーキテクチャに基づいています。

注: Legacy Nova-networkを使用するため、管理目的でコントローラーノードに1つのインターフェース、計算ノードに2つのインターフェースが必要です(1つはコントローラーノードの同じネットワークに属する管理用で、もう1つは外部用です。 VM通信に使用されます。

さて、インストール手順を進めるのは良いことです。

CentOSにOpenStackIcehouseをインストールして構成する方法

使用します

  • controller-hostname コントローラノードのホスト名として‘を使用し、「 compute-hostname 」をコンピュートノードのホスト名として使用します。
  • コントローラーノードの場合は「10.180.10.132」(管理IP)、計算ノードの場合は「10.180.10.134」(管理IP)。計算ノードの外部IPは「10.180.14.151」になります

注: それらを対応するFQDNまたはIPアドレスに置き換えることを忘れないでください。

  • インストール中、「 setpassword」が見つかった場所 ‘、対応するサービスパスワードに置き換えます。
  • インストールのほとんどの部分で「YUM」を使用します。したがって、マシンがインターネットに接続されていることを確認してください。場合によっては、yumの構成に問題がある場合は、以下のガイドが非常に役立ちます。
    • CentOSでYumリポジトリを構成する方法
    • 知っておく必要のあるYumコマンド。
  • 混乱を避け、このチュートリアルの長さを短縮するために、いくつかのコマンドの出力は切り捨てられています。

OpenStackへのコンポーネント(またはサービス)のインストールには、以下の手順が含まれます。



コントローラーノードとコンピュートノードの両方にNTPをインストールして構成する

すぐにジャンプして、コントローラーと計算ノードにNetworkTimeProtocolをインストールして構成する方法を学ぶことができます。

NTPを構成し、ntpdサービスを開始しましたか?その後、この記事に戻ります…

コントローラーノードとコンピュートノードの両方でOSを更新する

コンポーネントをインストールする前に、オペレーティングシステムをアップグレードすることを常にお勧めします。これにより、パッケージの依存関係に関する多くの問題が解決されます。

[root@controller-hostname ]# yum update
[root@compute-hostname ]# yum update


コントローラーノードとコンピュートノードの両方にMySQLデータベースをインストールします

注: MySQLは現在「Mariadb」と呼ばれています。

[root@controller-hostname ]# yum install mysql mysql-server MySQL-python
[root@compute-hostname ]# yum install mysql mysql-server MySQL-python

/etc/my.cnf」を確認する必要があります ‘MySQLサービスがコントローラーノードと計算ノードの両方の管理IPアドレスにバインドされるようにします。

コントローラーノード上

[root@controller-hostname ]# vi /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
bind-address=10.180.10.132
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

計算ノード上

[root@compute-hostname ]# vi /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
bind-address=10.180.10.134
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

mysqlサーバーを起動します:

[root@controller-hostname ~]# service mysqld start
[root@compute-hostname ~]# service mysqld start

MySQLのセットアップ…

[root@controller-hostname ~]# mysql_install_db
[root@compute-hostname ~]# mysql_install_db

常に「mysql_secure_installation」を実行することをお勧めします ‘MySQLをインストールした後。

[root@controller-hostname ~]# mysql_secure_installation
[root@compute-hostname ~]# mysql_secure_installation

mysql_secure_installationの機能がわからない場合は、詳細を説明するクイックガイドをご覧ください。

コントローラーとコンピュートノードの両方にBaseOpenStackIcehouseパッケージをインストールします

yumリポジトリーをセットアップし、ベースIcehouseパッケージをインストールします。この手順は、コントローラーノードと計算ノードの両方で実行する必要があります。

コントローラーノードの場合:

[root@controller-hostname ~]# yum install yum-plugin-priorities
[root@controller-hostname ~]# yum install http://repos.fedorapeople.org/repos/openstack/openstack-icehouse/rdo-release-icehouse-4.noarch.rpm
[root@controller-hostname ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-RDO-Icehouse
[root@controller-hostname ~]# yum -y install http://fedora.cu.be/epel/7/x86_64/e/epel-release-7-2.noarch.rpm
[root@controller-hostname ~]# yum install openstack-utils openstack-selinux

計算ノードの場合:

[root@compute-hostname ~]# yum install yum-plugin-priorities
[root@compute-hostname ~]# yum install http://repos.fedorapeople.org/repos/openstack/openstack-icehouse/rdo-release-icehouse-4.noarch.rpm
[root@compute-hostname ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-RDO-Icehouse
[root@compute-hostname ~]# yum -y install http://fedora.cu.be/epel/7/x86_64/e/epel-release-7-2.noarch.rpm
[root@compute-hostname ~]# yum install openstack-utils openstack-selinux


コントローラーノードにメッセージブローカーサービスをインストールする

OpenStackサービスには、通信用のメッセージブローカーが必要です。現在、OpenStackはRabbit-mqとApacheQpidをサポートしています。このチュートリアルでは、Qpidサーバーをインストールします。

Apache Qpid サービスがAMQP(Advanced Message Queuing Protocol)を介してメッセージを送受信できるようにします。

[root@controller-hostname ~]# yum install qpid-cpp-server

qpid-cpp-serverを構成する 認証を必要とせずに機能する(これにより、インストールプロセスが簡単になります。ただし、セキュリティ上の理由から認証を有効にする必要があります)

[root@controller-hostname ~]# echo "auth=no">/etc/qpid/qpidd.conf

メッセージブローカーを起動します…

[root@controller-hostname ~]# service qpidd start

コントローラーノードへのKeystone(Identity Service)のインストールと構成

前に述べたように、KeystoneサービスはOpenStackで主要な役割を果たし、認証と承認を提供します。また、OpenStackのすべてのサービス(IDサービスを含む)をKeyStoneに登録する必要があることも意味します。

キーストーンパッケージをインストールします…

[root@controller-hostname ~]# yum install openstack-keystone python-keystoneclient

キーストーン用のデータベースを作成する 、サービスがその状態とデータを保存できるように…

[root@controller-hostname ~]# mysql -u root -p
mysql> CREATE DATABASE keystone;
mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'controller-hostname' IDENTIFIED BY 'setpassword';
mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'setpassword';

注: 「setpassword」をkeystone用の独自のパスワードに置き換えることを忘れないでください。

キーストーンデータベースのテーブルを作成する…

[root@controller-hostname ~]# su -s /bin/sh -c "keystone-manage db_sync" keystone

ここで、keystoneに、これがデータベース接続を確立するために使用する必要があることを伝えます

[root@controller-hostname ~]# openstack-config --set /etc/keystone/keystone.conf database connection mysql://keystone:setpassword@controller-hostname/keystone

注: 「setpassword」を「keystone」@mysqlの適切なパスワードに置き換えることを忘れないでください

キーストーンで他のサービスを認証するための認証トークンを作成します。これを行うには、opensslを使用してランダムなHEX値を生成し、それを「 ADMIN_TOKEN」という変数に格納します。 ‘

[root@controller-hostname ~]# ADMIN_TOKEN=$(openssl rand -hex 10)
[root@controller-hostname ~]# echo $ADMIN_TOKEN
e9393f7ac1886f0c1a20

注: 後で必要になるので、生成されたトークンのコピーを作成します(途中でターミナルセッションを強制終了しない場合は不要です)

認証トークンを使用するようにキーストーンを構成する 前のステップで生成された…

[root@controller-hostname ~]# openstack-config --set /etc/keystone/keystone.conf DEFAULT admin_token $ADMIN_TOKEN

PKIベースの認証トークンを提供するようにキーストーンを構成します。

[root@controller-hostname ~]# keystone-manage pki_setup --keystone-user keystone --keystone-group keystone

「キーストーン」ユーザーの所有権と権限を設定する…

[root@controller-hostname ~]# chown -R keystone:keystone /etc/keystone/ssl
[root@controller-hostname ~]# chmod -R o-rwx /etc/keystone/ssl

キーストーンのためにすべて完了しました。サービスを開始しましょう…

[root@controller-hostname ~]# service openstack-keystone start

ステータスを確認して、サービスが実際に実行されていることを確認します

[root@controller-hostname ~]# service openstack-keystone status
keystone (pid 10245) is running...

開始後にサービスが停止している場合は、この時点でその問題を修正する必要があります。

システムの起動中に自動的に開始するようにサービスを設定します…

[root@controller-hostname ~]# chkconfig openstack-keystone on

期限切れのキーストーントークンを自動的にクリアします…

キーストーンの操作中に期限切れのトークンが多数存在する可能性があるため、キーストーンデータベースのサイズが大きくなります。定期的にクリアすることをお勧めします。そのために、cronジョブを次のように設定します。

[root@controller-hostname ~]# echo '@hourly /usr/bin/keystone-manage token_flush >/var/log/keystone/keystone-tokenflush.log 2&>&1' >> /var/spool/cron/keystone
[root@controller-hostname ~]# crontab -l -u keystone
@hourly /usr/bin/keystone-manage token_flush > /var/log/keystone/keystone-tokenflush.log 2&>&1

キーストーンのユーザー、テナント、役割を作成する

keystoneコマンドを実行する前に、特定の環境変数を設定する必要があります。これを行うには、「 admin-openrc.sh」という名前のファイルを作成します ‘および環境変数を次のように設定します:

[root@controller-hostname ~]# vi admin-openrc.sh
export OS_USERNAME=admin
export OS_PASSWORD=setpassword
export OS_TENANT_NAME=admin
export OS_AUTH_URL=http://controller-hostname:35357/v2.0
[root@controller-hostname ~]# source admin-openrc.sh

ユーザーを作成しましょう…

[root@controller-hostname ~]# keystone user-create --name=admin --pass=setpassword --email=keystone@controller-hostname

役割を作成する…

[root@controller-hostname ~]# keystone role-create --name=admin

テナントを作成…

[root@controller-hostname ~]# keystone tenant-create --name=admin --description="Admin Tenant"

ユーザーを前の手順で作成した役割とテナントにリンクする必要があります…

[root@controller-hostname ~]# keystone user-role-add --user=admin --role=admin --tenant=admin

Keystone(IDサービス)をKeyStoneサービスに登録します

[root@controller-hostname ~]# keystone tenant-create --name=service --description="Service Tenant"
[root@controller-hostname ~]# keystone service-create --name=keystone --type=identity --description="OpenStack Identity"
[root@controller-hostname ~]# keystone endpoint-create --service-id=$(keystone service-list | awk '/ compute / {print $2}') --publicurl=http://controller-hostame:8774/v2/%\(tenant_id\)s --internalurl=http://controller-hostame:8774/v2/%\(tenant_id\)s --adminurl=http://controller-hostame:8774/v2/%\(tenant_id\)s

これで、KeyStoneの構成が完了しました…keystoneのインストールと構成中に問題が発生した場合に備えて、さまざまなkeystoneエラーの解決策を示します–一般的なkeystoneサービスのエラーと解決策

コントローラーノードにGlance(イメージサービス)をインストールする

イメージサービスはコントローラーノードにインストールされ、コンピュートノードでVMを起動するために使用されるすべてのイメージをホストします。

[root@controller-hostname ~]# yum install openstack-glance python-glanceclient

データベースの「一目」を設定…

[root@controller-hostname ~]# mysql -u root -p
mysql> CREATE DATABASE glance;
mysql> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'controller-hostname' IDENTIFIED BY 'setpassword';
mysql > GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'setpassword';

注: 「setpassword」を変更することを忘れないでください

「glance」データベース用のテーブルを作成する…

[root@controller-hostname ~]# su -s /bin/sh -c "glance-manage db_sync" glance

データベースのクレデンシャルを読み取るようにglanceサービスを構成します…

[root@controller-hostname ~]# openstack-config --set /etc/glance/glance-api.conf database connection mysql://glance:setpassword@controller-hostname/glance
[root@controller-hostname ~]# glance-registry.conf database connection mysql://glance:setpassword@controller-hostname/glance

KeyStoneでGlanceユーザーを作成…

[root@controller-hostname ~]# keystone user-create --name=glance --pass=setpassword --email=glance@controller-hostname

glanceユーザーをロール「admin」に追加します

[root@controller-hostname ~]# keystone user-role-add --user=glance --tenant=service --role=admin

Glanceの認証を構成する…

[root@controller-hostname ~]# openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_uri http://controller-hostname:5000
[root@controller-hostname ~]# openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_host controller-hostname
[root@controller-hostname ~]# openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_port 35357
[root@controller-hostname ~]# openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_protocol http
[root@controller-hostname ~]# openstack-config --set /etc/glance/glance-api.conf keystone_authtoken admin_tenant_name service
[root@controller-hostname ~]# openstack-config --set /etc/glance/glance-api.conf keystone_authtoken admin_user glance
[root@controller-hostname ~]# openstack-config --set /etc/glance/glance-api.conf keystone_authtoken admin_password setpassword
[root@controller-hostname ~]# openstack-config --set /etc/glance/glance-api.conf paste_deploy flavor keystone
[root@controller-hostname ~]# openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_uri http://controller-hostname:5000
[root@controller-hostname ~]# openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_host controller-hostname
[root@controller-hostname ~]# openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_port 35357
[root@controller-hostname ~]# openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_protocol http
[root@controller-hostname ~]# openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken admin_tenant_name service
[root@controller-hostname ~]# openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken admin_user glance
[root@controller-hostname ~]# openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken admin_password setpassword
[root@controller-hostname ~]# openstack-config --set /etc/glance/glance-registry.conf paste_deploy flavor keystone

GlanceサービスをKeyStoneに登録…

[root@controller-hostname ~]# keystone service-create --name=glance --type=image --description="OpenStack Image Service"
[root@controller-hostname ~]# keystone --os-token=fd465d38e342ddc68be3 --os-endpoint=http://controller-hostname:35357/v2.0 endpoint-create --service-id=$(keystone service-list | awk '/ image / {print $2}') --publicurl=http://controller-hostname:9292 --internalurl=http://controller-hostname:9292 --adminurl=http://controller-hostname:9292

一瞥サービスを開始…

[root@controller-hostname ~]# service openstack-glance-api start
[root@controller-hostname ~]# service openstack-glance-registry start
[root@controller-hostname ~]# chkconfig openstack-glance-api on
[root@controller-hostname ~]# chkconfig openstack-glance-registry on

注: いずれかのサービスの開始に失敗した場合は、 / var / log / glanceの下のログファイルを確認してください。 。このガイドもお読みください– OpenStack GlanceImageServiceのインストールエラーと解決策。

テストGlanceサービス…

次に、Cirrosイメージをダウンロードして、Glanceサービスをテストします。 Cirrosは、サイズが数MBの小さなLinuxオペレーティングシステムであるため、ダウンロードしてGlanceサービスに追加するのは非常に簡単です。

[root@controller-hostname ~]# wget http://cdn.download.cirros-cloud.net/0.3.2/cirros-0.3.2-x86_64-disk.img
[root@controller-hostname ~]# glance image-create --name=cirros --disk-format=qcow2 --container-format=bare --is-public=true < cirros-0.3.2-x86_64-disk.img

CentOS画像をglanceサービスに追加

[root@controller-hostname ~]# wget http://cloud.centos.org/centos/6/images/CentOS-6-x86_64-GenericCloud-20141129_01.qcow2.xz

注: xzは、高い圧縮率を提供する汎用データ圧縮ユーティリティです。そのため、.xzファイルのサイズは小さくてダウンロードが簡単です。 .xzファイルを解凍する方法がわからない場合は、こちらのチュートリアルが役立ちます。

.xzイメージを解凍した後、そのイメージをGlanceサービスに追加します。

[root@controller-hostname ~]# glance image-create --name 'Centos-6' --disk-format qcow2 --container-format bare --is-public=true < CentOS-6-x86_64-GenericCloud-20141129_01.qcow2

Glanceサービスに追加された画像のリストを表示する…

[root@controller-hostname ~]# glance image-show "cirros"
+------------------+--------------------------------------+
| Property | Value |
+------------------+--------------------------------------+
| checksum | 64d7c1cd2b6f60c92c14662941cb7913 |
| container_format | bare |
| created_at | 2015-02-06T12:47:39 |
| deleted | False |
| disk_format | qcow2 |
| id | a338631b-3bb8-43ba-a700-d4648c040a05 |
| is_public | True |
| min_disk | 0 |
| min_ram | 0 |
| name | cirros |
| owner | e7c679bc36ec4c298cf68ecf6d49c1b3 |
| protected | False |
| size | 13167616 |
| status | active |
| updated_at | 2015-02-06T12:47:40 |
+------------------+--------------------------------------+
[root@controller-hostname ~]# glance image-show "Centos-6"
+------------------+--------------------------------------+
| Property | Value |
+------------------+--------------------------------------+
| checksum | 62ac2565e3527377860361f57639f334 |
| container_format | bare |
| created_at | 2015-02-13T06:18:52 |
| deleted | False |
| disk_format | qcow2 |
| id | ac7ffb6d-1594-4a4c-94e7-9d8e70a120a8 |
| is_public | True |
| min_disk | 0 |
| min_ram | 0 |
| name | Centos-6 |
| owner | e7c679bc36ec4c298cf68ecf6d49c1b3 |
| protected | False |
| size | 1151533056 |
| status | active |
| updated_at | 2015-02-13T06:20:29 |
+------------------+--------------------------------------+

コントローラーノードにNovaサービスをインストールします:

次に、コントローラーノードにNovaをインストールします…

[root@controller-hostname ~]# yum install openstack-nova-api openstack-nova-cert openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler python-novaclient
>

「nova」データベースを作成する…

[root@controller-hostname ~]# mysql -u root -p
mysql> CREATE DATABASE nova;
mysql> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'controller-hostname' IDENTIFIED BY 'setpassword';
mysql> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'setpassword';

対応するデータベースを使用し、それに対応する資格情報を提供するようにNovaに指示します…

[root@controller-hostname ~]# openstack-config --set /etc/nova/nova.conf database connection mysql://nova:setpassword@controller-hostname/nova

メッセージブローカー(Qpid)をNovaに接続します…

[root@controller-hostname ~]# openstack-config --set /etc/nova/nova.conf DEFAULT rpc_backend qpid
[root@controller-hostname ~]# openstack-config --set /etc/nova/nova.conf DEFAULT qpid_hostname controller-hostname

「nova」データベースのテーブルを作成する

[root@controller-hostname ~]# su -s /bin/sh -c "nova-manage db sync" nova

KeyStoneでnovaのユーザーを作成

[root@controller-hostname ~]# keystone user-create --name=nova --pass=setpassword --email=nova@controller-hostname
[root@controller-hostname ~]# keystone user-role-add --user=nova --tenant=service --role=admin

KeyStoneを使用してnova認証を構成する

[root@controller-hostname ~]# openstack-config --set /etc/nova/nova.conf DEFAULT auth_strategy keystone
[root@controller-hostname ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_uri http://controller-hostname:5000
[root@controller-hostname ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_host controller-hostname
[root@controller-hostname ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_protocol http
[root@controller-hostname ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_port 35357
[root@controller-hostname ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_user nova
[root@controller-hostname ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_tenant_name service
[root@controller-hostname ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_password setpassword

KeyStoneでnovaを登録する

[root@controller-hostname ~]# keystone service-create --name=nova --type=compute --description="OpenStack Compute"
[root@controller-hostname ~]# keystone endpoint-create --service-id=$(keystone service-list | awk '/ compute / {print $2}') --publicurl=http://controller-hostname:8774/v2/%\(tenant_id\)s --internalurl=http://controller-hostname:8774/v2/%\(tenant_id\)s --adminurl=http://controller-hostname:8774/v2/%\(tenant_id\)s

Nova関連サービスを開始する…

[root@controller-hostname ~]# service openstack-nova-api start
[root@controller-hostname ~]# chkconfig openstack-nova-api on
[root@controller-hostname ~]# service openstack-nova-cert start
[root@controller-hostname ~]# chkconfig openstack-nova-cert on
[root@controller-hostname ~]# service openstack-nova-scheduler start
[root@controller-hostname ~]# chkconfig openstack-nova-scheduler on
[root@controller-hostname ~]# service  openstack-nova-novncproxy start
[root@controller-hostname ~]# chkconfig openstack-nova-novncproxy on
[root@controller-hostname ~]# service  openstack-nova-consoleauth start
[root@controller-hostname ~]# chkconfig openstack-nova-consoleauth on
[root@controller-hostname ~]# service  openstack-nova-conductor start
[root@controller-hostname ~]# chkconfig openstack-nova-conductor on
[root@controller-hostname ~]# service  openstack-nova-metadata-api start
[root@controller-hostname ~]# chkconfig openstack-nova-metadata-api on

注: サービスを開始した後、そのステータスをチェックし、サービスが実際に実行されていることを確認します。いずれかのサービスの開始に失敗した場合は、/ var / log/novaの下のログファイルを確認してください。

また読む:OpenStackNovaServiceのインストールエラーと解決策。

構成とサービスをテストするためのNovaコマンド…

すべての画像を一覧表示するには Glanceサービスに保存されているもの…

[root@controller-hostname ~]# nova image-list
+--------------------------------------+---------------+--------+--------------------------------------+
| ID | Name | Status | Server |
+--------------------------------------+---------------+--------+--------------------------------------+
| ac7ffb6d-1594-4a4c-94e7-9d8e70a120a8 | Centos-6 | ACTIVE | |
| a338631b-3bb8-43ba-a700-d4648c040a05 | cirros | ACTIVE | |
| e8c477ae-7c74-497d-9d9b-5fea1035d899 | testvm-snap1 | ACTIVE | aa7c5535-4259-42f0-8d74-5b26f0d731de |
+--------------------------------------+---------------+--------+--------------------------------------+

すべてのサービスを一覧表示するには…

[root@controller-hostname ~]# nova service-list
+------------------+-------------------------+----------+---------+-------+----------------------------+-----------------+
| Binary | Host | Zone | Status | State | Updated_at | Disabled Reason |
+------------------+-------------------------+----------+---------+-------+----------------------------+-----------------+
| nova-cert | controller-hostname | internal | enabled | up | 2015-02-16T11:06:09.000000 | - |
| nova-scheduler | controller-hostname | internal | enabled | up | 2015-02-16T11:06:07.000000 | - |
| nova-consoleauth | controller-hostname | internal | enabled | up | 2015-02-16T11:06:11.000000 | - |
| nova-conductor | controller-hostname | internal | enabled | up | 2015-02-16T11:06:12.000000 | - |
| nova-console | controller-hostname | internal | enabled | up | 2015-02-16T11:06:12.000000 | - |
+------------------+-------------------------+----------+---------+-------+----------------------------+-----------------+

コントローラーノードのNova-Networkingのセットアップ

この2つのノードのセットアップでは、コントローラーノードとコンピュートノードにNovaネットワーク(レガシー)をインストールします。つまり、複雑なNeutronサービスについて心配する必要はありません。

novaレガシーネットワークを使用するようにNovaを構成します…

[root@controller-hostname ~]# openstack-config --set /etc/nova/nova.conf DEFAULT network_api_class nova.network.api.API
[root@controller-hostname ~]# openstack-config --set /etc/nova/nova.conf DEFAULT security_group_api nova

novaサービスを再開します

[root@controller-hostname ~]# service openstack-nova-api restart
[root@controller-hostname ~]# service openstack-nova-scheduler restart
[root@controller-hostname ~]# service  openstack-nova-conductor restart

VM用のネットワークを作成する

これで、Novaは通信にレガシーネットワークを使用する必要があることを認識しましたが、VMを割り当てる必要があるネットワークとIPアドレスのプールを作成する必要があります。上にスクロールするだけで、コンピュートノードに割り当てられた外部IP(10.180.14.151)を見つけるアーキテクチャ図が表示されます。つまり、VMが使用するには、10.180.14.0ネットワークにサブネットを作成する必要があります。 In this tutorial, let us assume that we need 30 IP addresses for allocation. So the subnet details goes as below…

------------------------------------------------
           TCP/IP NETWORK INFORMATION
------------------------------------------------
IP Entered = ..................: 10.180.14.160
CIDR = ........................: /27
Netmask = .....................: 255.255.255.224
Wildcard Bits = ...............: 0.0.0.31
------------------------------------------------
Network Address = .............: 10.180.14.160
Broadcast Address = ...........: 10.180.14.191
Usable IP Addresses = .........: 30
First Usable IP Address = .....: 10.180.14.161
Last Usable IP Address = ......: 10.180.14.190

For the subnet ‘10.180.14.160/27’, the first usable IP address is 10.180.14.161 and the last usable IP address is 10.180.14.190.

The below command will create a network called ‘private’

[root@controller-hostname ~]# nova network-create private --bridge br100 --multi-host T --fixed-range-v4 10.180.14.160/27

[root@controller-hostname ~]# nova net-list
+--------------------------------------+---------+------------------+
| ID | Label | CIDR |
+--------------------------------------+---------+------------------+
| 60dfd46a-4649-4758-8b8d-88cc562b9b39 | private | 10.180.14.160/27 |
+--------------------------------------+---------+------------------+

Add a security group to the created network to allow SSH connections

[root@controller-hostname ~]# nova secgroup-add-rule default tcp 22 22 0.0.0.0/0
+-------------+-----------+---------+-----------+--------------+
| IP Protocol | From Port | To Port | IP Range | Source Group |
+-------------+-----------+---------+-----------+--------------+
| tcp | 22 | 22 | 0.0.0.0/0 | |
+-------------+-----------+---------+-----------+--------------+

Install Dashboard (Horizon) on Controller node

Now its time to install Horizon service on controller node – provides a portal to manage instances, services, network etc…

[root@controller-hostname ~]# yum install memcached python-memcached mod_wsgi openstack-dashboard

Change the values of CACHES[‘default’][‘LOCATION’] as below

# vi /etc/openstack-dashboard/local_settings
CACHES = {
'default': {
'BACKEND' : 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION' : '127.0.0.1:11211'
}
}

The above changes should match the address and port specified in /etc/sysconfig/memcached

Also modify ‘ALLOWED_HOSTS ‘ attribute to accept connection from your desktop – as that will allow you to access the dashboard via browser.

You have to make sure SELINUX allows connection to the web server

[root@controller-hostname ~]# setsebool -P httpd_can_network_connect on

Start web server and memcached

[root@controller-hostname ~]# service memcached start
[root@controller-hostname ~]# service httpd start
[root@controller-hostname ~]# chkconfig memcached on
[root@controller-hostname ~]# chkconfig httpd on

Try accessing the dashboard service – http://controller-hostname/dashboard

Install Nova on Compute node

Finally, we are done with our installation on Controller node and we’ll now move on to install Nova on Compute node.

Install nova compute service on Compute node..

[root@compute-hostname ]# yum install openstack-nova-compute

Connect to nova database on controller node…

[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf database connection mysql://nova:setpassword@controller-hostname/nova

Setup authentication…

[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT auth_strategy keystone
[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_uri http://controller-hostname:5000
[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_host controller-hostname
[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_protocol http
[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_port 35357
[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_user nova
[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_tenant_name service
[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_password setpassword

Configure Nova to use Qpid message broker for communication

[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT rpc_backend qpid
[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT qpid_hostname controller-hostname

Compute Node should know where the Glance is running, so we need to configure that as well.

[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT glance_host controller-hostname

Start messagebus, libvirtd and nova-compute services

[root@compute-hostname ]# service libvirtd start
[root@compute-hostname ]# chkconfig libvirtd on
[root@compute-hostname ]# chkconfig messagebus on
[root@compute-hostname ]# service messagebus start
[root@compute-hostname ]# service openstack-nova-compute start
[root@compute-hostname ]# chkconfig openstack-nova-compute on

Install Nova-Networking for Computer node

[root@compute-hostname ]# yum install openstack-nova-network openstack-nova-api

Configure network api, security group, firewall, network size, dhcp etc..

[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT network_api_class nova.network.api.API
[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT security_group_api nova
[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT network_manager nova.network.manager.FlatDHCPManager
[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT firewall_driver nova.virt.libvirt.firewall.IptablesFirewallDriver
[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT network_size 254
[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT allow_same_net_traffic False
[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT multi_host True
[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT send_arp_for_ha True
[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT share_dhcp_address True
[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT force_dhcp_release True

Configure network bridge and interfaces

If you remember we created a network bridge ‘br100 ‘ in controller node. For this tutorial, the external IP address of the compute node is 10.180.14.151 (configured on eth1 network interface) and the subnet is ‘10.180.14.160/27

[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT flat_network_bridge br100
[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT flat_interface eth1
[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT public_interface eth1

注: Remember to change the network interface (eth1) to the corresponding interface of your compute node.

Start the services…

[root@compute-hostname ]# service openstack-nova-api start
[root@compute-hostname ]# service openstack-nova-network start
[root@compute-hostname ]# service openstack-nova-metadata-api start
[root@compute-hostname ]# chkconfig openstack-nova-api on
[root@compute-hostname ]# chkconfig openstack-nova-network on
[root@compute-hostname ]# chkconfig openstack-nova-api on

Well, we are done with installations on both the Controller and Compute node. Let us now trying booting VM, but before that you should know the below commands.

List of networks created…

[root@controller-hostname ~]# nova net-list
+--------------------------------------+---------+------------------+
| ID | Label | CIDR |
+--------------------------------------+---------+------------------+
| 60dfd46a-4649-4758-8b8d-88cc562b9b39 | private | 10.180.14.160/27 |
+--------------------------------------+---------+------------------+

List of images stored in Glance…

[root@controller-hostname ~]# nova image-list
+--------------------------------------+---------------+--------+--------------------------------------+
| ID | Name | Status | Server |
+--------------------------------------+---------------+--------+--------------------------------------+
| ac7ffb6d-1594-4a4c-94e7-9d8e70a120a8 | Centos-6 | ACTIVE | |
| a338631b-3bb8-43ba-a700-d4648c040a05 | cirros | ACTIVE | |
| e8c477ae-7c74-497d-9d9b-5fea1035d899 | henryvm-snap1 | ACTIVE | aa7c5535-4259-42f0-8d74-5b26f0d731de |
+--------------------------------------+---------------+--------+--------------------------------------+

List of flavors available…

[root@controller-hostname ~]# nova flavor-list
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
| ID | Name | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public |
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
| 1 | m1.tiny | 512 | 1 | 0 | | 1 | 1.0 | True |
| 2 | m1.small | 2048 | 20 | 0 | | 1 | 1.0 | True |
| 3 | m1.medium | 4096 | 40 | 0 | | 2 | 1.0 | True |
| 4 | m1.large | 8192 | 80 | 0 | | 4 | 1.0 | True |
| 5 | m1.xlarge | 16384 | 160 | 0 | | 8 | 1.0 | True |
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+

List of security groups created…

[root@controller-hostname ~]# nova secgroup-list
+----+---------+-------------+
| Id | Name | Description |
+----+---------+-------------+
| 1 | default | default |
+----+---------+-------------+

You may want to generate SSH keys to allow users to login to the newly created instance.

[root@controller-hostname ~]# ssh-keygen

Add the SSH public key to the nova keypair list..

[root@controller-hostname ~]# nova keypair-add --pub-key ~/.ssh/id_rsa.pub test-key

View the list of key pairs created…

[root@controller-hostname ~]# nova keypair-list
+----------+-------------------------------------------------+
| Name | Fingerprint |
+----------+-------------------------------------------------+
| test-key | b0:e1:ff:a5:1b:b0:ff:14:d5:46:13:bc:b6:ba:97:9b |
+----------+-------------------------------------------------+

Create an Instance

Based on the output from above commands, you can create a new instance as below:

[root@controller-hostname ~]# nova boot --flavor m1.small --image Centos-6 --nic net-id=60dfd46a-4649-4758-8b8d-88cc562b9b39 --security-group default --key-name test-key myfirstvm
+--------------------------------------+-------------------------------------------------+
| Property | Value |
+--------------------------------------+-------------------------------------------------+
| OS-DCF:diskConfig | MANUAL |
| OS-EXT-AZ:availability_zone | nova |
| OS-EXT-SRV-ATTR:host | - |
| OS-EXT-SRV-ATTR:hypervisor_hostname | - |
| OS-EXT-SRV-ATTR:instance_name | instance-00000016 |
| OS-EXT-STS:power_state | 0 |
| OS-EXT-STS:task_state | - |
| OS-EXT-STS:vm_state | building |
| OS-SRV-USG:launched_at | - |
| OS-SRV-USG:terminated_at | - |
| accessIPv4 | |
| accessIPv6 | |
| adminPass | hEMdKAnLs6XX |
| config_drive | |
| created | 2015-02-18T08:56:32Z |
| flavor | m1.small (2) |
| hostId | |
| id | a9735dd7-c601-4209-a86a-0575711239d1 |
| image | Centos-6 (ac7ffb6d-1594-4a4c-94e7-9d8e70a120a8) |
| key_name | test-key |
| metadata | {} |
| name | myfirstvm |
| os-extended-volumes:volumes_attached | [] |
| progress | 0 |
| security_groups | default |
| status | BUILD |
| tenant_id | e7c679bc36ec4c298cf68ecf6d49c1b3 |
| updated | 2015-02-18T08:56:32Z |
| user_id | 8607e0ccc8ee407daf50c1985616b153 |
+--------------------------------------+-------------------------------------------------+

Check if the state of the VM is “ACTIVE” using the below command…

[root@controller-hostname ~]# nova list
+--------------------------------------+------------------+--------+------------+-------------+-----------------------+
| ID | Name | Status | Task State | Power State | Networks |
+--------------------------------------+------------------+--------+------------+-------------+-----------------------+
| 8aaa3873-09c5-48f0-9d1e-cb4401e44583 | Cluster-headnode | ACTIVE | - | Running | private=10.180.14.162 |
| a9735dd7-c601-4209-a86a-0575711239d1 | myfirstvm | ACTIVE | - | Running | private=10.180.14.163 |
+--------------------------------------+------------------+--------+------------+-------------+-----------------------+

The new VM called “myfirstvm ” is running and the allocated IP address is 10.180.14.163 .

Login to an instance

[root@controller-hostname ~]# cd .ssh/
[root@controller-hostname .ssh]# ssh -i id_rsa [email protected]
Last login: Wed Feb 18 09:01:07 2015 from 10.180.10.132
[centos@myfirstvm ~]$ hostname
myfirstvm

注: Since we installed “Horizon” service on controller node, you should be able to create an instance via OpenStack dashboard. That’s super easy!

What is the password for Cirros?

In case, if you have used Cirros image to create an instance, then you must login with username as ‘cirros’ and password as ‘cubswin:)’ (of course, without single quotes).

To know information about the running VM, you can just issue the below command.

[root@controller-hostname ~]# nova show myfirstvm
+--------------------------------------+----------------------------------------------------------+
| Property | Value |
+--------------------------------------+----------------------------------------------------------+
| OS-DCF:diskConfig | MANUAL |
| OS-EXT-AZ:availability_zone | nova |
| OS-EXT-SRV-ATTR:host | gcompute.blr.cdac.in |
| OS-EXT-SRV-ATTR:hypervisor_hostname | gcompute.blr.cdac.in |
| OS-EXT-SRV-ATTR:instance_name | instance-00000016 |
| OS-EXT-STS:power_state | 1 |
| OS-EXT-STS:task_state | - |
| OS-EXT-STS:vm_state | active |
| OS-SRV-USG:launched_at | 2015-02-18T08:56:54.000000 |
| OS-SRV-USG:terminated_at | - |
| accessIPv4 | |
| accessIPv6 | |
| config_drive | |
| created | 2015-02-18T08:56:32Z |
| flavor | m1.small (2) |
| hostId | bd672087b1933d00d10e9d4f85cbac0326ebf3de73a0ce093c0d1838 |
| id | a9735dd7-c601-4209-a86a-0575711239d1 |
| image | Centos-6 (ac7ffb6d-1594-4a4c-94e7-9d8e70a120a8) |
| key_name | test-key |
| metadata | {} |
| name | myfirstvm |
| os-extended-volumes:volumes_attached | [] |
| private network | 10.180.14.163 |
| progress | 0 |
| security_groups | default |
| status | ACTIVE |
| tenant_id | e7c679bc36ec4c298cf68ecf6d49c1b3 |
| updated | 2015-02-18T08:56:41Z |
| user_id | 8607e0ccc8ee407daf50c1985616b153 |
+--------------------------------------+----------------------------------------------------------+

Stop an Instance

If you want to stop a running instance, here’s how you can do that.

[root@controller-hostname ~]# nova stop myfirstvm

If you want to delete an instance completely, then here’s the command.

[root@controller-hostname ~]# nova delete myfirstvm

How to add another compute node to the OpenStack environment?
It’s simple! Just follow the same steps that we used for Compute-hostname ノード。

Do you like this tutorial? Share it with OpenStack community by clicking the share icons at the top.

And the Bonus is here…

    Download Free ebook on OpenStack Icehouse Installation! Download OpenStack Command Line Interface Cheat Sheet! – Most Commonly used Commands

Cent OS
  1. CentOS6NetInstallガイド| NetInstallを介してCentOS6をインストールします

  2. CentOS 8にGrafanaをインストールする-ステップバイステップガイド?

  3. CentOS 8にFreeIPAをインストールする-ステップバイステップガイド?

  1. CentOS 8にClamAVをインストールします-ステップバイステップガイド?

  2. CentOS 8にHAProxyをインストールする-ステップバイステップガイド?

  3. CentOS 8にSteamをインストールする-ステップバイステップガイド?

  1. CentOS 8にDiscordをインストールする-ステップバイステップガイド?

  2. CentOS 8にTransmissionをインストールする-ステップバイステップガイド?

  3. CentOS 8にMattermostをインストールする-ステップバイステップガイド?