OpenStack Swift集羣與Keystone的整合使用說明

以前已經介紹了OpenStack Swift集羣Keystone的安裝部署,最後來說一講Swift集羣與Keystone的整合使用吧。php

 

1. 簡介

  本文檔描述了Keystone與Swift集羣的整合使用方法,即Swift經過Keystone完成用戶的身份認證與權限控制,而不是採用自帶的TempAuth。本文檔假定以下前提條件:html

  1. 用戶已閱讀文檔《Keystone安裝部署流程》和《Swift集羣部署流程》,並按照上述文檔分別部署了Keystone與Swift集羣。
  2. 用戶已掌握了Keystone與Swift的基本使用方法。
  3. 全部PC使用Ubuntu操做系統。
  4. Keystone部署在PC1上,Swift集羣部署在PC2和PC3上。
  5. PC2和PC3都運行Swift的全部服務,既是Proxy Server,又是Storage Server,用戶能夠向任何一臺發起存儲服務請求。
  6. Keystone爲多Proxy Server的Swift集羣提供身份認證與權限控制。(單Proxy Server的狀況比較簡單,相信看完本文檔後你就懂了)
  7. PC2和PC3構成memcached集羣來提供Token緩存服務。
  8. 全部操做均在root用戶下進行,並使用root做爲Swift的用戶和組。
  9. 全部機器都運行在局域網中。
  10. 使用迴環設備和XFS文件系統做爲Swift底層存儲。

2. 安裝部署

  爲了可以讓Swift經過Keystone完成用戶的身份認證與權限控制,咱們須要在完成Keystone與Swift集羣部署的基礎上,稍做修改。前端

2.1 準備環境

 

PC 1python

PC 2linux

PC 3git

機器類型:github

PC物理機sql

PC物理機數據庫

PC物理機json

操做系統:

Ubuntu-12.04-desktop

(64位)

Ubuntu-12.04-desktop

(64位)

Ubuntu-12.04-desktop

(64位)

用戶類型:

root

root

root

數據庫:

sqlite3

sqlite3

sqlite3

IP地址:

192.168.3.67(局域網)

192.168.3.52(局域網)

192.168.3.53(局域網)

Keystone

 

 

Proxy Server

 

Storage Server

 

Auth

 

Keystone

Keystone

Token緩存:

 

memcached

memcached

2.2 版本說明

  1. Swift版本:1.7.6
  2. python-swiftclient版本:1.2.0
  3. Keystone版本:git上的Master版

  可參照文檔《Keystone安裝部署流程》和《Swift集羣部署流程》。Swift須要調用python-keystoneclient中的組件來訪問Keystone,所以須要爲其安裝python-keystoneclient(可採用安裝Keystone依賴項的方式)。所以,請務必確保各處安裝的Keystone與python-keystoneclient的版本統一,不然可能出現版本兼容性問題(我就曾遇到Swift中安裝的python-keystoneclient和PC1上的Keystone服務的版本不統一,致使的版本兼容性問題,沒法經過驗證,最後從新下載安裝全部的python-keystoneclient與Keystone才予以解決)。

2.3 Keystone的部署

  PC1上已經按照文檔《Keystone安裝部署流程》部署了Keystone,在整合使用過程當中無需進行修改。爲完整演示Keystone與Swift集羣的整合使用過程,咱們須要清空Keystone的記錄的數據。先刪除存儲Keystone數據的DB文件,而後同步數據庫schema並啓動Keystone服務便可。

# rm -f ~/keystone.db

# keystone-manage db_sync

# keystone-all

2.4 Swift集羣的部署

  PC2和PC3上已經按照文檔《Swift集羣部署流程》部署了Swift集羣,爲了使其能經過Keystone完成用戶的身份認證與權限控制,須要對PC2和PC3做出必定的修改。如下操做同時應用於PC2和PC3。

  1. 停掉Swift的全部服務。

