溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

部署對象存儲服務(wù)(swift)

發(fā)布時間:2020-06-21 17:54:02 來源:網(wǎng)絡(luò) 閱讀:1343 作者:Kernalzcy 欄目:移動開發(fā)


此文章是看Red Hat 的文章進(jìn)行了一下簡單的翻譯,有很多地方不多的,請多多指教!

原文地址:https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux_OpenStack_Platform/2/html/Getting_Started_Guide/ch08s05.html


  1. 創(chuàng)建swift ring 文件;

  2. 配置keystone認(rèn)證;

  3. 配置swift proxy 代理;

  4. 配置swift stroage nodes 存儲節(jié)點

  5. 測試swift

1個swift proxy 節(jié)點

6個swift storage 節(jié)點包括(accounts, objects, container)

3個zone區(qū)域


每份數(shù)據(jù)復(fù)制3份,也就是一份數(shù)據(jù)保存到3個swift stroage節(jié)點,作為存儲對象的一個副本;


第一步先安裝swift軟件包;

$ sudo yum install -y openstack-swift openstack-swift-proxy \openstack-swift-account openstack-swift-container openstack-swift-object \openstack-utils memcached python-keystone

創(chuàng)建swift ring 文件

需要創(chuàng)建三個ring文件包含所有的存儲設(shè)備細(xì)節(jié),這些都是用來推斷一個特定的數(shù)據(jù)存儲。

在這個列子中創(chuàng)建part power 為12,那么ring分區(qū)就可以達(dá)到4096個,具體的分區(qū)大小可根據(jù)你的生產(chǎn)環(huán)境來分配;

2**12=4096

2**18=262144

更多的信息請查看:http://docs.openstack.org/developer/swift/deployment_guide.html(這個是官方的文檔)

本文主要介紹swift的安裝和部署,假設(shè)keystone的部署和配置一完成,并已配置好authentication認(rèn)證用戶文件keystone_admin

$ source ~/keystonerc_admin
$ sudo swift-ring-builder /etc/swift/account.builder create 12 3 1
$ sudo swift-ring-builder /etc/swift/container.builder create 12 3 1
$ sudo swift-ring-builder /etc/swift/object.builder create 12 3 1

#### 12 3 1 解釋:

12就是ring的分區(qū)是2的12次方,

3是保存數(shù)據(jù)為3份,

1是1個小時檢測一次ring;

注意:這個過程中注意端口別搞錯了!?。。?/span>

一旦創(chuàng)建ring文件存儲設(shè)備需要添加到每個ring,從賬戶中。使用的IP地址swift對象存儲服務(wù)器的帳戶標(biāo)識符

$ sudo swift-ring-builder /etc/swift/account.builder add z1-192.0.43.10:6002/z1d1 100
$ sudo swift-ring-builder /etc/swift/account.builder add z1-192.0.43.10:6002/z1d2 100
$ sudo swift-ring-builder /etc/swift/account.builder add z2-192.0.43.10:6002/z2d1 100
$ sudo swift-ring-builder /etc/swift/account.builder add z2-192.0.43.10:6002/z2d2 100
$ sudo swift-ring-builder /etc/swift/account.builder add z3-192.0.43.10:6002/z3d1 100
$ sudo swift-ring-builder /etc/swift/account.builder add z3-192.0.43.10:6002/z3d2 100

然后是容器(container)

$ sudo swift-ring-builder /etc/swift/object.builder add z1-192.0.43.10:6000/z1d1 100
$ sudo swift-ring-builder /etc/swift/object.builder add z1-192.0.43.10:6000/z1d2 100
$ sudo swift-ring-builder /etc/swift/object.builder add z2-192.0.43.10:6000/z2d1 100
$ sudo swift-ring-builder /etc/swift/object.builder add z2-192.0.43.10:6000/z2d2 100
$ sudo swift-ring-builder /etc/swift/object.builder add z3-192.0.43.10:6000/z3d1 100
$ sudo swift-ring-builder /etc/swift/object.builder add z3-192.0.43.10:6000/z3d2 100

發(fā)送讓整個ring重新負(fù)載,輸入以下命令

$ sudo swift-ring-builder /etc/swift/account.builder rebalance
$ sudo swift-ring-builder /etc/swift/container.builder rebalance
$ sudo swift-ring-builder /etc/swift/object.builder rebalance

