成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

專家教你純手工部署 OpenStack 最小系統

云計算 OpenStack
本文的目標是安裝一個最小化的 openstack 環境。通過這個過程了解一下構成 openstack 的基本組件都有哪些以及這些組件之間是如何相互配合的。

專家教你純手工部署 OpenStack 最小系統

目標是安裝一個最小化的 openstack 環境。通過這個過程了解一下構成 openstack 的基本組件都有哪些以及這些組件之間是如何相互配合的。

為了說明起來方便,所有的操作都是以 Ubuntu 12.04 為操作系統進行的。

部署基礎服務

首先,openstack 重度依賴 Message Queue 和 Database 兩種服務。這里我選擇使用 RabbitMQ 和 MySQL 分別來承擔相應的角色。

部署 RabbitMQ

RabbitMQ 是一個開源消息中間件。openstack 中很多子系統會依賴它來進行 RPC (Remote Procedure Call) 調用。

安裝

 

  1. apt-get install rabbitmq-server 
  2. service rabbitmq-server start 

 

配置

RabbitMQ 默認的管理員賬戶和密碼是 guest/guest 。但可以通過下面的命令修改 guest 賬戶的密碼。例如:設置 guest 的密碼為 =openstack=。

 

  1. rabbitmqctl change_password guest openstack 

驗證

使用 rabbitmqctl 工具檢查 RabbitMQ 是否安裝成功,若有狀態輸出則表示 RabbitMQ 啟動成功了。

 

  1. rabbitmqctl status 

部署 MySQL

MySQL 是最常用的開源數據庫。openstack 中幾乎所有系統和用戶信息都是存儲在數據庫中的。

安裝

由于后面需要編譯 python 對 mysql 的支持模塊。這里需要一并安裝 libmysql++-dev

  1. apt-get install mysql-server mysql-client libmysql++-dev 
  2. service mysql start 

配置

MySQL 服務啟動后,首先需要配置管理員(root)的密碼。

  1. mysqladmin -u root password openstack 

驗證

登陸進 MySQL 跑一個 SQL 來驗證安裝是否正確,

  1. mysql -h localhost -u root -p -e 'select version();' 

 

  1. +-----------------------------+ 
  2. | version()                   | 
  3. +-----------------------------+ 
  4. | 5.5.31-0ubuntu0.13.04.1-log | 
  5. +-----------------------------+ 

 

安裝虛擬化軟件

在安裝 openstack 之前,還需要安裝操作系統對虛擬化支持相關的服務,

  1. apt-get install libvirt-bin libvirt-dev qemu-kvm 

部署 openstack

即使是安裝最小化的 openstack 需要啟動的服務也是非常多的。為了能夠方便調試,要使用 screen 來啟動每個服務。 screen 的便利之處在于不用把服務放在后臺啟動,可以隨時 Ctrl+C 中斷服務進行調整。

openstack 的源代碼可以從他的 Git 倉庫獲取。代碼分支上***選擇穩定版本,例如目前的穩定版分支是 stable/grizzly 。選擇穩定版本分支的好處是不用為了當前版本的 Bug 耽誤時間。當然,如果以嘗鮮為目的也可以嘗試使用 master 分支進行部署。

在部署和運行這些 openstack 服務的時候,推薦使用 python 的 virtualenv來創建一個獨立的 python 運行環境。這是因為 openstack 里面用到的一些 python 庫 ubuntu 上可能沒有打包,因此這類包就需要通過 pip 進行安裝。建立獨立 python 運行環境的目的就是為了這類包不干擾系統自身的 python 環境。

每個 openstack 服務都有自己的配置文件,源代碼中會包含多個擴展名為 .sample 的例子文件。以這些例子作為基礎會讓配置簡單很多。

#p#

下面開始正式的部署過程,

創建獨立的 python 運行環境

 

  1. apt-get install virtualenv 
  2. virtualenv openstack-python 
  3. source openstack-python/bin/activate 

 

部署: keystone