# stopall

  2. Swift須要調用python-keystoneclient中的組件來訪問Keystone,所以須要爲其安裝python-keystoneclient。爲了不版本兼容性問題,推薦採用安裝Keystone依賴項的方式,固然你也能夠獨立地去下載安裝python-keystoneclient。我從git上獲取最新的Keystone Service代碼,安裝Keystone的依賴項,並將Keystone安裝到Python的package裏。這裏只安裝依賴項中的tools/pip-requires便可,該依賴項中包含了python-keystoneclient。若是安裝了tools/test-requires則會覆蓋掉已安裝的Swift,你就須要本身從新安裝Swift了,這在文檔《Keystone安裝部署流程》中已詳細說明。

# cd ~

# git clone https://github.com/openstack/keystone.git

# cd ~/keystone

# pip install -r tools/pip-requires

# python setup.py install

  3. 修改Swift中的proxy-server配置文件/etc/swift/proxy-server.conf。在其中添加authtokenkeystoneauth組件,並將pipeline中的tempauth改成authtoken與keystoneauth,表示採用Keystone而不是TempAuth來完成用戶身份認證和權限控制。authtoken是python-keystoneclient中的組件,用於訪問Keystone;keystoneauth是Swift中的組件,用於一些附加的條件設置。

[DEFAULT]

bind_port = 8080

user = root

workers = 8

log_facility = LOG_LOCAL1

 

[pipeline:main]

pipeline = healthcheck cache authtoken keystoneauth proxy-logging proxy-server

 

[app:proxy-server]

use = egg:swift#proxy

allow_account_management = true

account_autocreate = true

 

[filter:tempauth]

use = egg:swift#tempauth

user_admin_admin = admin .admin .reseller_admin

user_test_tester = testing .admin

user_test2_tester2 = testing2 .admin

user_test_tester3 = testing3

reseller_prefix = AUTH

token_life = 86400

 

[filter:authtoken]

paste.filter_factory = keystoneclient.middleware.auth_token:filter_factory

# 如下各項是根據Keystone配置文件中的參數及其所在PC來設置的。

auth_host = 192.168.3.67

# Keystone提供的認證受權、系統管理服務的IP地址,一般爲內網。

auth_port = 35357

# Keystone提供的認證受權、系統管理服務監聽的端口,一般爲內網。

auth_protocol = http

# 訪問Keystone所使用的協議,http或https

service_host = 192.168.3.67

# Keystone提供的認證受權服務的IP地址,一般爲公網(外網),也能夠是內網

service_port = 5000

# Keystone提供的認證受權服務監聽的端口,一般爲公網(外網),也能夠是內網。

admin_token = ADMIN

# admin_token參數是用來訪問Keystone服務的,即Keystone服務的Token。可使用該Token訪問Keystone服務、查看信息、建立其餘服務等。

 

[filter:keystoneauth]

use = egg:swift#keystoneauth

operator_roles = adminRole, swiftoperator

# 容許訪問並使用Swift的角色

reseller_prefix = AUTH_

# account的命名前綴,注意此處必須加「_」。

# 例如http://192.168.3.52:8080/v1/AUTH_54d3db64adfc4731b5222cac974f8bc5

 

[filter:healthcheck]

use = egg:swift#healthcheck

 

[filter:cache]

use = egg:swift#memcache

memcache_servers = 192.168.3.52:11211,192.168.3.53:11211

 

[filter:proxy-logging]

use = egg:swift#proxy_logging

  4. 至此,咱們已經完成了對Swift的修改。如今能夠啓動Swift服務了

# startmain

# startall

3. 使用實例

3.1 建立Tenant、User和Role

  咱們將建立名稱爲adminTenant的Tenant(租戶)、名稱爲admin的User(用戶)以及名稱爲adminRole的Role(角色),並將它們關聯起來。最終的結果表現爲:一個名叫admin的用戶,擁有名爲adminRole的角色身份,而且可以使用名爲adminTennant的租戶。須要說明的是:2.4節中配置文件裏的「operator_roles = adminRole, swiftoperator」項代表,角色爲adminRole或swiftoperator的用戶才能訪問Swift,因此此處才選擇建立adminRole角色。

  1. 建立Tenant,租戶名爲adminTenant,描述信息爲Admin Tenant。請記住該命令生成的Tenant id,下面添加User時須要用到。