檢查一下你現(xiàn)在有3個ring文件,在目錄 /etc/swift/,使用以下命令:

$ ls /etc/swift/*gz

應(yīng)該顯示:

/etc/swift/account.ring.gz  /etc/swift/container.ring.gz  /etc/swift/object.ring.gz

確保/etc/swift/目錄中的所有文件包括那些您剛剛創(chuàng)建屬于root用戶和所屬swift組

$ sudo chown -R root:swift /etc/swift

您還需要創(chuàng)建一個私有hash key 對于 swift hash 算法

$ sudo openstack-config --set /etc/swift/swift.conf swift-hash \
swift_hash_path_suffix $(openssl rand -hex 10)

2.配置keystone認(rèn)證:

在這個例子中假設(shè)我們已經(jīng)創(chuàng)建了admin用戶,我們需要創(chuàng)建一個services的租戶(如果不存在的話),一個名為swiftand來作為swift用戶和擁有admin角色

通過admin來訪問:

$ source ~/keystonerc_admin

檢查services 租戶

$ keystone tenant-list

如果不存在,創(chuàng)建:

$ keystone tenant-create --name services

創(chuàng)建swift用戶,設(shè)置密碼PASSWORD

$ keystone user-create --name swift --pass PASSWORD

查詢admin角色的uuid

$ keystone role-list | grep admin

如果沒有admin角色,創(chuàng)建

$ keystone role-create --name admin

添加swift用戶到service租戶中,并給予admin角色的權(quán)限;

$ keystone user-role-add --role-id <roleid> --tenant-id <tenantid> --user-id <userid>

創(chuàng)建swift端點,在keystone

$ keystone service-list

如果沒有swift endpoint,然后創(chuàng)建;

$ keystone service-create --name swift --type object-store \
    --description "Swift Storage Service"$ keystone endpoint-create --service_id <serviceid> \
    --publicurl "http://192.0.43.10:8080/v1/AUTH_\$(tenant_id)s" \
    --adminurl "http://192.0.43.10:8080/v1/AUTH_\$(tenant_id)s" \
    --internalurl "http://192.0.43.10:8080/v1/AUTH_\$(tenant_id)s"

確保publicurl、adminurl internalurl參數(shù)包括正確的IP地址swift對象存儲服務(wù)器。

3,配置swift proxy代理

更新配置文件從swift使用正確的身份驗證代理服務(wù)器為適當(dāng)?shù)闹攸c用戶詳細(xì)信息。

$ openstack-config --set /etc/swift/proxy-server.conf \
      filter:authtoken admin_tenant_name services
$ openstack-config --set /etc/swift/proxy-server.conf \
      filter:authtoken admin_user swift
$ openstack-config --set /etc/swift/proxy-server.conf \
      filter:authtoken admin_password PASSWORD

開啟memcached 和openstack-swift-proxy 服務(wù),使用 service 命令;

$ sudo service memcached start
$ sudo service openstack-swift-proxy start

memcached 和openstack-swift-proxy 服務(wù),加入到開機(jī)啟動

$ sudo chkconfig memcached on
$ sudo chkconfig openstack-swift-proxy on

運行訪問swift proxy server ,添加防火墻規(guī)則在/etc/sysconfig/iptables 配置文件中:

-A INPUT -p tcp -m multiport --dports 8080 -j ACCEPT

這條規(guī)則運行從遠(yuǎn)程主機(jī)訪問swift proxy 的8080端口,其它更加安全的信息請參考redhat enterprise 6 security guide.(紅帽企業(yè)6安全指南)

使用service命令重新啟動iptables,使剛添加的規(guī)則生效;

$ sudo service iptables restart

4.配置swift storage nodes 存儲節(jié)點

對象存儲必須支持磁盤存儲卷,提供足夠的備份存儲空間 到目前為止在本文中需要6個存儲節(jié)點。

如果你有足夠多的資源可用用來安裝此服務(wù),在本文都是安裝在了/srv/node的目錄下

這段不翻譯了!

If you do not have enough physical devices available to support this setup but still wish to test the object storage facilities provided by OpenStack then it is possible to create test devices using the loopback facility. This is not recommended for production environments

創(chuàng)建對象存儲設(shè)備使用loopback(回環(huán))

這個列子腳本創(chuàng)建了3個區(qū)域和2個設(shè)備支持loopback設(shè)備給每個區(qū)域,總共6個設(shè)備,卷鏡像創(chuàng)建在/data目錄下和掛載到/srv/node目錄下使用回環(huán)設(shè)備

每個設(shè)備是50GB大小,你也許希望這個數(shù)字低點;

這個腳本需要用root用戶執(zhí)行;

#!/bin/sh
# Device size in GB
SIZE=50
DATA=/data
MOUNT=/srv/node
mkdir ${DATA}
    for ZONE in 1 2 3; do
    for DEVICE in 1 2; do
        truncate ${DATA}/swift-z${ZONE}d${DEVICE} --size ${SIZE}G        
        LOOPDEVICE=`losetup --show -f ${DATA}/swift-z${ZONE}d${DEVICE}`
        mkfs.ext4 -I 1024 ${LOOPDEVICE}
        mkdir -p ${MOUNT}/z${ZONE}d${DEVICE}
        mount -o noatime,nodiratime,nobarrier,user_xattr ${LOOPDEVICE} \              
        ${MOUNT}/z${ZONE}d${DEVICE}
    done
done

這個例子設(shè)置對象存儲只是作為一種快速而簡單的方法嘗試持久卷在一個測試環(huán)境,這種方法不能用于生產(chǎn)環(huán)境。

對象存儲中創(chuàng)建這種方式并不會自動保存在系統(tǒng)需要重新啟動

恢復(fù)對象存儲從文件創(chuàng)建這個過程后,必須重新啟動

使用losetup創(chuàng)建loopback回環(huán)/data/目錄

使用mount掛載 loopback回環(huán)/srv/node/目錄

使用service命令重啟  openstack-swift-account, openstack-swift-container, and openstack-swift-object 服務(wù)

在生產(chǎn)環(huán)境中推薦,把掛載目錄這些添加到/etc/fstab,并加入到開機(jī)自動掛載項中。

Red Hat Enterprise Linux系統(tǒng)默認(rèn)有八個(8)環(huán)回設(shè)備可供使用

如果您已經(jīng)在使用這些設(shè)備,那么你可能會遇到的一些運行腳本時返回的消息:

mount: could not find any free loop device

如果在這種情況下運行l(wèi)ostetup -a 命令來列出所有l(wèi)oopback設(shè)備的狀態(tài),然后可以使用umount命令來釋放一下設(shè)備,losetup -d命令或改變腳本需要更少的設(shè)備。

sudo chown -R swift:swift /srv/node/

使用restorecon命令確保incron目錄中的所有文件都正確的SELinux安全上下文的定義。

$ sudo restorecon -R /srv

未能正確設(shè)置安全上下文將導(dǎo)致AVC否認(rèn)被記錄時迅速試圖訪問的數(shù)據(jù)存儲在/ srv /目錄。

啟動帳戶,容器和對象存儲服務(wù):

$ sudo service openstack-swift-account start
$ sudo service openstack-swift-container start
$ sudo service openstack-swift-object start

加入開機(jī)啟動

$ sudo chkconfig openstack-swift-account on
$ sudo chkconfig openstack-swift-container on
$ sudo chkconfig openstack-swift-object on

允許傳入的連接向/etc/sysconfig/iptables swift通過添加這個防火墻規(guī)則配置文件:

-A INPUT -p tcp -m multiport --dports 6000,6001,6002,873 -j ACCEPT

規(guī)則生效,重啟iptables服務(wù)

 sudo service iptables restart

5.測試swift

設(shè)置shell訪問重點作為一個用戶,管理員或SwiftOperator角色,admin用戶這個例子所示:

$ source ~/keystonerc_admin
$ swift list
$ head -c 1024 /dev/urandom > data.file ; swift upload c1 data.file
$ head -c 1024 /dev/urandom > data2.file ; swift upload c1 data2.file
$ head -c 1024 /dev/urandom > data3.file ; swift upload c2 data3.file
$ swift list
$ swift list c1
$ swift list c2

現(xiàn)在您已經(jīng)上傳3個文件到2個集裝箱。如果你看到在不同的存儲設(shè)備應(yīng)該看到9個數(shù)據(jù)文件(每個文件3份):

$ find /srv/node/ -type f -name "*data"



向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI