天天看點

OpenStack之keystone(身份認證服務)

安裝部署openstack

一、準備基礎環境

1、環境:

CPU處理器要支援虛拟化

記憶體2GB

磁盤空間50GB

網絡兩塊網卡,一塊外網,一塊内網

3台虛拟機:

192.168.80.103 controller(控制節點)

192.168.80.104 compute01(計算節點)

192.168.80.102 用戶端

2、域名解析和關閉防火牆(所有機器上都做)

關閉防火牆

systemctl disable firewalld.service

systemctl stop firewalld.service

關閉SElinux

sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config

setenforce 0

vi /etc/hosts //配置域名解析

192.168.80.100 controller

192.168.80.101 compute01

hostnamectl set-hostname controller

hostnamectl set-hostname compute01

3、控制節點伺服器:

(1)安裝軟體包:

yum install chrony -y

(2)編輯 /etc/chrony.conf 檔案,按照你環境的要求,對下面的鍵進行添加,末尾新增:

server NTP_SERVER iburst

注:使用NTP伺服器的主機名或者IP位址替換 NTP_SERVER 。配置支援設定多個 server 值。

allow 192.168.80.0/24

為了允許其他節點可以連接配接到控制節點的 chrony 背景程序

systemctl enable chronyd.service

systemctl start chronyd.service

(3)其它節點伺服器

yum install chrony -y

vi /etc/chrony.conf

server controller iburst

systemctl enable chronyd.service

systemctl start chronyd.service

驗證:

在控制節點上執行以下指令:

chronyc sources

注:在 Name/IP address 列的内容應顯示NTP伺服器的主機名或者IP位址。在 S 列的内容應該在NTP服務目前同步的上遊伺服器前顯示 *。

在所有其他節點執行相同指令:chronyc sources

二、安裝openstack庫

在CentOS中,

extras

倉庫提供用于啟用 OpenStack 倉庫的RPM包。 CentOS 預設啟用

extras

倉庫,是以可以直接安裝用于啟用OpenStack倉庫的包。

yum install -y centos-release-openstack-queens.noarch //安裝和openstack對應版本相關的倉庫

yum -y upgrade //進行系統整體更新,更新完成後要重新啟動作業系統

安裝 OpenStack 用戶端:

yum install python-openstackclient

init 6 //重新開機系統

1、安裝資料庫

大多數 OpenStack 服務使用 SQL 資料庫來存儲資訊。 典型地,資料庫運作在控制節點上。

安裝軟體包:

yum install mariadb mariadb-server python2-PyMySQL -y

vi /etc/my.cnf.d/openstack.cnf //建立并編輯該/etc/my.cnf.d/openstack.cnf檔案,添加以下内容:

[mysqld]

bind-address = 192.168.80.100 //設定監聽位址

default-storage-engine = innodb //設定預設存儲引擎

innodb_file_per_table = on //設定獨享表空間

max_connections = 4096 //設定最大連接配接數

collation-server = utf8_general_ci //設定校對規則

character-set-server = utf8 //設定建立資料庫時的預設字元集

systemctl enable mariadb

systemctl start mariadb

netstat -anpt | grep 3306

mysql_secure_installation 對資料庫進行安全加強,操作如下:

回車——y——123——123——y——n——y——y

2、消息隊列

OpenStack 使用 message queue 協調操作和各服務的狀态資訊。消息隊列服務一般運作在控制節點上。OpenStack支援好幾種消息隊列服務包括 RabbitMQ, Qpid, 和 ZeroMQ。不過,大多數發行版本的OpenStack包支援特定的消息隊列服務。

安裝 RabbitMQ 消息隊列服務,因為大部分發行版本都支援它。

安裝包:

yum install rabbitmq-server -y

啟動消息隊列服務并将其配置為随系統啟動:

systemctl enable rabbitmq-server.service

systemctl start rabbitmq-server.service

rabbitmq-plugins enable rabbitmq_management

//使用此插件實作web管理,如下圖

OpenStack之keystone(身份認證服務)

netstat -anpt | grep 5672 //當開啟rabbitmq_management,15672端口才會工作

注:15672:管理端口 ;25672:server間内部通信口 ;5672: client端通信口

OpenStack之keystone(身份認證服務)

測試:在浏覽器中http://192.168.80.103:15672/

OpenStack之keystone(身份認證服務)

使用者和密碼都是:guest

在字元端中:

rabbitmqctl add_user openstack abc123 //建立并添加openstack使用者,密碼abc123

rabbitmqctl set_permissions openstack “." ".” “.*” //給openstack使用者配置寫和讀權限

OpenStack之keystone(身份認證服務)
OpenStack之keystone(身份認證服務)

3、安裝Memcached服務

認證服務認證緩存使用Memcached緩存令牌。緩存服務memecached運作在控制節點。

