国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Ceph集群應(yīng)用】Ceph對象存儲系統(tǒng)之RGW接口詳解

這篇具有很好參考價值的文章主要介紹了【Ceph集群應(yīng)用】Ceph對象存儲系統(tǒng)之RGW接口詳解。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


接上文基于ceph-deploy部署Ceph集群詳解

1.創(chuàng)建Ceph對象存儲系統(tǒng)RGW接口

(1)對象存儲概念

對象存儲(object storage)是非結(jié)構(gòu)數(shù)據(jù)的存儲方法,對象存儲中每一條數(shù)據(jù)都作為單獨的對象存儲,擁有唯一的地址來識別數(shù)據(jù)對象,通常用于云計算環(huán)境中。
不同于其他數(shù)據(jù)存儲方法,基于對象的存儲不使用目錄樹

雖然在設(shè)計與實現(xiàn)上有所區(qū)別,但大多數(shù)對象存儲系統(tǒng)對外呈現(xiàn)的核心資源類型大同小異。從客戶端的角度來看,分為以下幾個邏輯單位:

  • Amazon S3:

提供了
(1)用戶(User)
(2)存儲桶(Bucket)
(3)對象(Object)

三者的關(guān)系是:

(1)User將Object存儲到系統(tǒng)上的Bucket
(2)存儲桶屬于某個用戶并可以容納對象,一個存儲桶用于存儲多個對象
(3)同一個用戶可以擁有多個存儲桶,不同用戶允許使用相同名稱的Bucket,因此User名稱即可做為Bucket的名稱空間

  • OpenStack Swift

提供了user、container和object分別對應(yīng)于用戶、存儲桶和對象,不過它還額外為user提供了父級組件account,用于表示一個項目或用戶,因此一個account中可以包含一到多個user,它們可共享使用同一組container,并為container提供名稱空間

  • RadosGW

提供了user、subuser、bucket和object,其中的user對應(yīng)于S3的user,而subuser則對應(yīng)于Swift的user,不過user和subuser都不支持為bucket提供名稱空間,因此不同用戶的存儲桶不允許同名;不過,自jewel版本起,RadosGW引入了tenant(租戶)用于為user和bucket提供名稱空間,但他是個可選組件

從上可以看出大多數(shù)對象存儲的核心資源類型大同小異,如Amazon S3、OpenStack Swift與RadosGw。其中 S3 與 Swift 互不兼容,RadosGw為了兼容S3與Swift, Ceph在RadosGW集群的基礎(chǔ)上提供了RGW(RadosGateway)數(shù)據(jù)抽象層和管理層,它可以原生兼容 S3 和 Swift 的 API。
S3和Swift它們可基于http或https完成數(shù)據(jù)交換,由RadosGW內(nèi)建的Civetweb提供服務(wù),它還可以支持代理服務(wù)器包括nginx、haproxy等以代理的形式接收用戶請求,再轉(zhuǎn)發(fā)至RadosGW進程。
RGW的功能依賴于對象網(wǎng)關(guān)守護進程實現(xiàn),負責向客戶端提供 REST API接口。出于冗余負載均衡的需求,一個 Ceph集群上通常不止一個RadosGW守護進程。

(2)創(chuàng)建RGW接口

如果需要使用到類似S3或者Swift接口時候,才需要部署/創(chuàng)建RadosGW接口,RadosGW通常作為對象存儲(Object Storage)使用,類于阿里云OSS。

在管理節(jié)點創(chuàng)建一個RGW守護進程

cd /etc/ceph
ceph-deploy rgw create node01

ceph -s

【Ceph集群應(yīng)用】Ceph對象存儲系統(tǒng)之RGW接口詳解,運維,云計算,Linux,ceph,云計算,運維,linux
【Ceph集群應(yīng)用】Ceph對象存儲系統(tǒng)之RGW接口詳解,運維,云計算,Linux,ceph,云計算,運維,linux

創(chuàng)建成功后,默認情況下會自動創(chuàng)建一系列用于RGW的存儲池

ceph osd pool ls
rgw.root 
default.rgw.control			#控制器信息
default.rgw.meta			#記錄元數(shù)據(jù)
default.rgw.log				#日志信息
default.rgw.buckets.index	#為 rgw 的 bucket 信息,寫入數(shù)據(jù)后生成
default.rgw.buckets.data	#是實際存儲的數(shù)據(jù)信息,寫入數(shù)據(jù)后生成

【Ceph集群應(yīng)用】Ceph對象存儲系統(tǒng)之RGW接口詳解,運維,云計算,Linux,ceph,云計算,運維,linux

默認情況下RGW監(jiān)聽7480號端口

ssh root@node01 netstat -lntp | grep 7480

curl node01:7480

【Ceph集群應(yīng)用】Ceph對象存儲系統(tǒng)之RGW接口詳解,運維,云計算,Linux,ceph,云計算,運維,linux

2. 開啟http+https,更改監(jiān)聽端口

RadosGW守護進程內(nèi)部由Civetweb實現(xiàn),通過對Civetweb的配置,可以完成對RadosGW的基本管理。

要在Civetweb上啟用SSL,首先需要一個證書,在admin節(jié)點生成證書

(1)生成CA證書私鑰

openssl genrsa -out civetweb.key 2048

(2)生成CA證書公鑰

openssl req -new -x509 -key civetweb.key -out civetweb.crt -days 3650 -subj "/CN=192.168.80.30"

(3)將生成的證書合并為pem

cat civetweb.key civetweb.crt > /etc/ceph/civetweb.pem

【Ceph集群應(yīng)用】Ceph對象存儲系統(tǒng)之RGW接口詳解,運維,云計算,Linux,ceph,云計算,運維,linux
(4)在admin管理節(jié)點,將生成合并的證書civetweb.pem,推送到RGW節(jié)點中

 scp civetweb.pem node02:`pwd`

3. 更改監(jiān)聽端口

Civetweb默認監(jiān)聽7480端口,并提供http協(xié)議。在管理節(jié)點編輯ceph.conf配置文件,可以修改Civetweb監(jiān)聽的端口號

vim /etc/ceph/ceph.conf
......
[client.rgw.node02]
rgw_host = node02
rgw_frontends = "civetweb port=80+443s ssl_certificate=/etc/ceph/civetweb.pem num_threads=500 request_timeout_ms=60000"

------------------------------------------------------------
●rgw_host:對應(yīng)的RadosGW名稱或者IP地址
●rgw_frontends:這里配置監(jiān)聽的端口,是否使用https,以及一些常用配置:
?port:如果是https端口,需要在端口后面加一個s。
?ssl_certificate:指定證書的路徑。
?num_threads:最大并發(fā)連接數(shù),默認為50,根據(jù)需求調(diào)整,通常在生產(chǎn)集群環(huán)境中此值應(yīng)該更大
?request_timeout_ms:發(fā)送與接收超時時長,以ms為單位,默認為30000
?access_log_file:訪問日志路徑,默認為空
?error_log_file:錯誤日志路徑,默認為空
------------------------------------------------------------

【Ceph集群應(yīng)用】Ceph對象存儲系統(tǒng)之RGW接口詳解,運維,云計算,Linux,ceph,云計算,運維,linux

修改完ceph.conf配置文件后,需要重啟對應(yīng)的RadosGW服務(wù),再推送配置文件

ceph-deploy --overwrite-conf config push node0{1..3}

ssh root@node02 systemctl restart ceph-radosgw.target
ssh root@node02 systemctl status ceph-radosgw.target

【Ceph集群應(yīng)用】Ceph對象存儲系統(tǒng)之RGW接口詳解,運維,云計算,Linux,ceph,云計算,運維,linux

在rgw節(jié)點上查看端口

netstat -lntp | grep -w 80
netstat -lntp | grep 443

【Ceph集群應(yīng)用】Ceph對象存儲系統(tǒng)之RGW接口詳解,運維,云計算,Linux,ceph,云計算,運維,linux

