【分布式系統】Ceph對象存儲系統之RGW接口

目錄

一.對象存儲概述

二.創建RGW接口

1.在管理節點創建一個 RGW 守護進程

2.創建成功后默認情況下會自動創建一系列用于 RGW 的存儲池

3.默認情況下 RGW 監聽 7480 號端口

4.開啟 http+https ,更改監聽端口

5.在 rgw 節點上查看端口

6.在客戶端訪問驗證

7.創建 RadosGW 賬戶

8.客戶端測試

三.總結


接著之前的部署集群架構

一.對象存儲概述

對象存儲(object storage)是非結構數據的存儲方法,對象存儲中每一條數據都作為單獨的對象

存儲,擁有唯一的地址來識別數據對象,通常用于云計算環境中

不同于其他數據存儲方法,基于對象的存儲不使用目錄樹。

雖然在設計與實現上有所區別,但大多數對象存儲系統對外呈現的核心資源類型大同小異。從客戶

端的角度來看,分為以下幾個邏輯單位

  • Amazon S3

提供了

  1. 用戶(User)
  2. 存儲桶(Bucket)
  3. 對象(Object)

三者的關系是

  1. User將Object存儲到系統上的Bucket
  2. 存儲桶屬于某個用戶并可以容納對象,一個存儲桶用于存儲多個對象
  3. 同一個用戶可以擁有多個存儲桶,不同用戶允許使用相同名稱的Bucket,因此User名稱即可做為Bucket的名稱空間
  • OpenStack Swift
  1. 提供了user、container和object分別對應于用戶、存儲桶和對象,
  2. 它還額外為user提供了父級組件account,用于表示一個項目或用戶組
  3. 因此一個account中可以包含一到多個user,它們可共享使用同一組container,并為container提供名稱空間
  • RadosGW
  1. 提供了user、subuser、bucket和object,其中的user對應于S3的user,而subuser則對應于Swift的user
  2. user和subuser都不支持為bucket提供名稱空間,因此不同用戶的存儲桶不允許同名
  3. 自jewel版本起,RadosGW引入了tenant(租戶)用于為user和bucket提供名稱空間,但他是個可選組件

二.創建RGW接口

如果需要使用到類似 S3 或者 Swift 接口時候才需要部署/創建 RadosGW 接口,RadosGW 通常作

為對象存儲(Object Storage)使用,類于阿里云OSS

1.在管理節點創建一個 RGW 守護進程

cd /etc/ceph
ceph-deploy rgw create node01
ceph -s

2.創建成功后默認情況下會自動創建一系列用于 RGW 的存儲池

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

3.默認情況下 RGW 監聽 7480 號端口

ssh root@node01 netstat -lntp | grep 7480

4.開啟 http+https ,更改監聽端口

RadosGW 守護進程內部由 Civetweb 實現,通過對 Civetweb 的配置可以完成對 RadosGW 的

基本管理
?

#要在 Civetweb 上啟用SSL,首先需要一個證書,在 rgw 節點生成證書
1)生成CA證書私鑰:
openssl genrsa -out civetweb.key 20482)生成CA證書公鑰:
openssl req -new -x509 -key civetweb.key -out civetweb.crt -days 3650 -subj "/CN=192.168.20.7"#3、將生成的證書合并為pem
cat civetweb.key civetweb.crt > /etc/ceph/civetweb.pem

更改監聽端口

vim ceph.conf
......
[client.rgw.node01]
rgw_host = node01
rgw_frontends = "civetweb port=80+443s ssl_certificate=/etc/ceph/civetweb.pem num_threads=500 request_timeout_ms=60000"------------------------------------------------------------
●rgw_host:對應的RadosGW名稱或者IP地址
●rgw_frontends:這里配置監聽的端口,是否使用https,以及一些常用配置:
?port:如果是https端口,需要在端口后面加一個s。
?ssl_certificate:指定證書的路徑。
?num_threads:最大并發連接數,默認為50,根據需求調整,通常在生產集群環境中此值應該更大
?request_timeout_ms:發送與接收超時時長,以ms為單位,默認為30000
?access_log_file:訪問日志路徑,默認為空
?error_log_file:錯誤日志路徑,默認為空
------------------------------------------------------------#修改完 ceph.conf 配置文件后需要重啟對應的 RadosGW 服務,再推送配置文件
ceph-deploy --overwrite-conf config push node0{1..3}systemctl restart ceph-radosgw.target