keystone 為整個 openstack 系統 AAA (Authentication, Authorization, and Accounting) 服務。在這個最小系統里 keystone 的作用有兩個:

  • [ ] 提供用戶登陸所需的密碼驗證
  • [ ] 通過 keystone 查詢各個服務的 endpoint (訪問地址)

安裝

下載 keystone 源代碼,并切換到 grizzly 版本。然后通過 pip 安裝依賴的 python 庫。

 

  1. git clone https://github.com/openstack/keystone.git 
  2. cd keystone 
  3. git checkout stable/grizzly 
  4. pip install -r tools/pip-requires 
  5. pip install mysql-python 

 

配置及初始化

以源碼包中的 keystone.conf.sample 為基礎,稍作如下修改。并將修改后的文件保存成 keystone.conf 。

 

  1. [DEFAULT] 
  2. admin_token = openstack 
  3. debug = True 
  4. verbose = True 
  5.  
  6. [sql] 
  7. connection = mysql://root:openstack@localhost/keystone 
  8.  
  9. [signing] 
  10. token_format=UUID 

 

配置文件做好后,需要為 keystone 初始化數據庫。

 

  1. mysql  -h localhost -u root -p -e 'create database keystone'
  2. bin/keystone-manage --config-dir etc/ db_sync 

 

啟動服務

keystone 只有一個服務進程。通過下面的命令啟動,

 

  1. bin/keystone-all --config-dir etc/ 

keystone 服務會監聽兩個端口。其中 5000 端口用于和其他 openstack 組件和 keystone 的交互,被稱作 public_port ;另一個端口 35357 用于對 keystone 本身進行管理,被稱作 admin_port 。

當 keystone-all 進程啟動成功后,可以通過 netstat 檢查 端口偵聽是否正常。

 

  1. jianingy@ubuntu:~$ netstat -lntp | grep -E '5000|35357' 
  2. tcp        0      0 0.0.0.0:5000            0.0.0.0:*               LISTEN      9585/python 
  3. tcp        0      0 0.0.0.0:35357           0.0.0.0:*               LISTEN      9585/python 

 

安裝 keystone 客戶端程序

在 keystone 部署完成后,后續有許多要用到他的地方。所以在這里先把 keystone 的客戶端程序安裝好,以備后用。

 

  1. pip install python-keystoneclient 

#p#

創建管理員用戶

openstack 用戶體系簡介

openstack 的用戶管理是基于 keystone 。也就是說 keystone 的用戶體系就是 openstack 的用戶體系。

在這個體系里,最基本的單位是 user/(用戶)。 /user 在 openstack 里面可以代表一個實際的人,也可以代表一個程序或是服務,也就是所謂的系統用戶。無論代表什么 user 是進行登錄驗證、資源分配的最小實體。

user 對資源的訪問通過兩個維度來控制。***個維度是 tenant 。 tenant 在 openstack 里面代表用戶和資源的集合。一個 tenant 下面可以容納多個 user ,而這些 user 只有可能訪問這個 tenant 里面的資源(虛擬機、鏡像、磁盤卷等等)。第二個維度是 role ,role 定義了承載了一組權利。一旦將 role 附加給了一個 user 這個 user 就具備了 role 所具備的權利。兩個維度是邏輯與的關系,在一起共同決定 user 是否能訪問一個資源。

service 指的是 openstack 里承載具體功能的服務。例如:

  • Compute (Nova)
  • Object Storage (Swift)
  • Image Service (Glance)
  • etc …

每一個 openstack 服務通常包含一個或多個 endpoint 。 endpoint 是一個網絡上可訪問的地址,通常是一個 URL 。這個 URL 指出了對應服務的 API 入口。

配置 openstack 環境變量

openstack 所有其他服務的客戶端都需要通過環境變量來獲知認證服務(也就是 keystone )的位置以及用于認證的用戶信息。為了方便使用,需要寫一個包含這些環境變量的腳本 openstackrc 并通過 source 命令引入這些環境變量。

 

  1. #!/bin/sh 
  2. export OS_SERVICE_ENDPOINT="http://localhost:35357/v2.0" 
  3. export OS_SERVICE_TOKEN=openstack 
  4.  
  5. export OS_AUTH_URL="http://localhost:5000/v2.0/" 
  6. export OS_USERNAME=admin 
  7. export OS_PASSWORD=admin 
  8. export OS_TENANT_NAME=admin 

 

