1. 程式人生 > >openstack總結2_環境搭建+keystone模組安裝

openstack總結2_環境搭建+keystone模組安裝

      上篇說到我的openstack的部署環境是ubuntu16.04,安裝的版本是ocata。其實我最開始安裝的版本是mitaka,因為mitaka有中文的安裝部署文件。官方的Demo配置是ubuntu14.04+mitaka,我在ubunttu16.04上面安裝mitaka的時候碰到問題沒法解決才重新去看的官網上面最新的安裝Demo,示例採用的ocata版本,我又重新安裝了ocata版本。

環境說明:

ubuntu16.04+openstack-ocata

安裝的時雙節點,一個控制節點controller,一個計算節點compute。

controller 192.168.44.11

compute 192.168.44.22

控制節點上部署keystone,glance,nova控制部分,neutron服務,計算節點部署的nova的計算部分。

在正式開始安裝openstack之前需要安裝一些輔助的工具,這裡特別對網路說明下。

利用vagrant軟體如上一篇對虛擬機器設定IP和主機名,同時安裝外掛後設置可以通過主機名直接通訊。這時每個虛擬機器上可以看到有三個網絡卡,以我部署的controller節點為例,如下圖:

其中enp0s8網絡卡上面顯示的內網地址是在vagrant的配置檔案中為虛擬機器配置的IP地址,這張網絡卡在後面部署neutron的時候會用到,另外兩張網絡卡暫時不過多關注。

下面說說搭建過程,基礎環境就按照官網上面的步驟來,其中主機網路環節可以省略,相關配置已經在vagrant中完成。

我是切換到root使用者下操作的。不特別說明節點的步驟都是指在控制節點上面完成。

------------------------------------------------

基礎環境部分

-------------------------------------------------

1.首先要更新包:

apt-get update

apt-get upgrade

2.安裝NTP同步各個節點時間:

控制節點:

1):apt install chrony

2):編輯/etc/chrony/chrony.conf檔案,設定:server 192.168.44.11 iburst

這個配置是說以控制節點的時鐘為準同步各個節點時間。

3):編輯/etc/chrony/chrony.conf檔案,設定:allow 192.168.44.0/24

這是指哪個範圍內的節點可以連線到控制節點,即同步機器IP範圍,這裡設定為取前24位的區域網段。

4):重啟NTP服務:service chrony restart

計算節點:

1):apt install chrony

2):編輯/etc/chrony/chrony.conf檔案,設定:server controller iburst

意思是與控制節點的時間同步。

3):註釋掉行:pool 2.debian.pool.ntp.org offline iburst

4):重啟NTP服務:service chrony restart

3:安裝openstack基礎包,這一步兩個節點上都按照下面步驟執行

1)安裝基礎包:
apt install software-properties-common
add-apt-repository cloud-archive:ocata

2):更新包:apt update && apt dist-upgrade

3):安裝openstack客戶端:apt install python-openstackclient

4:安裝mariadb資料庫

1):apt install mariadb-server python-pymysql

2):新建並編輯檔案/etc/mysql/mariadb.conf.d/99-openstack.cnf,做通用設定,其中bind-address設定為控制節點的IP:

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

3):重啟資料庫服務:service mysql restart

4):資料庫安全加固:mysql_secure_installation

5:訊息佇列

1):安裝rabbitmq訊息佇列:apt install rabbitmq-server

2):設定連線訊息佇列的使用者名稱/密碼(openstack/123456):rabbitmqctl add_user openstack 123456

3):給使用者分配許可權讀,寫,訪問:rabbitmqctl set_permissions openstack ".*" ".*" ".*"

6:安裝快取memchaced

1):apt install memcached python-memcache

2):編輯配置檔案/etc/memcached.conf,設定:-l 192.168.44.11

意思是快取設定快取採用控制節點的IP地址

3):重啟快取服務:service memcached restart

--------------------------------------------------------------------------

keystone

---------------------------------------------------------------------------

1:資料庫部分

1):root賬號連線到資料庫:mysql

2):建立keystone資料庫:MariaDB [(none)]> CREATE DATABASE keystone;

3):對使用者/密碼(keystone/keystone)授予資料庫keystone許可權:

MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'keystone';

MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'keystone';

4):退出資料庫

2:keystone安裝配置部分

1):安裝keystone: apt install keystone

2):邊界配置檔案/etc/keystone/keystone.conf

a):[database]塊配置,註釋掉該塊其他的connection配置選項:

connection = mysql+pymysql://keystone:[email protected]/keystone

其中KEYSTONE_DBPASS替換為前面keystone使用者設定的密碼:keystone;

b):[token] 塊配置:provider = fernet

3):初始化身份認證資料庫:su -s /bin/sh -c "keystone-manage db_sync" keystone

4):初始化Fernet keys:

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

5):啟動認證服務:

keystone-manage bootstrap --bootstrap-password ADMIN_PASS \
  --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

ADMIN_PASS替換為admin使用者的密碼;

3:apache服務部分

apache服務在ubuntu上面是預設安裝,不需要再次安裝

1):編輯檔案/etc/apache2/apache2.conf,設定:ServerName controller

2):重啟apache服務並刪除預設的SQLite資料庫配置:

service apache2 restart
rm -f /var/lib/keystone/keystone.db

3):設定管理員使用者認證相關資訊寫入環境變數:

$ export OS_USERNAME=admin
$ export OS_PASSWORD=ADMIN_PASS
$ 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
$ export OS_IDENTITY_API_VERSION=3

其中ADMIN_PASS為管理員使用者admin的密碼

###########################################

建立專案,角色和使用者

1:建立service專案:openstack project create --domain default --description "Service Project" service

2:建立demo專案,分以下幾步:

1)建立demo專案:openstack project create --domain default --description "Demo Project" demo

2):建立demo使用者:openstack user create --domain default --password-prompt demo

根據提示輸入密碼

3):建立user角色:openstack role create user

4):角色user將專案demo和使用者demo關聯起來:openstack role add --project demo --user demo user

####################################################

驗證

1:移除臨時令牌,編輯/etc/keystone/keystone-paste.ini檔案,移除[pipeline:public_api],[pipeline:admin_api],[pipeline:api_v3]下的admin_token_auth。

2.重置環境變數OS_AUTH_URL和OS_PASSWORD:unset OS_AUTH_URL OS_PASSWORD

3:以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

按照提示輸入admin使用者的密碼

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

按照提示輸入demo使用者的密碼

######################################

上面是通過環境變數和命令選項的組合,並且還需要使用者手動輸入一次密碼來為使用者申請訪問相關服務端點的令牌,為了提高效率,可以將使用者密碼和申請令牌需要的相關指存放到指令碼中,自動載入,申請令牌時可以簡化命令,同時減少輸入密碼的互動。

1.為admin使用者建立指令碼,建立編輯檔案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=ADMIN_PASS
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

ADMIN_PASS替換為admin使用者的密碼;

2:為demo使用者建立指令碼,建立編輯檔案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=DEMO_PASS
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

DEMO_PASS替換為demo使用者的密碼;

3:加入指令碼後的申請令牌方式,以admin使用者為例:

1):載入使用者指令碼:

. admin-openrc

2):申請令牌: openstack token issue

-----------------------------------------------------------------------------------------------------

總結:

1.上面的安裝過程中,沒有碰到大的問題,按照教程一步一步來就可以,一個需要注意的地方就是apache伺服器的配置。

2.關於服務端點的理解,管理員使用者對應的埠和普通使用者對應的埠不同,不同的令牌之間的許可權有何區別需要梳理。

3.還有就是啟動keystone服務的命令。