5.在 rgw 節點上查看端口

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

6.在客戶端訪問驗證


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

7.創建 RadosGW 賬戶

在管理節點使用 radosgw-admin 命令創建 RadosGW 賬戶

radosgw-admin user create --uid="rgwuser" --display-name="rgw test user"

#創建成功后將輸出用戶的基本信息,其中最重要的兩項信息為 access_key 和 secret_key 。用戶創建成后功,如果忘記用戶信息可以使用下面的命令查看
radosgw-admin user info --uid="rgwuser"

8.客戶端測試

1)在客戶端安裝 python3、python3-pip
yum install -y python3 python3-pippython3 -V
Python 3.6.8pip3 -V
pip 9.0.3 from /usr/lib/python3.6/site-packages (python 3.6)2)安裝 boto 模塊,用于測試連接 S3
pip3 install boto3)測試訪問 S3 接口
echo 123123 > /opt/123.txtvim test.py
#coding:utf-8
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信息
access_key = "ER0SCVRJWNRIKFGQD31H"                          #輸入 RadosGW 賬戶的 access_key
secret_key = "YKYjk7L4FfAu8GHeQarIlXodjtj1BXVaxpKv2Nna"      #輸入 RadosGW 賬戶的 secret_key#rgw的ip與端口
host = "192.168.80.11"        #輸入 RGW 接口的 public 網絡地址#如果使用443端口,下述鏈接應設置is_secure=True
port = 443
#如果使用80端口,下述鏈接應設置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()
)#一:創建存儲桶
#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下的文件
#print(list(bucket1.list()))
#print(list(bucket2.list()))#五:向s3上存儲數據,數據來源可以是file、stream、or string
#5.1、上傳文件
#bucket1 = conn.get_bucket('bucket01')
# name的值是數據的key
#key = Key(bucket=bucket1, name='myfile')
#key.set_contents_from_filename('/opt/123.txt')
# 讀取 s3 中文件的內容,返回 string 即文件 123.txt 的內容
#print(key.get_contents_as_string())#5.2、上傳字符串
#如果之前已經獲取過對象,此處不需要重復獲取
bucket2 = conn.get_bucket('bucket02')
key = Key(bucket=bucket2, name='mystr')
key.set_contents_from_string('hello world')
print(key.get_contents_as_string())#六:刪除一個存儲桶,在刪除存儲桶本身時必須刪除該存儲桶內的所有key
bucket1 = conn.get_bucket('bucket01')
for key in bucket1:key.delete()
bucket1.delete()4)按照以上步驟執行 python 腳本測試
python3 test.py

三.總結

RGW操作

服務端

ceph-deploy rgw create 節點列表                                      
#創建RGW接口,還可以修改ceph配置文件,設置RGW監聽的端口號(默認端口為7480)
radosgw-admin user create --uid="用戶名" --display-name="備注信息"      
#創建RGW賬戶,獲取access_key和secret_key

客戶端

  1. 準備好客戶端應用程序
  2. 使用RGW賬戶的access_key和secret_key做驗證訪問RGW對象存儲接口
  3. 在對象存儲里創建bucket存儲桶
  4. 在bucket存儲桶里創建對象object,上傳數據

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/43274.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/43274.shtml
英文地址,請注明出處:http://en.pswp.cn/web/43274.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Mybatis study