# keystone tenant-create --name adminTenant --description "Admin Tenant" --enabled true

+-------------+----------------------------------+

|   Property  |              Value               |

+-------------+----------------------------------+

| description |           Admin Tenant           |

|   enabled   |               True               |

|      id     | 54d3db64adfc4731b5222cac974f8bc5 |

|     name    |           adminTenant            |

+-------------+----------------------------------+

  2. 建立User,用戶名爲admin,密碼爲openstack。請記住該命令生成的User id,下面的關聯命令須要用到。

# keystone user-create --tenant_id 54d3db64adfc4731b5222cac974f8bc5 --name admin --pass openstack --enabled true

+----------+----------------------------------+

| Property |              Value               |

+----------+----------------------------------+

|  email   |                                  |

| enabled  |               True               |

|    id    | b14c99dbaad14a78a37aa7361201062f |

|   name   |              admin               |

| tenantId | 54d3db64adfc4731b5222cac974f8bc5 |

+----------+----------------------------------+

  3. 建立Role,角色名爲adminRole。請記住該命令生成的Role id,下面的關聯命令須要用到。

# keystone role-create --name adminRole

+----------+----------------------------------+

| Property |              Value               |

+----------+----------------------------------+

|    id    | 1bf9a3ac155d4fd4abe5646abcc0de7a |

|   name   |            adminRole             |

+----------+----------------------------------+

  4. 至此,咱們已經建立了一個Ttenant,一個Uuser以及一個Rrole,它們的id分別是:

tenant_id:54d3db64adfc4731b5222cac974f8bc5

user_id:b14c99dbaad14a78a37aa7361201062f

role_id:1bf9a3ac155d4fd4abe5646abcc0de7a

  5. 最後,咱們要使用上述三個id,並經過下面的命令來將三者關聯起來。

# keystone user-role-add --user-id b14c99dbaad14a78a37aa7361201062f --tenant-id 54d3db64adfc4731b5222cac974f8bc5 --role-id 1bf9a3ac155d4fd4abe5646abcc0de7a

  此時,讓咱們再使用list命令查看一下Tenant、User和Role的信息。

# keystone tenant-list

+----------------------------------+-------------+---------+

|                id                |     name    | enabled |

+----------------------------------+-------------+---------+

| 54d3db64adfc4731b5222cac974f8bc5 | adminTenant |   True  |

+----------------------------------+-------------+---------+

 

# keystone user-list

+----------------------------------+-------+---------+-------+

|                id                |  name | enabled | email |

+----------------------------------+-------+---------+-------+

| b14c99dbaad14a78a37aa7361201062f | admin |   True  |       |

+----------------------------------+-------+---------+-------+

  注:「_member_」角色是Keystone預設的,彷佛會和每一個用戶關聯。這是新版本Keystone中出現的,目的暫時不明。

# keystone role-list

+----------------------------------+-----------+

|                id                |    name   |

+----------------------------------+-----------+

| 9fe2ff9ee4384b1894a90878d3e92bab |  _member_ |

| 1bf9a3ac155d4fd4abe5646abcc0de7a | adminRole |

+----------------------------------+-----------+

3.2 建立Service和Endpoint

  爲了讓上面建立的用戶可以使用Swift存儲服務,咱們將建立名稱爲Swift的Service(服務),而後根據現有Swift集羣的狀況爲租戶添加Endpoint(端點,服務入口),而後用戶就可以訪問Endpoint來使用Swift存儲服務了。須要說明的是:服務和租戶關聯後成爲Endpoint,即該租戶可以使用該服務,不一樣服務和不一樣租戶的組合會產生不一樣的Endpoint;同時,用戶又會和租戶相關聯,代表用戶可以使用該租戶;因而,只要用戶所屬的角色被容許訪問Swift,那麼該用戶就能真正地訪問並使用Swift了;

  1. 建立Service,服務名爲Swift,服務類型爲object-store,描述信息爲Swift Object Store Service。請記住該命令生成的Service id,下面添加Endpoint時須要用到。

