OpenStack 安裝 Keystone

AskaJohnny發表於2022-05-17

OpenStack 安裝 Keystone

本篇主要記錄一下 如何安裝 openstack的 第一個元件 keystone 認證授權元件

openstack 版本 我選的是queens 版本

image-20220514133245410

1.OpenStack 官網

看了一下官網 文件還是蠻全的,我採用 centos7 來做實驗

https://docs.openstack.org/keystone/queens/install/

image-20220516102055644

2.KeyStone 概述

Keystone 是openstack 體系下面的認證、授權、和 目錄服務管理 的一個重要的元件,keystone 通常是我們接觸openstack 的第一個元件,它可以管理其他openstack service ,每個服務都可以有一個或者多個endpoints,並且 endpoint 被分為 3種型別: admin 、internal、public, 通過名稱我們也能大概知道 就是其他服務所暴露的終端地址 給不通場景使用,public 一般是對外的 internal 一般是服務之間的通訊地址,admin 一般管理員操作的地址,並且 endpoint 具有 region 型別,既可以對 endpoint 進行局域劃分 ,我們預設使用RegionOne

具體看 https://docs.openstack.org/keystone/queens/install/

3.安裝 OpenStack packages

前置 需要準備一個 centos7 系統

  1. Upgrade the packages on all nodes:

    yum upgrade
    

    注意:If the upgrade process includes a new kernel, reboot your host to activate it.

  2. Install the appropriate OpenStack client for your version.

    For CentOS 7 and RHEL 7

    # yum install python-openstackclient
    

    For CentOS 8 and RHEL 8

    # yum install python3-openstackclient
    
  3. RHEL and CentOS enable SELinux by default. Install the openstack-selinux package to automatically manage security policies for OpenStack services:

    # yum install openstack-selinux
    

​ 或者通過手動關閉selnux

