Openstack學習筆記(三):keystone的安裝與配置

weixin_34019929發表於2017-03-31

OpenStack簡介

OpenStack既是一個社群,也是一個專案和一個開源軟體,它提供了一個部署雲的操作平臺或工具集(IaaS)。其宗旨在於:幫助組織執行為虛擬計算或儲存服務的雲,為公有云、私有云提供可擴充套件的、靈活的雲端計算。
OpenStack主要包含以下幾個元件,各個元件的功能如下,其中Nova,Keyston,Neutron,Glance,DashBoard為必須裝的元件,其餘可以選擇性安裝,圖為OpenStack生態系統。

  • Nova 計算管理服務,支撐虛擬機器執行
  • Keystone 提供所有元件的認證
  • Neutron 提供網路支援
  • Glance 提供給映象服務
  • DashBoard 提供WEB管理介面服務
  • Swift 提供物件儲存
  • Cinder 提供擴充套件硬碟給nova
  • Ceilometer 監控cinder,neutron,nova,glance執行並計量
  • Heat 支援雲平臺資源自動部署,叢集服務
4609863-766cf6cba9b42806.png

OpenStack安裝配置

由於OpenStack的各個模組都需要通過KeyStone來進行認證,所以在配置安裝OpenStack過程中需要主要,安裝其他模組之前必須先進行安裝KeyStone模組,本次安裝步驟如下:

  • 配置認證服務KeyStone
  • 配置映象服務Glance
  • 配置計算服務Nova
  • 配置網路服務Neutron
  • 配置Web管理服務DashBoard

配置認證服務KeyStone

主要分為以下幾步

  • 安裝配置認證服務
  • 建立使用者、租戶和角色

安裝配置認證服務

KeyStone只需要在controller上面進行配置,執行yum指令即可安裝,安裝成功後需要進行資料庫相關配置,還需要對相關許可權進行配置

  • 安裝KeyStone
    yum install -y openstack-keystone python-opnstackclient
4609863-6ca583636f2c3e77.png
安裝完成
4609863-544af0bb76aaa864.png
執行命令後該配置檔案會多出這行資料
  • 配置資料庫使用者
    [root@controller ~]# mysql -u root -p000000
    MariaDB [(none)]> create database keystone;
    MariaDB [(none)]> grant all privileges on keystone.* to keystone@'localhost' identified by '000000';
    MariaDB [(none)]> grant all privileges on keystone.* to keystone@'%' identified by '000000';
    MariaDB [(none)]> flush privileges;
    MariaDB [(none)]> exit;
4609863-a09a0ef39a68414b.png
資料庫與使用者均建立成功
  • 為認證服務建立資料庫表
    [root@controller ~]# su -s /bin/sh -c "keystone-manage db_sync" keystone
4609863-5816ba840ef60626.png
表建立成功
  • 定義配置授權令牌
    [root@controller ~]# ADMIN_TOKEN=$(openssl rand -hex 10)
    [root@controller ~]# echo $ADMIN_TOKEN
    3a4756d6a595a5d6794c
    [root@controller ~]# openstack-config --set /etc/keystone/keystone.conf DEFAULT admin_token $ADMIN_TOKEN
4609863-d99ce6e363c7eb26.png
配置檔案首行會出現令牌
  • 相關許可權配置
    [root@controller ~]# keystone-manage pki_setup --keystone-user keystone --keystone-group keystone
    [root@controller ~]# chown -R keystone:keystone /etc/keystone/ssl
    [root@controller ~]# chmod -R o-rwx /etc/keystone/ssl
4609863-1232b25237dd054b.png
配置完成
  • 啟動KeyStone服務並設定自啟動
    [root@controller ~]# systemctl restart openstack-keystone
    [root@controller ~]# systemctl enable openstack-keystone

  • 建立計劃任務並定期執行
    [root@controller ~]# (crontab -l -u keystone 2>&1 | grep -q token_flush) || echo '@hourly /usr/bin/keystone-manage token_flush > /var/log/keystone/keystone-tokenflush.log 2>&1' >> /var/spool/cron/keystone
    [root@controller ~]# crontab -l -u keystone
    @hourly /usr/bin/keystone-manage token_flush > /var/log/keystone/keystone-tokenflush.log 2>&1