這幾個參數的作用是:

OS_SERVICE_ENDPOINT

keystone 的管理地址,通常是 35357 端口

OS_SERVICE_TOKEN

驗證密令,也就是 keystone 配置文件里的 =admin_token=。相當于進行后臺管理用的一個驗證碼。

OS_AUTH_URL

其他服務調用 keystone 的地址,通常是 5000 端口

OS_USERNAME

普通用戶調用 openstack 接口時用的用戶名

OS_PASSWORD

與上面 OS_USERNAME 配對使用的密碼

OS_TENANT_NAME

用戶所要操作 Tenant 的名稱

創建用戶

通常情況下通過 keystone 創建用戶的基本流程是這樣的,

keystone-create-user-activity

然而,***次使用 keystone 時還沒有 tenant 和 role 存在。因此,在執行上述過程之前還需要先通過 keystone tenant-create來創建一個 tenant ;通過 keystone role-create 來創建一個 role 。openstack 有一個默認的約定:名為 admin 的 role 具備管理權限。

創建用戶會是今后經常性的操作并且步驟較多相對繁瑣。這里給出一個腳本來簡化這些的重復勞動,

 

  1. #!/bin/bash 
  2.  
  3. # filename   : keystone-add-user.sh 
  4. # created at : 2013-08-30 16:27:56 
  5. # author     : Jianing Yang <a href="mailto:jianingy%40unitedstack.com">&lt;jianingy@unitedstack.com&gt;</a> 
  6.  
  7. until [ -z "$1" ]; do 
  8.     case "$1" in 
  9.         --tenant) 
  10.             shift 
  11.             opt_tenant=${1:-service} 
  12.         ;; 
  13.         --role) 
  14.             shift 
  15.             opt_role=${1:-admin} 
  16.         ;; 
  17.         --name) 
  18.             shift 
  19.             opt_name=$1 
  20.         ;; 
  21.     esac 
  22.     shift 
  23. done 
  24.  
  25. # find tenant id, create a new one if not exist 
  26. tenant_id=$(keystone tenant-get "$opt_tenant" | awk "/id/{print $4}"
  27. if [ -z "$tenant_id" ]; then 
  28.   keystone tenant-create --name "$opt_tenant" || exit 11 
  29.   tenant_id=$(keystone tenant-get "$opt_tenant" | awk "/id/{print $4}"
  30.   [ -z "$tenant_id" ] &amp;&amp; exit 11 
  31. fi 
  32.  
  33. # find role id, create a new one if not exist 
  34. role_id=$(keystone role-get "$opt_role" | awk "/id/{print $4}"
  35. if [ -z "$role_id" ]; then 
  36.   keystone role-create --name "$opt_role" || exit 22 
  37.   role_id=$(keystone role-get "$opt_role" | awk "/id/{print $4}"
  38.   [ -z "$role_id" ] &amp;&amp; exit 22 
  39. fi 
  40.  
  41. # find user id, create a new user if not exist 
  42. user_id=$(keystone user-get "$opt_name" | awk "/id/{print $4}"
  43. if [ -z "$user_id" ]; then 
  44.   keystone user-create --name "$opt_name" --pass "$opt_name" --email "$opt_name@localhost" --tenant_id "$tenant_id" || exit 33 
  45.   user_id=$(keystone user-get "$opt_name" | awk "/id/{print $4}"
  46.   [ -z "$user_id" ] &amp;&amp; exit 33 
  47. fi 
  48.  
  49. # attach role to user 
  50. keystone user-role-add --user_id "$user_id" --role_id "$role_id" --tenant_id "$tenant_id" | exit 44 

 

使用這個腳本可以輕松地創建出***個用戶即管理員用戶,

 

  1. ./keystone-add-user.sh --tenant admin --role admin --name admin 

注冊***個服務:keystone

每一個 openstack 的服務都要向 keystone 注冊自己的服務地址即 endpoint/。就連 /keystone 自身也不例外。這個注冊的過程需通過 keystone 客戶端來完成。

 

  1. pip install python-keystoneclient 
  2. source openstackrc 
  3. keystone service-create --name=keystone --type=identity --description="Identity Service" 
  4. export KEYSTONE_SERVICE_ID=$(keystone service-list | awk '/keystone/{print $2}'
  5. keystone endpoint-create  
  6.  --region RegionOne  
  7.  --service-id=$KEYSTONE_SERVICE_ID  
  8.  --publicurl=http://localhost:5000/v2.0  
  9.  --internalurl=http://localhost:5000/v2.0  
  10.  --adminurl=http://localhost:35357/v2.0 

 

#p#

TODO 部署計算服務: nova

nova 可以說是整個 openstack 系統的核心。負責整個虛擬機生命周期的管理以及周邊資源的調度。

安裝 nova

與 keystone 的安裝過程一樣,從 git 倉庫中下載源代碼并切換至穩定的 stable/grizzly 分支。

 

  1. git clone http://github.com/openstack/nova.git 
  2. cd nova 
  3. git checkout stable/grizzly 
  4. pip install -r tools/pip-requires 

 

配置及初始化

正如之前在 openstack 用戶體系的描述中提到的, nova 作為一個服務也需要創建一個與之對應的用戶,

 

  1. ./keystone-add-user.sh --tenant service --role admin --name nova 

接下來將用戶的登錄信息寫入配置文件: etc/nova/api-paste.ini 。請對比下列內容進行修改。選項 auth_* 關系到keystone API 的訪問。 admin_* 則提供了用戶認證所需的信息。

 

  1. [filter:authtoken] 
  2. paste.filter_factory = keystoneclient.middleware.auth_token:filter_factory 
  3. auth_host = 127.0.0.1 
  4. auth_port = 35357 
  5. auth_protocol = http 
  6. admin_tenant_name = service 
  7. admin_user = nova 
  8. admin_password = nova 
  9. signing_dir = /tmp/keystone-signing 

 

下面該配置 nova 本身了。以源碼包中的 etc/nova/nova.conf.sample 為基礎進行配置。將配置好的文件另存為=etc/nova/nova.conf= 。這里我們選用剛剛安裝的 libvirt 作為虛擬化后端。

 

  1. [DEFAULT] 
  2.  
  3. auth_strategy=keystone 
  4.  
  5. compute_driver = libvirt.LibvirtDriver 
  6. sql_connection=mysql://root:openstack@localhost/nova 
  7. debug=true 
  8. verbose=true 
  9.  
  10. rabbit_host=localhost 
  11. rabbit_port=5672 
  12. rabbit_hosts=$rabbit_host:$rabbit_port 
  13. rabbit_use_ssl=false 
  14. rabbit_userid=guest 
  15. rabbit_password=openstack 
  16. rabbit_virtual_host=/ 
  17.  
  18. rootwrap_config=etc/nova/rootwrap.conf 

 

nova 中的很多操作需要 root 權限來執行。/nova/ 會使用 sudo 來執行這些操作。處于安全考慮 nova 使用被稱為 rootwrap 的機制來控制哪些命令可以被 sudo 以 root 權限執行。具體的規則源碼中的配置文件已經寫好,這里只需要修改下規則文件存放的路徑即可。請對比下列配置修改 etc/nova/rootwrap.conf 。

 

  1. [DEFAULT] 
  2. # List of directories to load filter definitions from (separated by ','). 
  3. # These directories MUST all be only writeable by root ! 
  4. filters_path=etc/nova/rootwrap.d,/usr/share/nova/rootwrap 

 

***,初始化 nova 的數據庫,

 

  1. mysql -u root -p -e 'create database nova'
  2. bin/nova-manage --config-dir etc/ --config-file etc/nova/nova.conf db sync 

 

注冊 nova 服務

為了讓其他服務能找到 nova 的所在,需要在 keystone 里注冊 nova 的 endpoint ,

 

  1. keystone service-create --name nova --type compute --description 'OpenStack Compute Service' 
  2. export NOVA_SERVICE_ID=$(keystone service-list | awk '/nova/{print $2}'
  3. keystone endpoint-create --region RegionOne --service-id $NOVA_SERVICE_ID --publicurl 'http://127.0.0.1:8774/v2/%(tenant_id)s' --adminurl 'http://127.0.0.1:8774/v2/%(tenant_id)s' --internalurl 'http://127.0.0.1:8774/v2/%(tenant_id)s' 

 

啟動服務

 

  1. bin/nova-api --config-dir etc/ --config-file etc/nova/nova.conf 
  2. bin/nova-compute --config-dir etc/ --config-file etc/nova/nova.conf 
  3. bin/nova-conductor --config-dir etc/ --config-file etc/nova/nova.conf 

TODO 部署 openstack 管理前端:horizon

安裝

 

  1. git clone https://github.com/openstack/horizon 
  2. cd horizon 
  3. git checkout stable/grizzly 
  4. pip install -r tools/pip-requires 

 

配置及初始化

horizon 是一個基于 django 寫成的前端程序,其配置方式遵循 django 習慣。 horizon 的配置文件位于其源碼目錄下的openstack_dashboard/local/local_settings.py 。該文件可以基于同目錄下的 local_settings.py.example 進行配置。

 

  1. cd openstack_dashboard/local 
  2. cp -v local_settings.py{.example,} 

 

啟動服務

  1. python ./manage.py runserver 0.0.0.0:8000 

服務啟動后就可以通過瀏覽器進行訪問了。

博文出處:https://www.ustack.com/blog/%E7%BA%AF%E6%89%8B%E5%B7%A5%E9%83%A8%E7%BD%B2openstack%E6%9C%80%E5%B0%8F%E7%B3%BB%E7%BB%9F/?belong=industry-news
 

責任編輯:Ophira 來源: ustack博客
相關推薦

2009-12-29 13:46:06

2011-07-29 14:39:20

Sql ServerCLR

2010-06-11 12:47:34

UML視圖

2009-12-30 10:41:29

ISDN撥號

2012-11-12 10:48:36

2010-07-09 10:37:00

視頻服務器DIY

2011-06-09 09:59:16

2010-07-14 14:30:13

2010-09-15 13:45:01

2010-08-05 09:02:49

2009-12-21 09:52:03

2018-07-19 05:13:38

2015-10-26 11:53:36

OpenStackOpenStack部署RDO

2015-05-26 17:56:58

2016-10-09 20:08:58

2017-03-10 08:35:49

數字化

2016-10-13 19:42:28

鍵盤手工打造機械鍵盤

2009-12-07 14:26:47

WCF異步調用

2009-12-04 13:05:54

Visual Stud

2009-11-26 09:35:54

VS2003安裝包
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久久久国产精品 | 一区二区三区精品视频 | 激情五月婷婷丁香 | 黄色毛片在线观看 | 极品的亚洲 | 九色视频网站 | 亚洲三区在线观看 | 国产精品www| 一区二区三区免费 | 久久aⅴ乱码一区二区三区 91综合网 | 欧美黄色免费网站 | 精品熟人一区二区三区四区 | 一级毛片视频免费观看 | 综合色播 | 久久国产综合 | 国产成人99久久亚洲综合精品 | 亚洲成a人片 | 亚洲国产自产 | 国产精品视频久久久 | 免费在线观看av片 | 欧美在线视频网站 | 一级片免费视频 | 久草.com | 九九热免费在线观看 | av中文字幕在线观看 | 少妇性l交大片免费一 | 毛片视频免费观看 | 亚洲一区二区三区视频 | 一级特黄网站 | 午夜影院 | 免费观看黄a一级视频 | 国产精品99久久久久久宅男 | 久久精品91 | 成人一区二区三区在线观看 | 欧美专区在线 | 啪视频在线 | 日本超碰 | 超碰在线人人 | 亚洲精品66 | 国产精品一码二码三码在线 | 欧美日韩亚洲国产 |