在客戶端訪問驗證

curl http://192.168.80.30:80
curl -k https://192.168.80.30:443

【Ceph集群應(yīng)用】Ceph對象存儲系統(tǒng)之RGW接口詳解,運維,云計算,Linux,ceph,云計算,運維,linux

創(chuàng)建RadosGW賬戶

在管理節(jié)點使用radosgw-admin命令創(chuàng)建RadosGW賬戶

radosgw-admin user create --uid="rgwuser" --display-name="rgw test user"
-------------------------------------------------------
 "keys": [
        {
            "user": "rgwuser",
            "access_key": "1HXE9W5NNID7BWGW0JCE",
            "secret_key": "Oq7UOSE6eTs03e7lqClN8J9iSD7QcKycVbh52gSj"
        }
    ],

【Ceph集群應(yīng)用】Ceph對象存儲系統(tǒng)之RGW接口詳解,運維,云計算,Linux,ceph,云計算,運維,linux

創(chuàng)建成功后將輸出用戶的基本信息,其中最重要的兩項信息為access_key和secret_key 。用戶創(chuàng)建成功后,如果忘記用戶信息可以使用下面的命令查看

radosgw-admin user info --uid="rgwuser"

【Ceph集群應(yīng)用】Ceph對象存儲系統(tǒng)之RGW接口詳解,運維,云計算,Linux,ceph,云計算,運維,linux

4.S3接口訪問測試

創(chuàng)建以及使用存儲桶的腳本文件;

vim /etc/ceph/test.py 

#coding:utf-8
#boto s3手冊:http://boto.readthedocs.org/en/latest/ref/s3.html
#boto s3快速入門:http://boto.readthedocs.org/en/latest/s3_tut.html
#如果腳本長時間阻塞,請檢查集群狀態(tài),開啟的端口等
import ssl
import boto.s3.connection
from boto.s3.key import Key
#異常拋出
try:
    _create_unverified_https_context = ssl._create_unverified_context
except AttributeError:
    pass
else:
    ssl._create_default_https_context = _create_unverified_https_context
#test用戶的keys信息,為在admin節(jié)點使用radosgw-admin命令創(chuàng)建RadosGW賬戶
access_key = "1HXE9W5NNID7BWGW0JCE"   
secret_key = "Oq7UOSE6eTs03e7lqClN8J9iSD7QcKycVbh52gSj"
#rgw的ip與端口,此處的IP地址為kgw節(jié)點的IP地址
host = "192.168.80.30"    
#如果使用443端口,下述鏈接應(yīng)設(shè)置is_secure=True
port = 443
#如果使用80端口,下述鏈接應(yīng)設(shè)置is_secure=False
#port = 80
conn = boto.connect_s3(
    aws_access_key_id=access_key,
    aws_secret_access_key=secret_key,
    host=host,
    port=port,
    is_secure=True,
    validate_certs=False,
    calling_format=boto.s3.connection.OrdinaryCallingFormat()
)

#一:創(chuàng)建存儲桶
conn.create_bucket(bucket_name='bucket01')
conn.create_bucket(bucket_name='bucket02')

#二:判斷是否存在,不存在返回None
exists = conn.lookup('bucket01')
print(exists)
exists = conn.lookup('bucket02')
print(exists)

#三:獲得一個存儲桶
bucket1 = conn.get_bucket('bucket01')
bucket2 = conn.get_bucket('bucket02')

#四:查看一個bucket下的內(nèi)容
print(list(bucket1.list()))
print(list(bucket2.list()))

#五:向s3上存儲數(shù)據(jù),數(shù)據(jù)來源可以是file、stream、or string
#5.1、上傳文件
bucket1 = conn.get_bucket('bucket01')
# name的值是數(shù)據(jù)的key
key = Key(bucket=bucket1, name='myfile')
key.set_contents_from_filename(r'D:\PycharmProjects\ceph\123.txt')
# 讀取 s3 中文件的內(nèi)容,返回 string 即文件 123.txt 的內(nèi)容
print(key.get_contents_as_string())