# keystone service-create --name=Swift --type=object-store --description="Swift Object Store Service"

+-------------+----------------------------------+

|   Property  |              Value               |

+-------------+----------------------------------+

| description |    Swift Object Store Service    |

|      id     | cab139be777545a893d1bd26a03730c9 |

|     name    |              Swift               |

|     type    |           object-store           |

+-------------+----------------------------------+

  2. 因爲咱們的Swift是集羣,而且有兩個Proxy Server,若是Swift前端存在某種負載均衡設備,那麼該負載均衡設備就是惟一的Endpoint(服務入口),用戶經過Keystone的認證後,得到的就是這個負載均衡設備的訪問地址;然而,咱們沒有負載均衡設備,這就意味着Swift存在兩個Endpoint(服務入口),分別爲PC2和PC3,用戶經過Keystone的認證後,應該能夠同時得到這兩個Endpoint,而後隨意選取一個來訪問。所以,咱們須要爲租戶添加兩個Endpoint,分別對應PC2和PC3。

#keystone endpoint-create --region RegionOne --service_id cab139be777545a893d1bd26a03730c9 --publicurl http://192.168.3.52:8080/v1/AUTH_54d3db64adfc4731b5222cac974f8bc5 --adminurl http://192.168.3.52:8080 --internalurl http://192.168.3.52:8080/v1/AUTH_54d3db64adfc4731b5222cac974f8bc5

+-------------+-------------------------------------------------------------------+

|   Property  |                               Value                               |

+-------------+-------------------------------------------------------------------+

|   adminurl  |                      http://192.168.3.52:8080                     |

|      id     |                  6f12e2e82ca44c789c18bdb9d4bbd0dc                 |

| internalurl | http://192.168.3.52:8080/v1/AUTH_54d3db64adfc4731b5222cac974f8bc5 |

|  publicurl  | http://192.168.3.52:8080/v1/AUTH_54d3db64adfc4731b5222cac974f8bc5 |

|    region   |                             RegionOne                             |

|  service_id |                  cab139be777545a893d1bd26a03730c9                 |

+-------------+-------------------------------------------------------------------+

 

# keystone endpoint-create --region RegionTwo --service_id cab139be777545a893d1bd26a03730c9 --publicurl http://192.168.3.53:8080/v1/AUTH_54d3db64adfc4731b5222cac974f8bc5 --adminurl http://192.168.3.53:8080 --internalurl http://192.168.3.53:8080/v1/AUTH_54d3db64adfc4731b5222cac974f8bc5

+-------------+-------------------------------------------------------------------+

|   Property  |                               Value                               |

+-------------+-------------------------------------------------------------------+

|   adminurl  |                      http://192.168.3.53:8080                     |

|      id     |                  2722feff369b4c2d99fca9e4414276b4                 |

| internalurl | http://192.168.3.53:8080/v1/AUTH_54d3db64adfc4731b5222cac974f8bc5 |

|  publicurl  | http://192.168.3.53:8080/v1/AUTH_54d3db64adfc4731b5222cac974f8bc5 |

|    region   |                             RegionTwo                             |

|  service_id |                  cab139be777545a893d1bd26a03730c9                 |