安裝軟體包:

yum install memcached python-memcached -y

vi /etc/sysconfig/memcached //修改成以下内容:

OPTIONS="-l 127.0.0.1,::1,controller"

啟動Memcached服務,并且配置它随機啟動。

systemctl enable memcached.service

systemctl start memcached.service

netstat -anpt | grep 11211 檢視11211是否在工作

OpenStack之keystone(身份認證服務)

4、安裝etcd服務

OpenStack服務可以使用Etcd,這是一種分布式的可靠鍵值存儲,用于分布式鍵鎖定、存儲配置、跟蹤服務生命周期和其他場景。

yum install etcd -y

vi /etc/etcd/etcd.conf //修改内容如下:

#[Member]

ETCD_DATA_DIR="/var/lib/etcd/default.etcd"

ETCD_LISTEN_PEER_URLS=“http://192.168.80.103:2380”

ETCD_LISTEN_CLIENT_URLS=“http://192.168.80.103:2379”

ETCD_NAME=“controller”

#[Clustering]

ETCD_INITIAL_ADVERTISE_PEER_URLS=“192.168.80.103:2380”

ETCD_ADVERTISE_CLIENT_URLS=“http://192.168.80.103:2379”

ETCD_INITIAL_CLUSTER=“controller=http://192.168.80.103:2380”

ETCD_INITIAL_CLUSTER_TOKEN=“etcd-cluster-01”

ETCD_INITIAL_CLUSTER_STATE=“new”

systemctl enable etcd

systemctl start etcd

三、安裝和配置openstack身份認證服務(代碼名稱keystone)

1.身份認證服務:為認證管理,授權管理和服務目錄服務管理提供單點整合。其它OpenStack服務将身份認證服務當做通用統一API來使用。出于性能原因,這個配置部署Fernet令牌和Apache HTTP服務處理請求并使用Memcached存儲tokens而不用SQL資料庫。

注: Token是通路資源的鑰匙。它是通過Keystone驗證後的傳回值,在之後的與其他服務互動中隻需要攜帶Token值即可。每個Token都有一個有效期,Token隻在有效期内是有效的。

先決條件:在配置 OpenStack 身份認證服務前,你必須建立一個資料庫和管理者令牌。

用資料庫連接配接用戶端以 root 使用者連接配接到資料庫伺服器

mysql -u root -p

建立 keystone 資料庫

CREATE DATABASE keystone;

keystone

資料庫授予恰當的權限

GRANT ALL PRIVILEGES ON keystone.* TO ‘keystone’@‘localhost’ IDENTIFIED BY ‘abc123’;

GRANT ALL PRIVILEGES ON keystone.* TO ‘keystone’@’%’ IDENTIFIED BY ‘abc123’;

flush privileges;

退出資料庫

運作以下指令來安裝包。

yum install openstack-keystone httpd mod_wsgi -y

注:mod_wsgi的Apache HTTP伺服器來服務認證服務請求,端口為5000和35357。預設情況下,Kestone服務仍然監聽這些端口。然而,可以手動禁用keystone服務。

cd /etc/keystone/

cp keystone.conf keystone.conf.bak //備份一下,以免之後步驟出錯,無法還原

egrep -v “#|$” keystone.conf.bak > keystone.conf 去掉以#開頭的和空行

vi keystone.conf 修改keystore配置檔案,修改以下内容:

[DEFAULT]

[database]

connection = mysql+pymysql://keystone:[email protected]/keystone //定義初始管理令牌的值,使用剛生成的令牌值

[token]

provider = fernet //配置Fernet UUID令牌的提供者

初始化身份認證服務的資料庫: su -s /bin/sh -c “keystone-manage db_sync” keystone

注:忽略輸出中任何不推薦使用的資訊。

OpenStack之keystone(身份認證服務)

初始化Fernet keys:

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

keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

引導身份服務:

keystone-manage bootstrap --bootstrap-password abc123

–bootstrap-admin-url http://controller:35357/v3/

–bootstrap-internal-url http://controller:5000/v3/

–bootstrap-public-url http://controller:5000/v3/

–bootstrap-region-id RegionOne

2.配置 Apache HTTP 伺服器

vi /etc/httpd/conf/httpd.conf

修改以下内容:

ServerName controller

ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/

//建立 /usr/share/keystone/wsgi-keystone.conf連結檔案

systemctl enable httpd.service //設定為開機啟動

systemctl start httpd.service //啟動httpd服務

netstat -anpt | grep http //80 35357 5000 端口監聽

注:35357:用于管理,隻有admin_role可以使用

5000:用于業務,普通使用者使用

OpenStack之keystone(身份認證服務)

3.建立服務實體和API端點

身份認證服務提供服務的目錄和他們的位置。每個你添加到OpenStack環境中的服務在目錄中需要一個 service 實體和一些 API 端點 。