#5.2、上傳字符串
#如果之前已經(jīng)獲取過對象,此處不需要重復獲取
bucket2 = conn.get_bucket('bucket02')
key = Key(bucket=bucket2, name='mystr')
key.set_contents_from_string('hello world')
print(key.get_contents_as_string())

#六:刪除一個存儲桶,在刪除存儲桶本身時必須刪除該存儲桶內(nèi)的所有key
bucket1 = conn.get_bucket('bucket01')
for key in bucket1:
    key.delete()
bucket1.delete()
#bucket1.get_all_keys()[0].delete() #刪除某一個 key

#迭代遍歷刪除 buckets and keys
for bucket in conn:
    for key in bucket:
        print(key.name,key.get_contents_as_string())
#—個判斷文件夾中是否有文件的方法
bucket1 = conn.get_bucket('bucket01')
res = bucket1.get_all_keys()
if len(res) > 0:
    print('有文件')
else:
    print('為空')

(1)在客戶端安裝python3、python3-pip

yum install -y python3 python3-pip

python3 -V
pip3 -V

【Ceph集群應(yīng)用】Ceph對象存儲系統(tǒng)之RGW接口詳解,運維,云計算,Linux,ceph,云計算,運維,linux

(2)安裝boto模塊,用于測試連接S3

pip3 install boto

【Ceph集群應(yīng)用】Ceph對象存儲系統(tǒng)之RGW接口詳解,運維,云計算,Linux,ceph,云計算,運維,linux

(3)測試訪問S3接口

腳本判斷存儲桶是否存在;

#一:創(chuàng)建存儲桶
conn.create_bucket(bucket_name='bucket01')
conn.create_bucket(bucket_name='bucket02')
 
#二:判斷是否存在,不存在返回None
exists = conn.lookup('bucket01')
print(exists)
exists = conn.lookup('bucket02')
print(exists)
exists = conn.lookup('bucket03')
print(exists)

【Ceph集群應(yīng)用】Ceph對象存儲系統(tǒng)之RGW接口詳解,運維,云計算,Linux,ceph,云計算,運維,linux
將指定文件內(nèi)容上傳到bucket01存儲桶中;

##5.1、上傳文件
bucket1 = conn.get_bucket('bucket01')
## name的值是數(shù)據(jù)的key
key = Key(bucket=bucket1, name='gzy')
key.set_contents_from_filename(r'/opt/123.txt')
## 讀取 s3 中文件的內(nèi)容,返回 string 即文件 123.txt 的內(nèi)容
print(list(bucket1.list()))
print(key.get_contents_as_string())

【Ceph集群應(yīng)用】Ceph對象存儲系統(tǒng)之RGW接口詳解,運維,云計算,Linux,ceph,云計算,運維,linux

上傳指定字符串內(nèi)容到bucket02存儲桶中;

##5.2、上傳字符串
##如果之前已經(jīng)獲取過對象,此處不需要重復獲取
bucket2 = conn.get_bucket('bucket02')
key = Key(bucket=bucket2, name='Ayu')
key.set_contents_from_string('hello world is you ooo')
print(list(bucket2.list()))print(key.get_contents_as_string())

【Ceph集群應(yīng)用】Ceph對象存儲系統(tǒng)之RGW接口詳解,運維,云計算,Linux,ceph,云計算,運維,linux
刪除指定存儲桶bucket01;

---------需要取消打印存儲桶的注釋,否則將不返回任何數(shù)據(jù)內(nèi)容
#二:判斷是否存在,不存在返回None
exists = conn.lookup('bucket01')
print(exists)
exists = conn.lookup('bucket02')
print(exists)
exists = conn.lookup('bucket03')
print(exists)

##六:刪除一個存儲桶,在刪除存儲桶本身時必須刪除該存儲桶內(nèi)
的所有key
bucket1 = conn.get_bucket('bucket01')
for key in bucket1:
    key.delete()