一、Mybatis Plus mybatis-plus指定實體類字段不查詢 加標簽 TableField(exist false) Spring Data Jpa學習 干我們這行,啥時候懈怠,就意味著長進的停止,長進的停止就意味著被淘汰,只能往前沖,直到鳳凰涅槃的一天&am…

【onnx】onnxruntime-gpu無法使用問題

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 onnxruntime-gpu無法使用 1. 正文 CUDA版本:12.1 nvcc -VCUDNN的版本 cat /usr/include/cudnn_version.h |grep CUDNN_MAJOR -A 2說明: 可…

C#中的Dictionary

Dictionary<TKey, TValue> 是一個泛型集合&#xff0c;它存儲鍵值對&#xff08;key-value pairs&#xff09;&#xff0c;其中每個鍵&#xff08;key&#xff09;都是唯一的。這個集合類提供了快速的數據插入和檢索功能&#xff0c;因為它是基于哈希表實現的。 注意 ke…

拉曼操作維護使用手冊(中英文對照)

1 INTRODUCTION 介紹 This document contains information needed to install and operate the Laser Gas Analyzer (LGA). The information contained herein is believed to be accurate and reliable, however, inaccuracies and omissions of pertinent information are po…

Vue 3 組件通信全解:從基礎到高級技巧

引言 Vue 3 引入了 Composition API&#xff0c;這為組件通信帶來了新的靈活性和強大的功能。 組件通信基礎 組件的定義和作用 在前端開發中&#xff0c;組件可以被看作是構建用戶界面的獨立單元。它封裝了特定的功能和樣式&#xff0c;可以被重復使用&#xff0c;并且可以…

【數據結構——鏈表的深度探索】從實現到應用,保姆級攻略

【數據結構——鏈表深度探索】從實現到應用&#xff0c;保姆級攻略 &#x1f341;1. 鏈表的介紹&#x1f341;2. 鏈表的實現&#x1f341;2.1 單向鏈表&#x1f341;2.1.1 size()&#x1f341;2.1.2 display()&#x1f341;2.1.3 contains(int key)&#x1f341;2.1.4 addFirst…

墨西哥:海外新聞稿媒體分發-海外pr發稿干貨分享-大舍傳媒

大舍傳媒&#xff1a;海外新聞稿媒體分發平臺 墨西哥觀查者 (mexicoviewer) 墨西哥觀查者是墨西哥一家知名的新聞媒體平臺&#xff0c;該平臺專注于報道墨西哥國內外的時事新聞、政治、經濟、文化等多個領域的內容。其更新速度快&#xff0c;報道對象廣泛&#xff0c;深受墨西…

微信小程序---模板語法

一、聲明和綁定數據 小程序頁面中使用的數據均需要在 Page() 方法的 data 對象中進行聲明定義 在將數據聲明好以后&#xff0c;需要在 WXML 中綁定數據&#xff0c;數據綁定最簡單的方式是使用 Mustache 語法&#xff08;雙大括號&#xff09;將變量包起來。 在 {{ }} 內部可…

開始性能測試之前的準備工作!

性能測試是軟件測試中不可或缺的一部分&#xff0c;它可以幫助我們評估軟件系統的性能表現&#xff0c;并找出潛在的性能瓶頸。在進行性能測試之前&#xff0c;需要做好充分的準備工作&#xff0c;以確保測試的有效性和準確性。 1. 確定性能測試的目標和范圍 * 明確測試目標:性…

《數據庫原理》SQLServer期末復習_題型+考點

目錄 題型&#xff1a; 一. 概況分析題&#xff08;5小題&#xff0c;每小題2分&#xff0c;共10分&#xff09; 二. 計算題&#xff08;3小題&#xff0c;每小題5分&#xff0c;共15分&#xff09; 三. 數據庫設計&#xff08;2小題&#xff0c;每小題10分&#xff0c;共2…

什么是數組,什么是對象,并說出他們的區別