+-------------+-------------------------------------------------------------------+

  這裏解釋一下上面的命令:region表示域,本來同一個服務和同一個租戶關聯產生的Endpoint是惟一的,爲使其能支持多個Endpoint(如上文中的PC2和PC3),便加入了域的概念,即同一個服務和同一個租戶能夠關聯產生多個Endpoint,每一個Endpoint用region來標示加以區別,如上面的RegionOneRegionTwopublicurl表示該Endpoint的公網(外網)服務入口(普通服務);adminurl表示該Endpoint的管理員服務入口,通常爲內網;internalurl表示該Endpoint的內網服務入口(普通服務);本文檔的前提環境爲局域網,所以publicurl和internalurl能夠設置爲相同的;192.168.3.52192.168.3.53分別是PC2和PC3的IP地址;AUTH_54d3db64adfc4731b5222cac974f8bc5是「AUTH_」前綴加租戶ID,「AUTH_」前綴在2.4節中已有介紹,而租戶ID則代表這些Endpoint是由某個特定的租戶和Service關聯產生的。

  最後,讓咱們再使用list命令查看一下Service和Endpoint的信息。

# keystone endpoint-list

+----------------------------------+-----------+-------------------------------------------------------------------+-------------------------------------------------------------------+--------------------------+----------------------------------+

|                id                |   region  |                             publicurl                             |                            internalurl                            |         adminurl         |            service_id            |

+----------------------------------+-----------+-------------------------------------------------------------------+-------------------------------------------------------------------+--------------------------+----------------------------------+

| 2722feff369b4c2d99fca9e4414276b4 | RegionTwo | http://192.168.3.53:8080/v1/AUTH_54d3db64adfc4731b5222cac974f8bc5 | http://192.168.3.53:8080/v1/AUTH_54d3db64adfc4731b5222cac974f8bc5 | http://192.168.3.53:8080 | cab139be777545a893d1bd26a03730c9 |

| 6f12e2e82ca44c789c18bdb9d4bbd0dc | RegionOne | http://192.168.3.52:8080/v1/AUTH_54d3db64adfc4731b5222cac974f8bc5 | http://192.168.3.52:8080/v1/AUTH_54d3db64adfc4731b5222cac974f8bc5 | http://192.168.3.52:8080 | cab139be777545a893d1bd26a03730c9 |

+----------------------------------+-----------+-------------------------------------------------------------------+-------------------------------------------------------------------+--------------------------+----------------------------------+

