1、leofs角色
Account(賬戶)、Bucket(對象桶)、Object(對象),
gateway、manager0、manager1、storage
Account
一個account可以創建多個bucket,一個bucket可以有無限數量的object,它們之間關系如下:
Bucket
是object的容器,第個Object必須存儲到Bucket里面。Bucket是Leofs里的一個高層命名空間,它在Leofs存儲系統中是唯一的,每個Account最多可創建10個Bucket。但是Bucket里面的Object數量沒有限制。Bucket命名規則:
只能包括小寫字母,數字,短橫線(-)
必須以小寫字母或者數字開頭
長度必須在 3-63 字節之間
Object
是LeOSS的基本實體。Objects由object data和metadata組成。用戶存儲在LeOSS中的文件是無格式化的。他們可以是任意格式的文件,比如:視頻,音頻,圖像,文本等格式。支持Object的大小從1字節到5T字節。
AccessKeyID和AccessSecretKey
用戶注冊LeOSS時,系統會給用戶分配一對Access Key ID和Access Key Secret,稱為 ID 對,用於標識用戶,為訪問 LeOSS 做簽名驗證。
Leofs GateWay
LeOSS Gateway由一個高性能webserver,API處理器和緩存機制組成。用戶能夠非常容易通過S3 Client(例如:s3cmd, DragonDisk),或者自己通過Java、Ruby、PHP語言編碼訪問LeOSS。
一個Client發送請求操作某個Object或者Bucket到LeOSS Gateway,Gateway將這個請求轉發到一個Storage節點。
目標Storage節點是通過路由表決定的。路由表被叫做RING,它被LeOSS Manager產生和維護。
另外,為了保持高性能和減少Gateway和Storage直接的流量,LeOSS也內建了對象緩存機制。
Leofs Storage
LeOSS Storage包含Object和Meta Storage。另外,為了保證最終一致性,它還包括復制系統和修復系統。
在寫操作情況下,LeOSS Storage從LeOSS Gateway接收請求后自動復制對象到LeOSS Storage集群。最后由LeOSS Storage確認這個被存儲的Object是否滿足一致性規則。
另外,在讀操作的情況下,LeOSS Gateway向LeOSS Storage存儲節點發送請求。然后,LeOSS Storage存儲節點從本地或者遠程LeOSS Storage存儲節點檢索這個對象。最后,LeOSS Storage發送響應給發送請求的LeOSS Gateway。
如果,LeOSS Storage存儲節點發現一個不一致的Object,它將啟動一個后台進程來修復這種不一致的情況。這個Object最終會保持一致狀態
LeOSS Manager
LeOSS Manager產生和管理一個基於一致性hash的被叫做RING的路由表。為了保持LeOSS的持續運行和RING的一致性,LeOSS Manager一直監控每個LeOSS Gateway和LeOSS Storage的狀態。另外,它也分發RING到LeOSS Gateway和LeOSS Storage。
2、Leofs的配置
雙台部署,151 : manager0 , storage , gateway, 160 : manager1 , storage
(1)下載leofs地址:http://leo-project.net/leofs/
(2)登錄192.168.1.151 把lefs-1.2.12.tar.gz文件解壓到/opt/目錄下
登錄192.168.1.160 把lefs-1.2.12.tar.gz文件解壓到/opt/目錄下
(3)在151的/opt/lefs-1.2.12執行./setup_manager0.sh ,輸入manager1的ip即192.168.1.160
(4)在160的/opt/lefs-1.2.12執行./setup_manager1.sh ,輸入manager0的ip:192.168.1.151和manager1的ip即192.168.1.160
(5)在151的/opt/lefs-1.2.12目錄下執行./setup_storage.sh,輸入manager0的ip和manager1的ip,輸入storage的存儲路徑
(6)在160的/opt/lefs-1.2.12目錄下執行./setup_storage.sh,輸入manager0的ip和manager1的ip,輸入storage0的ip,注意是160,輸入storage的存儲路徑
(7)在151的/opt/lefs-1.2.12目錄下執行./setup_gateway.sh,,輸入manager0的ip和manager1的ip,輸入gateway的存儲路徑
(8)在151的/opt/lefs-1.2.12目錄下執行./startup_manager0.sh
(9)在160的/opt/lefs-1.2.12目錄下執行./startup_manager1.sh
(10)在151的/opt/lefs-1.2.12目錄下執行./startup_storage.sh
(11)在160的/opt/lefs-1.2.12目錄下執行./startup_storage.sh
(12)在151的/opt/lefs-1.2.12目錄下執行./startup_gateway.sh
(13)執行完上面的命令后,leofs會安裝到/usr/local/lefs/1.2.12目錄下,進入此目錄
執行
l ./leofs-adm create-user accountName password,創建完會返回accessKey和secretKey,如圖
l ./leofs-adm get-users 查看已添加的用戶
添加bucket,參數是bucket名和accessKey
l ./leofs-adm add-bucket buckettest 19515aeed1846146f166
l ./leofs-adm start啟動storage集群
l ./leofs-adm status查看狀
狀態是running,就可正常使用。
l ./leofs-adm get-bucket <access-key-id> 根據access-key-id獲取bucket
l ./leofs-adm get-buckets 獲取bucket列表
3、
有時候manager1和manager0不能同時啟動,需要安裝nmap-ncat-6.40-4.el7.x86_64.rpm包,並且修改/etc/selinux/config
SELINUX=disabled,重啟機器