天天看點

opesnstack四部曲(1)---keystone

一、環境準備

1、本次實驗環境采用Centos7 + H版本的openstack

兩台機器的主機相關配置如下:

控制節點:
    主機名:    node1.openstack.com
    主機ip:    192.168.56.11

計算節點:
    主機名:    node2.openstack.com
    主機ip:    192.168.56.12

注:主機名一旦确定盡量不要修改,否則openstack機制會認為有新的機器加入資源池,進而進行調整.是以造成不必要的影響。此外確定防火牆以及selinux關閉,如果采用虛拟機的話記憶體盡量4G,否則建立虛拟機時容易造成資源不足進而引起不必要的報錯。
           

最重要的保證兩台機器時間同步,相關主機能通過主機名進行解析!!!

2、以下操作在控制節點進行

a.安裝相關源

yum install -y http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
yum install centos-release-openstack-liberty -y
yum install python-openstackclient -y
           

b.安裝MySQL相關(MySQL不一定非要安裝在控制節點,隻要能通路就可以)

yum install -y mariadb mariadb-server MySQL-python
修改MySQL配置
cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
vim /etc/my.cnf
在[mysqld]下添加如下内容
[mysqld]
default-storage-engine = innodb
innodb_file_per_table
collation-server = utf8_general_ci   
init-connect = 'SET NAMES utf8'
character-set-server = utf8
設定開機啟動
systemctl enable mariadb
啟動資料庫
systemctl start mariadb
設定密碼
mysql_secure_installation
           

c.為相關元件建立使用者、資料庫,并授權

Keystone資料庫
mysql -u root -p123456 -e "CREATE DATABASE keystone;"
mysql -u root -p123456 -e "GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'keystone';"
mysql -u root -p123456 -e "GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'keystone';"
Glance資料庫
mysql -u root -p123456 -e "CREATE DATABASE glance;"
mysql -u root -p123456 -e "GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'glance';"
mysql -u root -p123456 -e "GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'glance';"
Nova資料庫
mysql -u root -p123456 -e "CREATE DATABASE nova;"
mysql -u root -p123456 -e "GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'nova';"
mysql -u root -p123456 -e "GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'nova';"
Neutron 資料庫
mysql -u root -p123456 -e "CREATE DATABASE neutron;"
mysql -u root -p123456 -e "GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'neutron';"
mysql -u root -p123456 -e "GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'neutron';"
Cinder資料庫
mysql -u root -p123456 -e "CREATE DATABASE cinder;"
mysql -u root -p123456 -e "GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY 'cinder';"
mysql -u root -p123456 -e "GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY 'cinder';"
           

d.安裝rabbitmq

yum install -y rabbitmq-server
設定開機啟動
systemctl enable rabbitmq-server
啟動rabbitmq
systemctl start rabbitmq-server
建立rabbitmq使用者(使用者名為openstack,密碼為openstack)
rabbitmqctl add_user openstack openstack
設定權限
set_permissions openstack ".*" ".*" ".*"
啟用web管理插件
rabbitmq-plugins enable rabbitmq_management
重新啟動rabbitmq
systemctl restart rabbitmq-server
進行驗證
通路 192.168.56.11:15672 (預設使用者名密碼為guest guest 我們建立的openstack使用者此時沒有啟用)
           
opesnstack四部曲(1)---keystone
opesnstack四部曲(1)---keystone

啟用rabbitmq中的openstack賬号

opesnstack四部曲(1)---keystone
opesnstack四部曲(1)---keystone

二、元件部署

1、keystone篇

keystone兩大功能

1)、使用者與認證:使用者權限與使用者行為追蹤

2)、服務目錄:提供一個服務目錄,包括所有服務項與相關Api的端點

a、安裝相關服務

yum install -y openstack-keystone httpd mod_wsgi memcached python-memcached
修改keyston配置檔案
修改後結果如下
           

此外還可以根據需求是否打開debug模式

verbose = true

