OpenStack 認證服務 KeyStone部署(三)


Keystone 介紹

Keystone作用:

  1. 用戶與認證:用戶權限與用戶行為跟蹤;
  2. 服務目錄:提供一個服務目錄,包括所有服務項和相關Api的斷點
  3. SOA相關知識

Keystone主要兩大功能用戶認證和服務目錄(相當於一個注冊中心)

  • 用戶認證名詞介紹

User:用戶
 它是用一個數字代表使用openstack雲服務的一個人、系統、或服務。身份驗證服務將會驗證傳入的由用戶聲明將調用的請求
 一個租戶可以有多個用戶
 一個用戶可以屬於一個或多個租戶
 用戶對租戶和操作權限由用戶在租戶中承擔的角色來決定。

Project:項目
 它是各個服務中的一些可以訪問的資源集合或者說叫資源組。它是一個容器,用於組織和隔離資源,或標識對象。

Token:令牌

Role:角色
代表一組用戶可以訪問的資源權限,例如Nova中的虛擬機、Glance中的鏡像。

  • 服務目錄兩大名詞介紹

Service:服務
Service即服務,如Nova、Glance、Swift。根據前三個概念(User,Project和Role)一個服務可以確認當前用戶是否具有訪問其資源的權限。但是當一個user嘗試着訪問其租戶內的service時,他必須知道這個service是否存在以及如何訪問這個service。

Endpoint:端點
Endpoint翻譯為“端點”,我們可以理解它是一個服務暴露出來的訪問點,如果需要訪問一個服務,則必須知道他的endpoint。Endpoint的每個URL都對應一個服務實例的訪問地址,並且具有public、orivate和admin這三種權限。pubic url可以完全被全局訪問,private url只能被局域網訪問,admin url被從常規的訪問中分離。

 

KeyStone安裝

yum install -y openstack-keystone httpd mod_wsgi memcached python-memcached

提示: wsgi是python一個cgi的接口

 

KeyStone配置

編輯文件/etc/keystone/keystone.conf,我們管理keystone只需要修改keystone的配置文件即可。

備注:在配置文件里面以[xxx]里面的內容叫做配置欄目(類似於mysql配置文件[mysqld])

  • [DEFAULT]部分,定義初始管理令牌的值,我們使用openssl生成一個隨機值。
[root@linux-node1 ~]# openssl rand -hex 10
07081849f55281652
[root@linux-node1 ~]# vim /etc/keystone/keystone.conf
[DEFAULT]
admin_token = 07081849f55281652dac

提示:keystone默認沒有用戶,需要進行創建用戶。這樣我們在配置文件中加入admin_token,在沒有用戶的情況下可以使用admin_token進行訪問。還可以設置不用用戶名和密碼。簡單來說admin_token就是初始化時候超級管理員的用戶。

  • [database]部分,配置數據庫訪問:
[database]
connection = mysql+pymysql://keystone:keystone@192.168.137.11/keystone

提示:用戶名:密碼@數據庫地址/庫名稱 

  • [token]部分,配置Fernet UUID令牌的提供者

提供令牌有四種方式[fernet|pkiz|pki|uuid]默認是uuid。

[token]
provider = fernet
driver = memcache

默認是存儲在sql中,我們需要將它修改為memcache

  • [memcache]部分,配置memcache的連接地址和端口
[memcache]
servers = 192.168.137.11:11211

 

初始化數據庫

su -s /bin/sh -c "keystone-manage db_sync" keystone

自動找到keystone配置文件里的mysql連接,來幫我們創建數據庫中的表。

  • 我們為什么要使用keystone用戶去同步數據庫呢? 

因為同步數據庫會在/var/log/keystone目錄下去寫日志,如果使用root權限同步,當keystone用戶啟動服務時讀取這個日志文件,那么它將無法進行讀取(權限問題),會出現啟動錯誤的情況。

檢查表是否創建成功

mysql -h 192.168.137.11 -ukeystone -pkeystone -e "use keystone;show tables;"

提示:如果查看表的時候發現沒有,通過日志/var/log/keystone/keystone.log排查報錯信息。

 

初始化Fernet keys

創建相關的證書

keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone

執行完命令之后會在/etc/keystone下生成fernet-keys目錄,它的權限是keystone里面存放這一些相關證書。

提示:我們要注意/etc/keystone目錄下文件的權限。

 

memcached啟動和設置

systemctl enable memcached.service
systemctl start memcached.service

查看配置文件/etc/sysconfig/memcached

  • PORT="11211"  # 端口號
  • USER="memcached"  # 用戶
  • MAXCONN="1024"    # 最大連接數
  • CACHESIZE="64"  # 大小64MB

netstat -ntlp檢查服務端口是否存在

 

apache配置

  • 配置/etc/httpd/conf/httpd.conf文件,配置ServerName 選項為控制節點
[root@linux-node1 ~]# vim /etc/httpd/conf/httpd.conf
ServerName 192.168.137.11:80
  • 創建配置文件/etc/httod/conf.d/wsgi-keystone.conf
[root@linux-node1 ~] vim /etc/httpd/conf.d/wsgi-keystone.conf
Listen 5000
Listen 35357

<VirtualHost *:5000>
    WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
    WSGIProcessGroup keystone-public
    WSGIScriptAlias / /usr/bin/keystone-wsgi-public
    WSGIApplicationGroup %{GLOBAL}
    WSGIPassAuthorization On
    ErrorLogFormat "%{cu}t %M"
    ErrorLog /var/log/httpd/keystone-error.log
    CustomLog /var/log/httpd/keystone-access.log combined

    <Directory /usr/bin>
        Require all granted
    </Directory>
</VirtualHost>

<VirtualHost *:35357>
    WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
    WSGIProcessGroup keystone-admin
    WSGIScriptAlias / /usr/bin/keystone-wsgi-admin
    WSGIApplicationGroup %{GLOBAL}
    WSGIPassAuthorization On
    ErrorLogFormat "%{cu}t %M"
    ErrorLog /var/log/httpd/keystone-error.log
    CustomLog /var/log/httpd/keystone-access.log combined

    <Directory /usr/bin>
        Require all granted
    </Directory>
</VirtualHost>
  • apache啟動並設置開機自啟動
systemctl enable httpd.service
systemctl start httpd.service
  • netstat -ntlp檢查服務端口是否存在

查看日志 /var/log/keystone/keystone.log 是否有報錯信息

  • 排錯,開啟debug模式
vim /etc/keystone/keystone.conf
[DEFAULT]
debug = true

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM