可以說大多數人都聽過雲計算,如阿里雲、亞馬遜雲、華為雲、騰訊雲、百度雲等。是不是覺得非常高大上呢?其實這些雲廠商他們或自己開發平臺或在openstack基礎上二次開發,阿里自研開發的平臺我們望塵莫及,但是其他國內廠商基本都是openstack基礎上二次開發的,所以我們只要掌握了openstack的相關技術,自己就可以搭建一個自己的雲平臺。
下面我就給大家介紹一下如果在Linux環境用openstack搭建雲平臺。
一、Openstack基本概念
OpenStack是一個開源的雲計算管理平臺專案,由幾個主要的元件組合起來完成:
Dashboard(web專案)
Keystone(許可權管理)
Nova(管理虛擬機器)
Nova-network(管理網路流量和ip)
Glance(映象管理專案)
Cinder(磁碟管理)
Swift(網盤,物件)、
二、
準備工作
需要準備3臺linux的機器,配置IP地址,關閉防火牆,修改主機名。
• Controller Node: 1 processor, 2 GB memory, and 5 GB storage
• Compute01: 1 processor, 512 MB memory, and 5 GB storage
• Compute02 Node: 1 processor, 2 GB memory, and 10 GB storage
我這裡controller的ip地址是:192。168。1。2
computer01:192。168。1。3
computer02:192。168。1。4
基本環境配置
以下內容是在controller機器上配置的。
1、資料庫安裝。
因為需要一個數據庫,所以這裡選用了mysql資料庫。
yum install mysql mysql-server MySQL-python
編輯/etc/my。cnf檔案,在裡面新增如下內容,主要意思就是設定編碼為utf-8。
default-storage-engine = innodbinnodb_file_per_tablecollation-server = utf8_general_ciinit-connect = ‘SET NAMES utf8’character-set-server = utf8
然後啟動服務,開機啟動。
# service mysqld start# chkconfig mysqld on# mysql_install_db# mysql_secure_installation
賦權,使其可以遠端登入。
GRANT ALL PRIVILEGES ON *。* TO ‘root’@‘%’ IDENTIFIED BY ‘a’;
2、openstack基本包安裝。
# yum install yum-plugin-priorities # yum install http://repos。fedorapeople。org/repos/openstack/openstackicehouse/rdo-release-icehouse-3。noarch。rpm # yum install http://dl。fedoraproject。org/pub/epel/6/x86_64/epel-release-6-8。noarch。rpm # yum install openstack-utils # yum install openstack-selinux
3、安裝訊息佇列
yum install qpid-cpp-server
啟動服務
service qpidd startchkconfig qpidd on
許可權認證服務(keystone)
安裝許可權認證服務:
yum install openstack-keystone python-keystoneclient -y
建立使用者,寫入到配置檔案中:
openstack-config ——set /etc/keystone/keystone。conf \database connection mysql://keystone:KEYSTONE_DBPASS@controller/keystone
建立keystone資料庫表:
$ mysql -u root -pmysql> CREATE DATABASE keystone;mysql> GRANT ALL PRIVILEGES ON keystone。* TO ‘keystone’@‘localhost’ \IDENTIFIED BY ‘KEYSTONE_DBPASS’;mysql> GRANT ALL PRIVILEGES ON keystone。* TO ‘keystone’@‘%’ \IDENTIFIED BY ‘KEYSTONE_DBPASS’;mysql> exit
自動生成表:
su -s /bin/sh -c “keystone-manage db_sync” keystone
設定使用者環境變數:
ADMIN_TOKEN=$(openssl rand -hex 10)echo $ADMIN_TOKENopenstack-config ——set /etc/keystone/keystone。conf DEFAULT \admin_token $ADMIN_TOKEN # keystone-manage pki_setup ——keystone-user keystone ——keystone-group keystone# chown -R keystone:keystone /etc/keystone/ssl# chmod -R o-rwx /etc/keystone/ssl
啟動keystone服務:
service openstack-keystone startchkconfig openstack-keystone on
將admin_token設定到環境變數中去。
export OS_SERVICE_TOKEN=$ADMIN_TOKENexport OS_SERVICE_ENDPOINT=http://controller:35357/v2。0
建立管理員使用者,預設的使用者名稱為admin,密碼為ADMIN_PASS,你可以自定義修改:
[root@controller keystone]# keystone user-create ——name=admin ——pass=ADMIN_PASS ——email=ADMIN_EMAIL+——————+——————————————————+| Property | Value |+——————+——————————————————+| email | ADMIN_EMAIL|| enabled | True ||id| 332f5ecb18c64bf687b154facd629fb6 || name | admin || username | admin |+——————+——————————————————+[root@controller keystone]# keystone role-create ——name=admin+——————+——————————————————+| Property | Value |+——————+——————————————————+|id| ab5da2c50d7443efb0514e84c2b4adb7 || name | admin |+——————+——————————————————+[root@controller keystone]# keystone tenant-create ——name=admin ——description=“Admin Tenant”+——————-+——————————————————+| Property | Value |+——————-+——————————————————+| description | Admin Tenant || enabled | True || id | b89723a38b154eeea6416a83b293b0ad || name| admin |+——————-+——————————————————+[root@controller keystone]# keystone user-role-add ——user=admin ——tenant=admin ——role=admin[root@controller keystone]# keystone user-role-add ——user=admin ——role=_member_ ——tenant=admin[root@controller keystone]#
建立一個許可權認證服務,因為我這裡的主機名是controller,所以下面有 http://controller:35357/v2。0 這些資訊,可以自定義修改:
[root@controller keystone]# keystone service-create ——name=keystone ——type=identity \> ——description=“OpenStack Identity”+——————-+——————————————————+| Property | Value |+——————-+——————————————————+| description |OpenStack Identity|| enabled | True || id | 4bfd5f39b86c45edb92d5c0488987dd8 || name| keystone || type| identity |+——————-+——————————————————+[root@controller keystone]# keystone endpoint-create \> ——service-id=$(keystone service-list | awk ‘/ identity / {print $2}’) \> ——publicurl=http://controller:5000/v2。0 \> ——internalurl=http://controller:5000/v2。0 \> ——adminurl=http://controller:35357/v2。0+——————-+——————————————————+| Property | Value |+——————-+——————————————————+| adminurl | http://controller:35357/v2。0 || id | 0350b72901a141498fe48304b13a1b98 || internalurl | http://controller:5000/v2。0|| publicurl | http://controller:5000/v2。0||region |regionOne || service_id | 4bfd5f39b86c45edb92d5c0488987dd8 |+——————-+——————————————————+[root@controller keystone]# keystone user-create ——name=demo ——pass=DEMO_PASS ——email=DEMO_EMAIL+——————+——————————————————+| Property | Value |+——————+——————————————————+| email |DEMO_EMAIL|| enabled | True ||id| b44a9a1462d74f4e928b3b339289a2ae || name | demo || username | demo |+——————+——————————————————+[root@controller keystone]# keystone tenant-create ——name=demo ——description=“Demo Tenant”+——————-+——————————————————+| Property | Value |+——————-+——————————————————+| description | Demo Tenant|| enabled | True || id | 7bd79509ee184a2098ca0644679b60a8 || name| demo |+——————-+——————————————————+[root@controller keystone]# keystone user-role-add ——user=demo ——role=_member_ ——tenant=demo[root@controller keystone]#
為了方便我們取到token,我們可以vi admin-openrc。sh,然後新增如下內容:
export OS_USERNAME=adminexport OS_PASSWORD=ADMIN_PASSexport OS_TENANT_NAME=adminexport OS_AUTH_URL=http://controller:35357/v2。0
在每次關機重啟之後都要重新執行下面的命令,讓環境變數起作用。否則會報”Expecting an auth URL via either –os-auth-url or env[OS_AUTH_URL]”的錯誤:
source admin-openrc。sh
我們可以使用下面的命令檢視keystone目前的使用者有哪些:
keystone user-list
測試效果:
開啟restclient-ui-3。5-jar-with-dependencies。jar來測試效果:
url地址是: http://192。168。1。2:5000/v2。0/