bucket1.delete()
##bucket1.get_all_keys()[0].delete() #刪除某一個 key

【Ceph集群應(yīng)用】Ceph對象存儲系統(tǒng)之RGW接口詳解,運維,云計算,Linux,ceph,云計算,運維,linux

5.實驗中遇到的故障案例

問題:

OSD服務(wù)被down掉,健康狀態(tài)顯示W(wǎng)ARN.
【Ceph集群應(yīng)用】Ceph對象存儲系統(tǒng)之RGW接口詳解,運維,云計算,Linux,ceph,云計算,運維,linux
解決方法:

產(chǎn)生該問題的原因是數(shù)據(jù)在均衡或者回滾等操作的時候,導致其某個守護進程崩潰了,且沒有及時歸檔,所以集群產(chǎn)生告警。
在OSD節(jié)點重啟osd和mgr服務(wù);

systemctl restart  ceph-osd.target
systemctl restart  ceph-mgr.target

在admin管理節(jié)點,查看崩潰守護進程的詳細信息

ceph crash ls   #列出所有未歸檔崩潰守護進程
ceph crash archive <id>      #查看某個崩潰守護進程的詳細信息
ceph crash archive-all		#將所有崩潰守護進程進行存檔

ceph -s

【Ceph集群應(yīng)用】Ceph對象存儲系統(tǒng)之RGW接口詳解,運維,云計算,Linux,ceph,云計算,運維,linux文章來源地址http://www.zghlxwxcb.cn/news/detail-584518.html