同步表結構及資料
su -s /bin/sh -c "keystone-manage db_sync" keystone
同步驗證(安全起見)
mysql -ukeystone -pkeystone -h 192.168.56.11
use keystone;
show tables;
如何能看到有表,且表數為33證明同步成功
啟動memcache
systemctl enable memcached
systemctl start memcached
建立Apache的keystone檔案
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
    <IfVersion >= 2.4>
      ErrorLogFormat "%{cu}t %M"
    </IfVersion>
    ErrorLog /var/log/httpd/keystone-error.log
    CustomLog /var/log/httpd/keystone-access.log combined

    <Directory /usr/bin>
        <IfVersion >= 2.4>
            Require all granted
        </IfVersion>
        <IfVersion < 2.4>
            Order allow,deny
            Allow from all
        </IfVersion>
    </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
    <IfVersion >= 2.4>
      ErrorLogFormat "%{cu}t %M"
    </IfVersion>
    ErrorLog /var/log/httpd/keystone-error.log
    CustomLog /var/log/httpd/keystone-access.log combined

    <Directory /usr/bin>
        <IfVersion >= 2.4>
            Require all granted
        </IfVersion>
        <IfVersion < 2.4>
            Order allow,deny
            Allow from all
        </IfVersion>
    </Directory>
</VirtualHost>

配置Apache配置檔案(配置servername)
vim /etc/httpd/conf/httpd.conf
ServerName 192.168.56.11:80
此時可以通過Apache控制keystone認證服務的啟動

啟動Apache
systemctl enable httpd
systemctl starthttpd
           

b、建立相關使用者角色

設定環境變量
export OS_TOKEN=863d35676a5632e846d9
export OS_URL=http://192.168.56.11:35357/v3
export OS_IDENTITY_API_VERSION=3
建立admin項目
openstack project create --domain default   --description "Admin Project" admin
建立admin使用者
openstack user create --domain default --password-prompt admin
#本次操作會提示輸入密碼,此次密碼我們設定為admin(生産一定要複雜)
建立admin角色
openstack role create admin
給admin項目添加admin使用者并且角色設定為admin
openstack role add --project admin --user admin admin        #此次操作沒有輸出
建立普通項目、使用者、角色,并授權
openstack project create --domain default --description "Demo Project" demo
openstack user create --domain default --password=demo demo
openstack role create user
openstack role add --project demo --user demo user
建立service項目,用于相關元件互動
openstack project create --domain default --description "Service Project" service
           

c、建立keystone服務及端點

建立服務
openstack service create --name keystone --description "OpenStack Identity" identity
建立端點
openstack endpoint create --region RegionOne identity public http://192.168.56.11:5000/v2.0                #公共端點,可以對外提供服務
openstack endpoint create --region RegionOne identity internal http://192.168.56.11:5000/v2.0              #内部端點
openstack endpoint create --region RegionOne identity admin http://192.168.56.11:35357/v2.0              #管理端點
           

d、使用使用者名密碼進行驗證

解除安裝環境變量(其實關閉目前視窗,新開一個即可)
unset OS_TOKEN
unset OS_URL
unset OS_IDENTITY_API_VERSION
驗證能否擷取ID(需要輸入admin的密碼)
openstack --os-auth-url http://192.168.56.11:35357/v3 \
--os-project-domain-id default --os-user-domain-id default \
--os-project-name admin --os-username admin --os-auth-type password \
token issue
           

e、配置keystone環境變量友善執行,直接source即可引用

admin環境變量
vim admin-openrc.sh
export OS_PROJECT_DOMAIN_ID=default
export OS_USER_DOMAIN_ID=default
export OS_PROJECT_NAME=admin
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=admin
export OS_AUTH_URL=http://192.168.56.11:35357/v3
export OS_IDENTITY_API_VERSION=3

demo環境變量
vim demo-openrc.sh
export OS_PROJECT_DOMAIN_ID=default
export OS_USER_DOMAIN_ID=default
export OS_PROJECT_NAME=demo
export OS_TENANT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=demo
export OS_AUTH_URL=http://192.168.56.11:5000/v3
export OS_IDENTITY_API_VERSION=3
驗證結果
source admin-openrc.sh
openstack token issue
           

轉載于:https://www.cnblogs.com/lige-python/p/5125758.html