建立使用者、租戶和角色

  • 配置環境變數,編輯admin-openrc.sh檔案,並寫入以下幾句,儲存後執行
    [root@controller ~]# vi admin-openrc.sh
    export OS_TOKEN=3a4756d6a595a5d6794c
    export OS_URL=http://controller:35357/v3
    export OS_USERNAME=admin
    export OS_PASSWORD=000000
    export OS_AUTH_URL=http://controller:35357/v3
    export OS_PROJECT_NAME=admin
    export OS_IDENTITY_API_VERSION=3
    [root@controller ~]# source admin-openrc.sh
4609863-d85c29f4e0290a90.png
驗證
  • 通過openstackclient建立服務及對應的endpoint
    [root@controller ~]# openstack
    (openstack) service create --name keystone --description "Openstack Identity" identity
    (openstack) endpoint create --region RegionOne identity public http://controller:5000/v3
    (openstack) endpoint create --region RegionOne identity admin http://controller:35357/v3
    (openstack) endpoint create --region RegionOne identity internal http://controller:35357/v3
4609863-3226aa7cc3601712.png
驗證
  • 建立admin相關專案、使用者、角色
    (openstack) project create --domain default --description "Admin Project" admin
    (openstack) user create --domain default --password 000000 --email admin@localhost admin
    (openstack) role create admin
    (openstack) role add --project admin --user admin admin
4609863-be1418b1dc581009.png
Paste_Image.png
  • 建立demo相關專案、使用者、角色
    (openstack) project create --domain default --description "Demo Project" demo
    (openstack) user create --domain default --password 000000 demo
    (openstack) role create demo
    (openstack) role add --project demo --user demo user
4609863-44b588d010134312.png

4609863-4020eabed9dade0c.png
  • 建立service相關專案、使用者、角色
    (openstack) project create --domain default --description="Service Project" service
4609863-01aea577530ac7df.png

驗證認證服務

  • 重置環境變數並獲取token
    [root@controller ~]# unset OS_TOKEN
    [root@controller ~]# unset OS_URL
    [root@controller ~]# openstack token issue
4609863-460ffa0b4bcb5e2c.png
成功

配置映象服務Glance

Glance映象服務實現發現、註冊、獲取虛擬機器映象和映象後設資料,映象資料支援儲存多種的儲存系統,可以是簡單檔案系統、物件儲存系統等。
Glance映象服務是典型的C/S架構,Glance架構包括glance-CLIent、Glance、Glance Store。Glance包括主要包括REST API、資料庫抽閒層(DAL)、域控制器(Glance Domain controller)、註冊層(Registry Layer),Glance 使用集中資料庫(Glance DB)在Glance各元件直接共享資料。
該過程僅需在controller節點佈置。

  • 下載安裝Glance
    [root@controller ~]# yum install openstack-glance -y
  • 修改相關配置檔案,設定資料庫連線以及keystone相關設定
    openstack-config --set /etc/glance/glance-api.conf database connection mysql://glance:000000@controller/glance
    openstack-config --set /etc/glance/glance-registry.conf database connection mysql://glance:000000@controller/glance
    openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_uri http://controller:5000
    openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_url http://controller:35357
    openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_plugin password
    openstack-config --set /etc/glance/glance-api.conf keystone_authtoken username glance
    openstack-config --set /etc/glance/glance-api.conf keystone_authtoken project_domain_id default
    openstack-config --set /etc/glance/glance-api.conf keystone_authtoken user_domain_id default
    openstack-config --set /etc/glance/glance-api.conf keystone_authtoken project_name service
    openstack-config --set /etc/glance/glance-api.conf keystone_authtoken password 000000
    openstack-config --set /etc/glance/glance-api.conf paste_deploy flavor keystone
    openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_uri http://controller:5000
    openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_url http://controller:35357
    openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_plugin password
    openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken username glance
    openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken project_domain_id default
    openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken user_domain_id default
    openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken project_name service
    openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken password 000000
    openstack-config --set /etc/glance/glance-registry.conf paste_deploy flavor keystone
    配置成功後兩個檔案均會多出以下幾行
    4609863-0f6eb39dd726c6ac.png
