OpenStack-Keystoneコンポーネントのデプロイメント「Tバージョンのデプロイメント」

1.注意が必要な事項

1.1OpenStackコンポーネントのインストール順序

1、Keystone(apache)
2、glance
3、nova
4、neutron
  • openstackコンポーネントをデプロイするときは、最初に認証サービス(keystone)をインストールする必要があり、認証サービスはApacheによって実行されます。インストールが完了したら、アカウントを作成および管理し、ミラーサービス(glance)をインストールしてコンピューティングできます。サービス(nova)、およびネットワークサービス(neutron)

1.2管理とクライアントの概要

  • その中で、コンピューティングサービスとネットワークサービスは管理側とクライアントに分かれているため、オープンスタックの管理側にコンピューティングサービスとネットワークサービスの管理側をインストールし、ノードにコンピューティングサービスとネットワークサービスのクライアントをインストールする必要があります。仮想マシンが作成されるノード、そして最後にダッシュボードサービスをインストールすると、openstackのさまざまなコンポーネントのAPIがapacheを介して実行されます。
  • openstackの管理側は、
    仮想マシン作成するプロセスのスケジューリングを担当します。openstack管理側を介して仮想マシンを作成する関連データは、最終的にmysql(mariadb)に記録されます。
    ノードノードには、データを書き込む権限がありませんデータベース、制御側のみが許可を持ち、ノードノード制御側との通信はrabbitmqを介した間接通信です。ノードノードはrabbitmqをリッスンし、制御側もrabbitmqをリッスンします。制御側は命令を送信します。 rabbitmqへの仮想マシンを作成します。rabbitmqの指定されたキューをリッスンしているノードノードがメッセージを受信し、仮想マシンを作成します。

2つ目は、OpenStack-Keystoneコンポーネントのデプロイメントプロセスです。

2.1データベースインスタンスとデータベースユーザーを作成する

[root@ct ~]# mysql -uroot -pabc123
...
MariaDB [(none)]> create database keystone;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'KEYSTONE_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'KEYSTONE_DBPASS';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit
Bye

2.2 Keystone、データベース、Apacheをインストールして構成します

2.2.1 keystone、httpd、mod_wsgiをインストールします

  • mod_wsgiパッケージの機能は、apacheがpythoneプログラムのコンポーネントをプロキシできるようにすることです。APIを含むopenstackのすべてのコンポーネントはpythonで記述されていますが、アクセスはapacheであり、apacheは処理のためにリクエストをpythonに転送します。これらのパッケージは、コントローラーノードにのみインストールされます
[root@ct ~]# yum -y install openstack-keystone httpd mod_wsgi
[root@ct ~]# cp -a /etc/keystone/keystone.conf{,.bak}
[root@ct ~]# grep -Ev "^$|#" /etc/keystone/keystone.conf.bak > /etc/keystone/keystone.conf
#通过pymysql模块访问mysql,指定用户名密码、数据库的域名、数据库名
[root@ct ~]# openstack-config --set /etc/keystone/keystone.conf database connection mysql+pymysql://keystone:KEYSTONE_DBPASS@ct/keystone
#指定token的提供者;提供者就是keystone自己本身
[root@ct ~]# openstack-config --set /etc/keystone/keystone.conf token provider fernet
#Fernet:一种安全的消息传递格式

2.2.2認証サービスデータベースを初期化する

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

2.2.3フェルネットキーリポジトリを初期化する

  • 次のコマンドは2つのキーを生成します。生成されたキーは、データを暗号化するために/ etc / keystone /ディレクトリに配置されます。
[root@ct ~]# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
[root@ct ~]# keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

2.2.4ブートストラップID認証サービスの構成

[root@ct ~]# keystone-manage bootstrap --bootstrap-password ADMIN_PASS \
--bootstrap-admin-url http://ct:5000/v3/ \
--bootstrap-internal-url http://ct:5000/v3/ \
--bootstrap-public-url http://ct:5000/v3/ \
--bootstrap-region-id RegionOne		#指定一个区域名称

#此步骤是初始化openstack,会把openstack的admin用户的信息写入到mysql的user表中,以及url等其他信息写入到
mysql的相关表中;
 
#admin-url是管理网(如公有云内部openstack管理网络),用于管理虚拟机的扩容或删除;如果共有网络和管理网是一个
网络,则当业务量大时,会造成无法通过openstack的控制端扩容虚拟机,所以需要一个管理网; 

#internal-url是内部网络,进行数据传输,如虚拟机访问存储和数据库、zookeeper等中间件,这个网络是不能被外网
访问的,只能用于企业内部访问 

#public-url是共有网络,可以给用户访问的(如公有云) #但是此环境没有这些网络,则公用同一个网络 

#5000端口是keystone提供认证的端口 

#需要在haproxy服务器上添加一条listen 

#各种网络的url需要指定controler节点的域名,一般是haproxy的vip的域名(高可用模式)

2.2.5 ApacheHTTPサーバーを構成する

[root@ct ~]# echo "ServerName ct" >> /etc/httpd/conf/httpd.conf