數組就是一組數據的集合。 對象就是用來儲存變量的。 創建方式不同&#xff1a; 對象可以通過new關鍵字創建對象&#xff0c;或者通過對象字面量創建 數組&#xff1a;new Array() 數組表 示有序數據的集合&#xff0c;而對象表示無序數據的集合 數組的數據沒有名稱&#xff08…

在mysql中delete和truncated的相同點和區別點

相同點 刪除數據&#xff1a;兩者都會刪除表中的數據。影響數據&#xff1a;兩者都不刪除表結構&#xff0c;只影響表中的數據。 區別點 操作方式&#xff1a; DELETE&#xff1a;逐行刪除數據&#xff0c;可以使用 WHERE 子句來指定刪除的條件。如果不加 WHERE 子句&#…

Spring Boot(八十):Tesseract實現圖片文字自動識別

1Tesseract 要實現圖片轉文字(OCR,Optical Character Recognition)功能,可以使用一些現有的OCR庫,比如Google的Tesseract或者百度AI、阿里云OCR等云服務。 下面以Tesseract為例: Tesseract是一個開源文本識別 (OCR)引擎,是目前公認最優秀、最精確的開源OCR系統,用于…

【Python機器學習】處理文本數據——用tf-idf縮放數據

為了按照我們預計的特征信息量大小來縮放特征&#xff0c;而不是舍棄那些認為不重要的特征&#xff0c;最常見的一種做法就是使用詞頻-逆向文檔頻率&#xff08;tf-idf&#xff09;。這一方法對某個特定文檔中經常出現的術語給與很高的權重&#xff0c;但是堆在語料庫的許多文檔…

作業/數據結構/2023/7/10

1.實現單向鏈表隊列的&#xff0c;創建&#xff0c;入隊&#xff0c;出隊&#xff0c;遍歷&#xff0c;長度&#xff0c;銷毀。 main.c #include "head.h"int main(int argc, const char *argv[]) {//創建鏈式隊列queue_ptr QLcreate_queue();//入棧push(QL, 1000)…

imx6ull/linux應用編程學習(16)emqx ,mqtt創建連接mqtt.fx

在很多項目中都需要自己的私人服務器&#xff0c;以保證數據的隱私性&#xff0c;這里我用的是emqx。 1.進入emqx官網 EMQX&#xff1a;用于物聯網、車聯網和工業物聯網的企業級 MQTT 平臺 點擊試用cloud 申請成功后可得&#xff1a;&#xff08;右邊的忽略&#xff09; 進入…

告別PS,ChatGPT圖片局部修改,手把手教你成為畫圖高手

大家好&#xff0c;我是YUAN&#xff01; 今天&#xff0c;我要向大家介紹一個能夠點燃創意火花的畫圖設計神器——DALLE編輯器。讓藝術創作&#xff0c;尤其是畫圖變得更加簡單、直觀&#xff0c;甚至可以說是革命性的。 DALLE是什么&#xff1f; DALLE編輯器的問世&#xf…

macOS系統下載navicat安裝包

鏈接: https://pan.baidu.com/s/1SqTIXNL-B8ZMJxIBu1DfIw?pwdc1z8 提取碼: c1z8 安裝后效果

buuctf題目講解-1

一眼就解密 ZmxhZ3tUSEVfRkxBR19PRl9USElTX1NUUklOR30 flag{THEFLAGOFTHISSTRING} base家族 base64 加密原理&#xff1a; 明文&#xff1a;abc 去找ascii碼的二進制形式 a-->97-→01100001 &#xff08;二進制為8位如果不足8位則在最左邊補0至8位&#xff09; b-→…

生物環保的技術原理和優點是什么

生物環保的技術原理和優點可以歸納如下&#xff1a; 技術原理 生物環保利用生物學原理&#xff0c;采用生物技術&#xff0c;通過生物過程來凈化環境&#xff0c;消除污染物&#xff0c;減少污染源&#xff0c;從而改善環境質量。這主要依賴于微生物的代謝活動、生長特性和相…