4609863-b312ffb398afd54f.png
4609863-e56bca8ca5961719.png
  • 配置資料庫相關許可權及表
    [root@controller ~]# mysql -u root -p000000
    create database glance;
    grant all privileges on glance.* to 'glance'@'localhost' identified by '000000';
    grant all privileges on glance.* to 'glance'@'%' identified by '000000';
    flush privileges;
    exit
    [root@controller ~]# su -s /bin/sh -c "glance-manage db_sync" glance
4609863-4b814781ab50cf24.png
驗證
  • 建立相關使用者
    [root@controller ~]# openstack
    (openstack) user create --password 000000 --email glance@localhost glance
    (openstack) role add --project service --user glance admin


    4609863-5c1a15d92c8c7a49.png
    成功
  • 建立endpoint
    (openstack) service create --name glance --description="Openstack Image Service" image
    (openstack) endpoint create --region RegionOne image public http://controller:9292
    (openstack) endpoint create --region RegionOne image internal http://controller:9292
    (openstack) endpoint create --region RegionOne image admin http://controller:9292

4609863-548708a4e713e790.png
成功
  • 啟動服務並設定自啟動
    [root@controller ~]# systemctl restart openstack-glance-api
    [root@controller ~]# systemctl restart openstack-glance-registry
    [root@controller ~]# systemctl enable openstack-glance-api
    [root@controller ~]# systemctl enable openstack-glance-registry
  • 上傳映象
    [root@controller images]# openstack image create --disk-format qcow2 --container-format bare --public --file /opt/images/centos_65_x86_6420140327.qcow2 centos


    4609863-28cb5d4a384abac5.png
    上傳成功

遇見問題

  • 安裝openstack-keystone的時候會報錯,提示缺少python-zope-interface這個包,在阿里雲、網易雲映象站均找不到這個包,最後通過關鍵字搜尋python-zope-interface rpm找到了對應的包,放入epel資料夾並更新repodate檔案,再次安裝成功。
4609863-bc1fe3a724db5a11.png
缺少檔案報錯
4609863-848fd80952dabf89.png
發現確實缺少zope-interface檔案
4609863-1841d5cebff2351a.png
更新repo檔案
4609863-2c374b04a3bc772f.png
驗證已解決
  • 由於k版本後keystone client被openstack client所代替,所以如果yum的是python-keystoneclient,執行命令時候會出現如圖所示告警,下載
4609863-2d5d4fd9508ec8e2.png
告警
  • 在配置賬戶的時候出現很多問題,例如試驗指導書裡面給的環境變數是 OS_SERVICE_ENDPOINT和OS_SERVICE_TOKEN,但是幫助裡面沒有這個環境變數的用法,當我修改為OS_URL和OS_TOKEN的時候可以正常使用,可能是因為版本變更的問題吧。並且這裡如果沒有配置OS_URL和OS_TOKEN環境變數的話,報錯的很多問題可能都不會指向OS_URL,可能會提示其他諸如
    openstack could not determine a suitable url for the plugin
    openstack The request you have made requires authentication,
    還有一些其他的報錯沒有一一記錄,總之,這兩個環境變數很重要。
4609863-e78da71747ae9292.png
os_url
  • 在配置環境變數的時候各引數一定要一致,如果地址末尾給的是v3,那麼一定要將export OS_IDENTITY_API_VERSION的值設定成3,如果給的是v2.0,則這一項可以不填,因為預設的是2,不然會因為版本問題無法繼續配置。

  • 注意這裡對於環境變數OS_URL和OS_TOKEN一定要重置,否則會提示404未找到等

4609863-d0b9fea380a7156a.png

相關文章