先決條件:預設情況下,身份認證服務資料庫不包含支援傳統認證和目錄服務的資訊。必須使用為身份認證服務建立的臨時身份驗證令牌用來初始化的服務實體和API端點。

使用環境變量以縮短指令行的長度。

export OS_USERNAME=admin

export OS_PASSWORD=abc123 //管理者密碼,之前設定的

export OS_PROJECT_NAME=admin

export OS_USER_DOMAIN_NAME=Default

export OS_PROJECT_DOMAIN_NAME=Default

export OS_AUTH_URL=http://controller:35357/v3 //配置端點URL

export OS_IDENTITY_API_VERSION=3 // 配置認證 API 版本

env|grep ^OS //檢視全局變量是否生效

OpenStack之keystone(身份認證服務)

4、建立域、項目、使用者和角色

身份服務為每個OpenStack服務提供身份驗證服務。身份驗證服務使用域、項目、使用者和角色的組合

本實驗使用一個service項目,該項目為添加到環境中的每個服務包含一個惟一的使用者。

(1)建立service項目

openstack project create --domain default

–description “Service Project” service

OpenStack之keystone(身份認證服務)

(2)正常(非管理)任務應該使用無特權的項目和使用者。

此處建立一個demo項目和使用者

1)建立demo項目

openstack project create

–domain default

–description “Demo Project” demo

OpenStack之keystone(身份認證服務)

2)建立demo使用者

openstack user create

–domain default

–password-prompt demo

OpenStack之keystone(身份認證服務)

3)建立user角色:

openstack role create user

OpenStack之keystone(身份認證服務)

4)添加 user角色到demo項目和使用者:

openstack role add --project demo --user demo user

注:可以重複此過程來建立額外的項目和使用者

(3)驗證操作

在安裝其他服務之前确認身份認證服務的操作。

注:在控制節點上執行以下操作。

1)取消臨時OS_AUTH_URL和OS_PASSWORD環境變量

unset OS_AUTH_URL OS_PASSWORD

2)作為 admin 使用者,請求認證令牌:

openstack --os-auth-url

http://controller:35357/v3

–os-project-domain-name default

–os-user-domain-name default

–os-project-name admin

–os-username admin token issue

OpenStack之keystone(身份認證服務)

(4)作為

demo

使用者,請求認證令牌:

openstack --os-auth-url http://controller:5000/v3

–os-project-domain-name default --os-user-domain-name default

–os-project-name demo --os-username demo token issue

OpenStack之keystone(身份認證服務)

注:這個指令使用

demo

使用者的密碼和API端口5000,這樣隻會允許對身份認證服務API的正常(非管理)通路。

五、建立OpenStack用戶端環境腳本

前面使用環境變量和指令選項的組合通過

openstack

用戶端與身份認證服務互動。為了提升用戶端操作的效率,OpenStack支援簡單的用戶端環境變量腳本即OpenRC 檔案。這些腳本通常包含用戶端所有常見的選項,當然也支援獨特的選項。

1、建立腳本

建立 admin 和 demo項目和使用者建立用戶端環境變量腳本。接下來的部分會引用這些腳本,為用戶端操作加載合适的的憑證。

(1)建立openstack用戶端環境腳本,編輯檔案 admin-openrc 并添加如下内容:

vi admin-openrc //添加下面内容:

export OS_PROJECT_DOMAIN_NAME=default

export OS_USER_DOMAIN_NAME=default

export OS_PROJECT_NAME=admin

export OS_USERNAME=admin

export OS_PASSWORD=abc123

export OS_AUTH_URL=http://controller:35357/v3

export OS_IDENTITY_API_VERSION=3

export OS_IMAGE_API_VERSION=2

(2)編輯檔案 demo-openrc 并添加如下内容

vi demo-openrc //添加下面内容:

export OS_PROJECT_DOMAIN_NAME=default

export OS_USER_DOMAIN_NAME=default

export OS_PROJECT_NAME=demo

export OS_USERNAME=demo

export OS_PASSWORD=abc123

export OS_AUTH_URL=http://controller:35357/v3

export OS_IDENTITY_API_VERSION=3

export OS_IMAGE_API_VERSION=2

2、使用腳本

使用特定租戶和使用者運作用戶端,可以在運作之前簡單地加載相關用戶端腳本。

(1)加載admin-openrc檔案來身份認證服務的環境變量位置和admin項目和使用者證書:

. admin-openrc

(2)請求認證令牌:

openstack token issue

OpenStack之keystone(身份認證服務)

(3)加載demo-openrc檔案來身份認證服務的環境變量位置和demo項目和使用者證書:

. demo-openrc

(4)驗證配置,請求認證令牌資訊

openstack token issue

OpenStack之keystone(身份認證服務)

到此,身份認證服務keystone完成