4.Network Time Protocol (NTP ) (必須

openstack 各個元件之間 需要進行頻繁的呼叫,所以他們的 時間一點要保持一致,所以這個 NTP 必須要進行處理

centos7 已經推薦使用 chrony 了 ,我看 openstack 官方文件也是這樣操作的

4.1 安裝 chrony

yum -y install chrony

4.2 編輯/etc/chrony.conf

#註釋 這4個
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst

#新增阿里雲 ntp 伺服器
server ntp1.aliyun.com iburst 

#允許同步的網段 我的是這個,根據情況自己配置
allow 192.168.56.0/24

4.3 啟動 chrony

注意是 chronyd.service

systemctl enable chronyd.service
systemctl start chronyd.service

4.4 執行同步 chronyc sources -v

image-20220516104845674

4.5 其他nodes 節點也需要安裝 chrony

nodes 其他節點 直接同步 上面的 controller節點即可

server 192.168.56.30  

image-20220516105155865

注意: 由於chrony 使用 udp 埠 123 和 323 ,所以 注意關閉 防火牆,或者把埠開啟!

5. 安裝 mariadb

由於 keystone 中相關的 services 資訊 都需要儲存的地方 ,所以 需要安裝 mariadb ,不過也支援其他

5.1 Install the packages: 安裝 mariadb 包

# yum install mariadb mariadb-server python2-PyMySQL

5.2 編輯 /etc/my.cnf.d/openstack.cnf

Create and edit the /etc/my.cnf.d/openstack.cnf file (backup existing configuration files in /etc/my.cnf.d/ if needed) and complete the following actions:

  • Create a [mysqld] section, and set the bind-address key to the management IP address of the controller node to enable access by other nodes via the management network. Set additional keys to enable useful options and the UTF-8 character set:

    [mysqld]
    bind-address = 192.168.56.30
    
    default-storage-engine = innodb
    innodb_file_per_table = on
    max_connections = 4096
    collation-server = utf8_general_ci
    character-set-server = utf8
    

​ 注意 在 /etc/my.cnf.d/openstack.cnf 下面進行編輯 然後 bind-address 可以指定為 controller 節點ip

5.3 啟動 mariadb 服務

systemctl enable mariadb.service
systemctl start mariadb.service

5.4 安全設定嚮導

mysql_secure_installation  #一步步配置即可

image-20220515104136096

6.安裝 rabbitmq (本篇可選,由於本篇只是安裝keystone)

OpenStack 使用訊息佇列來協調服務之間的操作和狀態資訊。訊息佇列服務通常在控制器節點上執行。OpenStack支援多種訊息佇列服務,包括RabbitMQ,Qpid和ZeroMQ。

6.1 安裝 rabbitmq-server

yum install rabbitmq-server

6.2 啟動

systemctl enable rabbitmq-server.service
systemctl start rabbitmq-server.service

6.3 配置 openstack rabiitmq 使用者

rabbitmqctl add_user openstack RABBIT_PASS #注意替換 RABBIT_PASS 密碼

6.4 Permit configuration, write, and read access for the openstack user:

rabbitmqctl set_permissions openstack ".*" ".*" ".*"

7. 安裝 Keystone 和 必要配置

官網地址:https://docs.openstack.org/keystone/queens/install/index-rdo.html

image-20220516111117222

7.1 配置 mysql

上面已經安裝了 mariadb 服務,這裡需要開始對它進行配置

Before you install and configure the Identity service, you must create a database.

  1. 使用root使用者登入 mysql :

    $ mysql -u root -p
    
  2. 建立 keystone database:

    MariaDB [(none)]> CREATE DATABASE keystone;
    
  3. Grant proper access to the keystone database:

    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';
    

​ Replace KEYSTONE_DBPASS with a suitable password.

image-20220516061832061

7.2 安裝 keystone 元件

7.2.1 安裝 keystone
yum install openstack-keystone httpd mod_wsgi
安裝過程中的報錯:

Error: Package: python2-qpid-proton-0.22.0-1.el7.x86_64 (centos-openstack-queens)
Requires: qpid-proton-c(x86-64) = 0.22.0-1.el7
Available: qpid-proton-c-0.14.0-2.el7.x86_64 (extras)
qpid-proton-c(x86-64) = 0.14.0-2.el7
Available: qpid-proton-c-0.17.0-4.el7.x86_64 (centos-openstack-queens)
qpid-proton-c(x86-64) = 0.17.0-4.el7
Available: qpid-proton-c-0.22.0-1.el7.x86_64 (centos-openstack-queens)
qpid-proton-c(x86-64) = 0.22.0-1.el7
Installing: qpid-proton-c-0.35.0-1.el7.x86_64 (epel)
qpid-proton-c(x86-64) = 0.35.0-1.el7
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest

包衝突導致的相容錯誤單獨選定需要的版本進行安裝即可

`解決方案:yum install -y python2-qpid-proton-0.22.0-1.el7.x86_64

安裝完成後 /etc/keyston 就存在了

image-20220516062338960

7.2.2 編輯 /etc/keystone/keystone.conf 連線 mysql
[database]
# ...
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone 

注意 controller 是你的 本機ip 可以配置掉 /etc/hosts中

7.2.3 token provider
[token]
# ...
provider = fernet
7.2.4 同步 keystone db
su -s /bin/sh -c "keystone-manage db_sync" keystone
7.2.5 初始化 fernet key
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
7.2.6 Bootstrap the Identity service:

注意替換 ADMIN_PASS

keystone-manage bootstrap --bootstrap-password ADMIN_PASS \
  --bootstrap-admin-url http://controller:5000/v3/ \
  --bootstrap-internal-url http://controller:5000/v3/ \
  --bootstrap-public-url http://controller:5000/v3/ \
  --bootstrap-region-id RegionOne

7.3 配置 Apache Http 服務

7.3.1 編輯 /etc/httpd/conf/httpd.conf
ServerName controller
7.3.2 建立 ln -s

Create a link to the /usr/share/keystone/wsgi-keystone.conf file:

ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
7.3.3 啟動 httpd
systemctl enable httpd.service
systemctl start httpd.service
7.3.4 暴露賬號到環境變數中

為了可以執行 openstack 命令

export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS #這個是上面 keystone-manage bootstrap 指定的 
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3

8.建立域 專案、使用者、角色 等

8.1 建立 域

openstack domain create --description "An Example Domain" example

8.2 建立專案

openstack project create --domain default --description "Service Project" myservice

8.3 建立角色 關聯使用者

#建立 使用者
openstack user create --domain default   --password ADMIN_PASS myuser

#建立 角色
openstack role create myrole

#為servce 專案指定使用者角色
openstack role add --project service --user myuser myrole #為service專案指定使用者角色

image-20220516112741954

9.驗證 KeyStone 服務

9.1 驗證 admin 使用者

unset OS_AUTH_URL OS_PASSWORD
openstack --os-auth-url http://controller:5000/v3 --os-project-domain-name Default --os-user-domain-name Default --os-project-name admin --os-username admin token issue 

image-20220516113237735

9.2 驗證 myuser 使用者

openstack --os-auth-url http://controller:5000/v3 \
  --os-project-domain-name Default --os-user-domain-name Default \
  --os-project-name myservice --os-username myuser token issue

image-20220516113522940

至此 openstack keystone 元件已經安裝完成了。。

總結

本篇主要記錄一下 openstack queens 版本 keystone 元件的安裝過程 被領導催促要學習openstack 我也很無奈。

image-20220516114617656

歡迎大家訪問 個人部落格 Johnny小屋

相關文章