2.2.6構成ファイルの作成

  • mod_wsgiパッケージをインストールすると、wsgi-keystone.confファイルが生成されます。仮想ホストがファイルに構成され、ポート5000が監視されます。mod_wsgiはPythonのゲートウェイです。
[root@ct ~]# ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/

2.2.7サービスの開始

[root@ct ~]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@ct ~]# systemctl start httpd

2.2.8管理者アカウントの環境変数を構成します

  • これらの環境変数はロールとプロジェクトの作成に使用されますが、ロールとプロジェクトの作成には認証情報が必要であるため、ユーザー名やパスワードなどの認証情報は、openstackがログインして認証に合格したことを欺くために、環境変数を介して宣言されます。役割を作成できます。
  • つまり、管理ユーザーの認証情報は、openstackの非対話型操作を実現するために環境変数を宣言することにより、検証のためにopenstackに渡されます。
[root@ct ~]# cat >> ~/.bashrc << EOF
> export OS_USERNAME=admin
> export OS_PASSWORD=ADMIN_PASS
> export OS_PROJECT_NAME=admin
> export OS_USER_DOMAIN_NAME=Default
> export OS_PROJECT_DOMAIN_NAME=Default
> export OS_AUTH_URL=http://ct:5000/v3
> export OS_IDENTITY_API_VERSION=3
> export OS_IMAGE_API_VERSION=2
> EOF
[root@ct ~]# source ~/.bashrc

2.3いくつかの操作を実行するためのopenstackコマンド

  • 環境変数を構成することにより、openstackコマンドを使用していくつかの操作を実行できます

2.3.1OpenStackユーザーのリストを表示する

[root@ct ~]# openstack user list
+----------------------------------+-------+
| ID                               | Name  |
+----------------------------------+-------+
| beafd9c73309485381c6c6754d37f771 | admin |
+----------------------------------+-------+

ここに画像の説明を挿入します

2.3.2 OpenStackドメイン、プロジェクト、ユーザー、およびロールを作成する

  • プロジェクト(プロジェクト)を作成し、指定されたドメイン(ドメイン)で作成し、説明情報を指定します。プロジェクト名はサービスです(openstackドメインリストを使用してクエリを実行できます)
[root@ct ~]# openstack project create --domain default --description "Service Project" service
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Service Project                  |
| domain_id   | default                          |
| enabled     | True                             |
| id          | 600dd444a18346e9a8c6c854b9a4f19e |
| is_domain   | False                            |
| name        | service                          |
| options     | {}                               |
| parent_id   | default                          |
| tags        | []                               |
+-------------+----------------------------------+

ここに画像の説明を挿入します

2.3.3ロールを作成します(openstackロールリストを使用して表示できます)

[root@ct ~]# openstack role create user
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | None                             |
| domain_id   | None                             |
| id          | cac8d79a2b4a43acbd3004f718acf547 |
| name        | user                             |
| options     | {}                               |
+-------------+----------------------------------+
  • openstackの役割のリストを表示する
[root@ct ~]# openstack role list
+----------------------------------+--------+
| ID                               | Name   |
+----------------------------------+--------+
| 3be0345b4d124e7fbb318fa788ca3f7e | member |
| 429c71a299da400fa56d3113f8fb5bf1 | reader |
| 6b2c8f17071342c8bef3cd9379267b8a | admin  |
| cac8d79a2b4a43acbd3004f718acf547 | user   |
+----------------------------------+--------+

# admin为管理员
# member为 租户
# user:用户

ここに画像の説明を挿入します

2.3.4パスワードを指定せずにトークン情報を取得できるか確認する

  • 検証および認証サービス
[root@ct ~]# openstack token issue

ここに画像の説明を挿入します

3、まとめ

  • Keystoneコンポーネントは、OpenStackクラスター内の統合された認証および承認モジュールとして使用されます。そのコア機能は、ユーザー(ユーザー)、テナント(テナント)、ロール(ロール)、トークン(トークン/証明書)を制御することです(手動のコンパイルとデプロイはこの機能によって拡張されます)
1.User:使用 openstack 的用户。 

2.Tenant:租户,可以理解为一个人、项目或者组织拥有的资源的合集。在一个租户中可以拥有很多个用户,这些用户
可以根据权限的划分使用租户中的资源。 

3.Role:角色,用于分配操作的权限。角色可以被指定给用户,使得该用户获得角色对应的操作权限。 

4.Token:指的是一串比特值或者字符串,用来作为访问资源的记号。Token 中含有可访问资源的范围和有效时间,token是
用户的一种凭证,需要使用正确的用户名和密码向 Keystone 服务申请才能得到 token。

手動デプロイメントモードを使用してOpenStackを構築するというアイデア:

1、分模块部署
2、部署keystone模块的基础环境(下载依赖包、组件包、第三方工具/插件)
3、创建、开启此模块的功能
(以keystone为例,创建并初始化认证数据库、修改配置文件、初始化密钥-fernet格式、配置身份认证服务)
4、验证

おすすめ

転載: blog.csdn.net/weixin_42449832/article/details/113362518