記事のディレクトリ
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、验证