您好,登錄后才能下訂單哦!
此文章是看Red Hat 的文章進行了一下簡單的翻譯,有很多地方不多的,請多多指教!
原文地址:https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux_OpenStack_Platform/2/html/Getting_Started_Guide/ch08s05.html
創建swift ring 文件;
配置keystone認證;
配置swift proxy 代理;
配置swift stroage nodes 存儲節點
測試swift
1個swift proxy 節點
6個swift storage 節點包括(accounts, objects, container)
3個zone區域
每份數據復制3份,也就是一份數據保存到3個swift stroage節點,作為存儲對象的一個副本;
第一步先安裝swift軟件包;
$ sudo yum install -y openstack-swift openstack-swift-proxy \openstack-swift-account openstack-swift-container openstack-swift-object \openstack-utils memcached python-keystone
需要創建三個ring文件包含所有的存儲設備細節,這些都是用來推斷一個特定的數據存儲。
在這個列子中創建part power 為12,那么ring分區就可以達到4096個,具體的分區大小可根據你的生產環境來分配;
2**12=4096
2**18=262144
更多的信息請查看:http://docs.openstack.org/developer/swift/deployment_guide.html(這個是官方的文檔)
本文主要介紹swift的安裝和部署,假設keystone的部署和配置一完成,并已配置好authentication認證用戶文件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的分區是2的12次方,
3是保存數據為3份,
1是1個小時檢測一次ring;
注意:這個過程中注意端口別搞錯了!!!!
一旦創建ring文件存儲設備需要添加到每個ring,從賬戶中。使用的IP地址swift對象存儲服務器的帳戶標識符
$ 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
發送讓整個ring重新負載,輸入以下命令
$ 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
檢查一下你現在有3個ring文件,在目錄 /etc/swift/,使用以下命令:
$ ls /etc/swift/*gz
應該顯示:
/etc/swift/account.ring.gz /etc/swift/container.ring.gz /etc/swift/object.ring.gz
確保/etc/swift/目錄中的所有文件包括那些您剛剛創建屬于root用戶和所屬swift組
$ sudo chown -R root:swift /etc/swift
您還需要創建一個私有hash key 對于 swift hash 算法
$ sudo openstack-config --set /etc/swift/swift.conf swift-hash \ swift_hash_path_suffix $(openssl rand -hex 10)
2.配置keystone認證:
在這個例子中假設我們已經創建了admin用戶,我們需要創建一個services的租戶(如果不存在的話),一個名為swiftand來作為swift用戶和擁有admin角色
通過admin來訪問:
$ source ~/keystonerc_admin
檢查services 租戶
$ keystone tenant-list
如果不存在,創建:
$ keystone tenant-create --name services
創建swift用戶,設置密碼PASSWORD
$ keystone user-create --name swift --pass PASSWORD
查詢admin角色的uuid
$ keystone role-list | grep admin
如果沒有admin角色,創建
$ keystone role-create --name admin
添加swift用戶到service租戶中,并給予admin角色的權限;
$ keystone user-role-add --role-id <roleid> --tenant-id <tenantid> --user-id <userid>
創建swift端點,在keystone
$ keystone service-list
如果沒有swift endpoint,然后創建;
$ 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參數包括正確的IP地址swift對象存儲服務器。
3,配置swift proxy代理
更新配置文件從swift使用正確的身份驗證代理服務器為適當的重點用戶詳細信息。
$ 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 服務,使用 service 命令;
$ sudo service memcached start $ sudo service openstack-swift-proxy start
memcached 和openstack-swift-proxy 服務,加入到開機啟動
$ sudo chkconfig memcached on $ sudo chkconfig openstack-swift-proxy on
運行訪問swift proxy server ,添加防火墻規則在/etc/sysconfig/iptables
配置文件中:
-A INPUT -p tcp -m multiport --dports 8080 -j ACCEPT
這條規則運行從遠程主機訪問swift proxy 的8080端口,其它更加安全的信息請參考redhat enterprise 6 security guide.(紅帽企業6安全指南)
使用service命令重新啟動iptables,使剛添加的規則生效;
$ sudo service iptables restart
4.配置swift storage nodes 存儲節點
對象存儲必須支持磁盤存儲卷,提供足夠的備份存儲空間 到目前為止在本文中需要6個存儲節點。
如果你有足夠多的資源可用用來安裝此服務,在本文都是安裝在了/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
創建對象存儲設備使用loopback(回環)
這個列子腳本創建了3個區域和2個設備支持loopback設備給每個區域,總共6個設備,卷鏡像創建在/data目錄下和掛載到/srv/node目錄下使用回環設備
每個設備是50GB大小,你也許希望這個數字低點;
這個腳本需要用root用戶執行;
#!/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
這個例子設置對象存儲只是作為一種快速而簡單的方法嘗試持久卷在一個測試環境,這種方法不能用于生產環境。
對象存儲中創建這種方式并不會自動保存在系統需要重新啟動
恢復對象存儲從文件創建這個過程后,必須重新啟動
使用losetup創建loopback回環/data/目錄
使用mount掛載 loopback回環/srv/node/
目錄
使用service命令重啟 openstack-swift-account
, openstack-swift-container
, and openstack-swift-object
服務
在生產環境中推薦,把掛載目錄這些添加到/etc/fstab,并加入到開機自動掛載項中。
Red Hat Enterprise Linux系統默認有八個(8)環回設備可供使用
如果您已經在使用這些設備,那么你可能會遇到的一些運行腳本時返回的消息:
mount: could not find any free loop device
如果在這種情況下運行lostetup -a 命令來列出所有loopback設備的狀態,然后可以使用umount命令來釋放一下設備,losetup -d命令或改變腳本需要更少的設備。
sudo chown -R swift:swift /srv/node/
使用restorecon命令確保incron目錄中的所有文件都正確的SELinux安全上下文的定義。
$ sudo restorecon -R /srv
未能正確設置安全上下文將導致AVC否認被記錄時迅速試圖訪問的數據存儲在/ srv /目錄。
啟動帳戶,容器和對象存儲服務:
$ sudo service openstack-swift-account start $ sudo service openstack-swift-container start $ sudo service openstack-swift-object start
加入開機啟動
$ sudo chkconfig openstack-swift-account on $ sudo chkconfig openstack-swift-container on $ sudo chkconfig openstack-swift-object on
允許傳入的連接向/etc/sysconfig/iptables swift通過添加這個防火墻規則配置文件:
-A INPUT -p tcp -m multiport --dports 6000,6001,6002,873 -j ACCEPT
規則生效,重啟iptables服務
sudo service iptables restart
5.測試swift
設置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
現在您已經上傳3個文件到2個集裝箱。如果你看到在不同的存儲設備應該看到9個數據文件(每個文件3份):
$ find /srv/node/ -type f -name "*data"
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。