3.3 用curl測試

  1. 上面已經完成了Tenant、User、Role、Service和Endpoint的建立,因而咱們就能夠訪問Keystone,來獲取Token和Endpoint了。咱們使用curl命令來訪問Keyston,該命令須要給定四個參數,即tenantName(租戶名,也可理解爲帳戶名)、username(用戶名)、password(用戶密碼)以及認證與受權申請的地址(http://192.168.3.67:35357/v2.0/tokens或http://192.168.3.67:5000/v2.0/tokens都可)。此外,返回信息會以json格式展示。返回信息比較全面,包括了token和不一樣region的Endpoint,以下所示:

# curl -d '{"auth": {"tenantName": "adminTenant", "passwordCredentials":{"username": "admin", "password": "openstack"}}}' -H "Content-type: application/json" http://192.168.3.67:5000/v2.0/tokens | python -mjson.tool

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

                                 Dload  Upload   Total   Spent    Left  Speed

100  1301    0  1192  100   109  19348   1769 --:--:-- --:--:-- --:--:-- 19866

{

    "access": {

        "metadata": {

            "is_admin": 0,

            "roles": [

                "9fe2ff9ee4384b1894a90878d3e92bab",

                "1bf9a3ac155d4fd4abe5646abcc0de7a"

            ]

        },

        "serviceCatalog": [

            {

                "endpoints": [

                    {

                        "adminURL": "http://192.168.3.52:8080",

                        "id": "482686e2d58644f99971733c3f53f480",

                        "internalURL": "http://192.168.3.52:8080/v1/AUTH_54d3db64adfc4731b5222cac974f8bc5",

                        "publicURL": "http://192.168.3.52:8080/v1/AUTH_54d3db64adfc4731b5222cac974f8bc5",

                        "region": "RegionOne"

                    },

                    {

                        "adminURL": "http://192.168.3.53:8080",

                        "id": "ec6489bafae448088f09c51ddacebeaf",

                        "internalURL": "http://192.168.3.53:8080/v1/AUTH_54d3db64adfc4731b5222cac974f8bc5",

                        "publicURL": "http://192.168.3.53:8080/v1/AUTH_54d3db64adfc4731b5222cac974f8bc5",

                        "region": "RegionTwo"

                    }

                ],

                "endpoints_links": [],

                "name": "Swift",

                "type": "object-store"

            }

        ],

        "token": {

            "expires": "2013-04-09T13:51:07Z",

            "id": "c8d5d45c42484c7d81d6d2ddd1c1258b",

            "issued_at": "2013-04-08T13:51:07.553241",

            "tenant": {

                "description": "Admin Tenant",

                "enabled": true,

                "id": "54d3db64adfc4731b5222cac974f8bc5",

                "name": "adminTenant"

            }

        },

        "user": {

            "id": "b14c99dbaad14a78a37aa7361201062f",

            "name": "admin",

            "roles": [

                {

                    "name": "_member_"

                },

                {

                    "name": "adminRole"

                }

            ],

            "roles_links": [],

            "username": "admin"

        }

    }

}

  2. 接着就能夠用獲取到的token和Endpoint訪問Swift服務了。先用其中一個Endpoint(PC2)查看該Account的信息。

# curl -v -H 'X-Auth-Token: c8d5d45c42484c7d81d6d2ddd1c1258b' http://192.168.3.52:8080/v1/AUTH_54d3db64adfc4731b5222cac974f8bc5

* About to connect() to 192.168.3.52 port 8080 (#0)

*   Trying 192.168.3.52... connected

* Connected to 192.168.3.52 (192.168.3.52) port 8080 (#0)

> GET /v1/AUTH_54d3db64adfc4731b5222cac974f8bc5 HTTP/1.1

> User-Agent: curl/7.21.6 (x86_64-pc-linux-gnu) libcurl/7.21.6 OpenSSL/1.0.0e zlib/1.2.3.4 libidn/1.22 librtmp/2.3

> Host: 192.168.3.52:8080

> Accept: */*

> X-Auth-Token: c8d5d45c42484c7d81d6d2ddd1c1258b

>

< HTTP/1.1 204 No Content

< Content-Length: 0

< Accept-Ranges: bytes

< X-Timestamp: 1365429097.95942

< X-Account-Bytes-Used: 0

< X-Account-Container-Count: 0

< Content-Type: text/html; charset=UTF-8

< X-Account-Object-Count: 0

< Date: Mon, 08 Apr 2013 13:51:38 GMT

<

* Connection #0 to host 192.168.3.52 left intact

* Closing connection #0

 

# curl -X HEAD -i -H 'X-Auth-Token: c8d5d45c42484c7d81d6d2ddd1c1258b' http://192.168.3.52:8080/v1/AUTH_54d3db64adfc4731b5222cac974f8bc5

HTTP/1.1 204 No Content

Content-Length: 0

Accept-Ranges: bytes

X-Timestamp: 1365429097.95942

X-Account-Bytes-Used: 0

X-Account-Container-Count: 0

Content-Type: text/plain; charset=utf-8

X-Account-Object-Count: 0

Date: Mon, 08 Apr 2013 13:52:18 GMT

  3. 再嘗試另外一個Endpoint(PC3)查看該的Account信息。

# curl -v -H 'X-Auth-Token: c8d5d45c42484c7d81d6d2ddd1c1258b' http://192.168.3.53:8080/v1/AUTH_54d3db64adfc4731b5222cac974f8bc5

* About to connect() to 192.168.3.53 port 8080 (#0)

*   Trying 192.168.3.53... connected

* Connected to 192.168.3.53 (192.168.3.53) port 8080 (#0)

> GET /v1/AUTH_54d3db64adfc4731b5222cac974f8bc5 HTTP/1.1

> User-Agent: curl/7.21.6 (x86_64-pc-linux-gnu) libcurl/7.21.6 OpenSSL/1.0.0e zlib/1.2.3.4 libidn/1.22 librtmp/2.3

> Host: 192.168.3.53:8080

> Accept: */*

> X-Auth-Token: c8d5d45c42484c7d81d6d2ddd1c1258b

>

< HTTP/1.1 204 No Content

< Content-Length: 0

< Accept-Ranges: bytes

< X-Timestamp: 1365429097.95942

< X-Account-Bytes-Used: 0

< X-Account-Container-Count: 0

< Content-Type: text/html; charset=UTF-8

< X-Account-Object-Count: 0

< Date: Mon, 08 Apr 2013 13:53:07 GMT

<

* Connection #0 to host 192.168.3.53 left intact

* Closing connection #0

  4. 獲取該Account中的Container列表,因爲不曾建立Container,因此是空的。

# curl -X GET -H 'X-Auth-Token: c8d5d45c42484c7d81d6d2ddd1c1258b' http://192.168.3.53:8080/v1/AUTH_54d3db64adfc4731b5222cac974f8bc5

 

3.4 用Swift客戶端測試

  1. 接着,咱們使用Swift客戶端進行測試。先查看該Account的信息,提交的參數是Keystone的訪問地址、租戶名、用戶名、用戶密碼。

# swift -V 2 -A http://192.168.3.67:5000/v2.0 -U adminTenant:admin -K openstack stat

   Account: AUTH_54d3db64adfc4731b5222cac974f8bc5

Containers: 0

   Objects: 0

     Bytes: 0

Accept-Ranges: bytes

X-Timestamp: 1365429097.95942

Content-Type: text/plain; charset=utf-8

 

  2. 獲取該Account中的Container列表,因爲不曾建立Container,因此是空的。

# swift -V 2 -A http://192.168.3.67:5000/v2.0 -U adminTenant:admin -K openstack list

 

  3. 在該Account中建立幾個Container。經過查看PC2和PC3上Storage Server的存儲目錄,能夠看到5個Container中有3個存儲在PC2上,2個存儲在PC3上。

# swift -V 2 -A http://192.168.3.67:5000/v2.0 -U adminTenant:admin -K openstack post myContainer1

# swift -V 2 -A http://192.168.3.67:5000/v2.0 -U adminTenant:admin -K openstack post myContainer2

# swift -V 2 -A http://192.168.3.67:5000/v2.0 -U adminTenant:admin -K openstack post myContainer3

# swift -V 2 -A http://192.168.3.67:5000/v2.0 -U adminTenant:admin -K openstack post myContainer4

# swift -V 2 -A http://192.168.3.67:5000/v2.0 -U adminTenant:admin -K openstack post myContainer5

 

  4. 再次獲取該Account中的Container列表。

# swift -V 2 -A http://192.168.3.67:5000/v2.0 -U adminTenant:admin -K openstack list

myContainer1

myContainer2

myContainer3

myContainer4

myContainer5

  上述使用實例闡述瞭如何用Keystone爲Swift集羣提供身份認證與權限控制。結果代表,Keystone正確地爲多Proxy Server的Swift集羣提供了身份認證與權限控制。至此,你應該已經完整地瞭解了Keystone和Swift集羣的整合使用。

4. 參考連接

4.1 官方連接

  • Middleware Architecture

    http://docs.openstack.org/developer/keystone/middlewarearchitecture.html

  • keystoneclient auth_token does not work with old versions of keystone

    https://bugs.launchpad.net/python-keystoneclient/+bug/1159911

4.2 非官方連接

  • Openstack Hands on lab 2: Swift安裝並使用Keystone作身份驗證

    http://liangbo.me/index.php/2012/03/29/openstack-hands-on-lab-2-swift-installation-with-keystone/

  • Class KeystoneAuth

    http://secstack.org/docs/swift_docs/swift.common.middleware.keystoneauth.KeystoneAuth-class.html

相關文章
相關標籤/搜索