到了這里,關(guān)于【Ceph集群應(yīng)用】Ceph對象存儲系統(tǒng)之RGW接口詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【分布式技術(shù)】分布式存儲ceph之RGW接口

    【分布式技術(shù)】分布式存儲ceph之RGW接口

    目錄 1、對象存儲概念 ?2、創(chuàng)建 RGW 接口 //在管理節(jié)點創(chuàng)建一個 RGW 守護進程 #創(chuàng)建成功后默認情況下會自動創(chuàng)建一系列用于 RGW 的存儲池? #默認情況下 RGW 監(jiān)聽 7480 號端口? //開啟 http+https ,更改監(jiān)聽端口 #更改監(jiān)聽端口 ?? ? ? ? ? //創(chuàng)建 RadosGW 賬戶 客戶端測試 OSD 故障模擬

    2024年01月19日
    瀏覽(25)
  • Ceph原理、部署、存儲集群、塊存儲及對象存儲centos7.5

    Ceph原理、部署、存儲集群、塊存儲及對象存儲centos7.5

    目錄 ?編輯 一、Ceph概述? 1、基礎(chǔ)知識 1. 分布式存儲定義 2. 常用的分布式文件系統(tǒng) 3. Ceph定義 4. Ceph組件 ?二、實驗環(huán)境準備 1、實驗拓撲圖 2、配置yum源 ?3、配置SSH無密碼連接 4、NTP時間同步 1.NTP服務(wù)器配置 ?2.NTP客戶端配置 3.準備存儲硬盤 三、部署環(huán)境 1、安裝部署軟件

    2023年04月20日
    瀏覽(27)
  • 使用Ceph對象存儲的Amazon S3接口(基于nautilus版本)

    Ceph是一個分布式存儲系統(tǒng),提供了多種數(shù)據(jù)存儲方式,包括對象存儲。Amazon S3是一個流行的對象存儲服務(wù),Ceph提供了Amazon S3接口的兼容性,使得Ceph可以作為一個云存儲解決方案。 分片上傳接口是Amazon S3接口中的一個重要功能,它允許將大文件拆分成小的分片上傳,降低了上

    2024年02月06日
    瀏覽(27)
  • 【Ceph】Ceph集群應(yīng)用詳解

    【Ceph】Ceph集群應(yīng)用詳解

    接上文基于ceph-deploy部署Ceph集群詳解 Pool是Ceph中 存儲Object對象抽象概念 。我們可以將其理解為 Ceph存儲上劃分的邏輯分區(qū) ,Pool由多個PG組成;而 PG通過CRUSH算法映射到不同的OSD上 ;同時Pool可以設(shè)置副本size大小,默認副本數(shù)量為3。 Ceph客戶端向monitor請求集群的狀態(tài),并向P

    2024年02月16日
    瀏覽(17)
  • Ceph 塊存儲系統(tǒng) RBD 接口

    Ceph 塊存儲系統(tǒng) RBD 接口

    1、創(chuàng)建一個名為 rbd-demo 的專門用于 RBD 的存儲池 2、將存儲池轉(zhuǎn)換為 RBD 模式 3、初始化存儲池 4、創(chuàng)建鏡像 5、鏡像管理 6、Linux客戶端使用 7、快照管理 對 rbd 鏡像進行快照,可以保留鏡像的狀態(tài)歷史,另外還可以利用快照的分層技術(shù),通過將快照克隆為新的鏡像使用。 8、鏡

    2024年02月16日
    瀏覽(18)
  • 【Linux】分布式存儲系統(tǒng) Ceph應(yīng)用

    提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 1、創(chuàng)建一個名為 rbd-demo 的專門用于 RBD 的存儲池 2、將存儲池轉(zhuǎn)換為 RBD 模式 3、初始化存儲池 4、創(chuàng)建鏡像 5、鏡像管理 6、Linux客戶端使用 7、快照管理 8、鏡像的導出導入 1、對象存儲概念 對象存儲(

    2024年02月16日
    瀏覽(27)
  • 分布式存儲系統(tǒng)Ceph應(yīng)用組件介紹

    1、 無中心架構(gòu)分布式存儲Ceph Ceph是一套開源的分布式存儲系統(tǒng)。具有可靠性高,性能優(yōu)良,可伸縮,與HDFS不同的地方在于,該架構(gòu)中沒有中心節(jié)點。?? ? Ceph優(yōu)點在于它不單單是存儲,同時還充分利用了存儲節(jié)點上的計算能力,在存儲每一個數(shù)據(jù)時,都會通過計算得出該數(shù)

    2024年02月07日
    瀏覽(32)
  • Hadoop 集群中使用 S3(對象存儲)文件系統(tǒng)

    Hadoop 集群中使用 S3(對象存儲)文件系統(tǒng)

    Hadoop 自帶 S3 依賴,位置如下: 但是這些依賴包默認不在 hadoop classpath 下面??梢允褂靡韵聝煞N方法引入這兩個包: 修改hadoop的core-site.xml文件: s3的配置模板(記得修改成自己的 secret key 與 access key ) 更改完畢并重啟集群后 測試hdfs dfs -ls s3a://hive0614/ 等命令操作 S3 中的文件

    2024年02月06日
    瀏覽(30)
  • 三方平臺與對象存儲對接后的應(yīng)用場景及接口說明

    ?//? 作者:孫琦 ? 萬博智云聯(lián)合創(chuàng)始人、CTO ??Ceph中國社區(qū)聯(lián)合創(chuàng)始人 ??中國信息通信研究院可信云標準專家(云遷移/云容災) ??阿里云和騰訊云最有價值專家 自2022年8月底發(fā)布數(shù)據(jù)流轉(zhuǎn)引擎后,HyperBDR/HyperMotion又經(jīng)過數(shù)個版本迭代,利用Workflow as a Service理念對原有底

    2024年02月01日
    瀏覽(17)
  • ceph對象存儲和安裝dashborad

    ceph對象存儲和安裝dashborad

    通過對象存儲將數(shù)據(jù)存儲為對象,每個對象除了包含數(shù)據(jù)還包含數(shù)據(jù)自身的元數(shù)據(jù)。 對象通過object ID來檢索,無法通過普通文件系統(tǒng)的方式通過文件路徑及文件名稱操作來直接訪問對象,只能通過API來訪問,或者第三方客戶端工具(實際上也是對API的封裝) 對象存儲中的對

    2024年02月16日
    瀏覽(14)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包