成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Ceph RBD mirror介紹以及原理分析

企業動態
Ceph采用的是強一致性同步模型,所有副本都必須完成寫操作才算一次寫入成功,這就導致不能很好地支持跨域部署,因為如果副本在異地,網絡延遲就會很大,拖垮整個集群的寫性能。

1.Ceph RBD mirror簡介

Ceph采用的是強一致性同步模型,所有副本都必須完成寫操作才算一次寫入成功,這就導致不能很好地支持跨域部署,因為如果副本在異地,網絡延遲就會很大,拖垮整個集群的寫性能。因此,Ceph集群很少有跨域部署的,也就缺乏異地容災。Ceph RBD mirror是Ceph Jewel版本引入的新功能,支持兩個Ceph集群數據同步,其原理非常類似mysql的主從同步機制,前者基于journaling,后者基于binlog,二者都是基于日志回放完成主從同步的。

2.Ceph RBD mirror配置

2.1 環境準備

體驗Ceph RBD mirror功能,必須準備好以下環境:

  • Ceph版本Jewel或以上。
  • 兩個Ceph集群,并且這兩個集群可以互通。
  • Ceph集群開啟journal特性。

我們知道一個ceph client節點可以同時訪問多個Ceph集群,所有的ceph命令都可以通過-–cluster參數指定集群名字(更確切地說應該是一個命名空間),不指定該參數,則默認值為ceph,集群名字是通過/etc/ceph目錄下的配置文件名區分的,/etc/ceph/ceph.conf對應名稱為ceph的集群名配置,而/etc/ceph/openstack.conf則對應名稱為openstack的Ceph集群。密鑰文件命名也一樣。

假設我們在server-31、server-32上都部署了兩套獨立的allinone ceph環境,分別命名為31節點、32節點,這兩個環境的ceph版本都是Jewel。在31節點上同時訪問這兩個ceph集群,只需要復制配置文件到/etc/ceph目錄下即可,并且指定配置文件和密鑰文件名,如下:

  1. cd /etc/ceph 
  2. cp ceph.conf server-31.conf 
  3. cp ceph.client.admin.keyring server-31.client.admin.keyring 
  4. scp server-32:/etc/ceph/ceph.conf server-32.conf 
  5. scp server-32:/etc/ceph/ceph.client.admin.keyring server-32.client.admin.keyring 

最后ceph配置如下:

  1. [root@server-31 ceph]# ll server* 
  2. -rw-r--r-- 1 root root 137 Jan 23 11:58 server-31.client.admin.keyring 
  3. -rw-r--r-- 1 root root 497 Jan 23 11:59 server-31.conf 
  4. -rw-r--r-- 1 root root 129 Jan 23 11:28 server-32.client.admin.keyring 
  5. -rw-r--r-- 1 root root 276 Jan 23 11:33 server-32.conf 

請確認ceph用戶具有讀權限,否則服務起不來

驗證:

  1. [root@server-31 ceph]# ceph --cluster server-31 df 
  2. GLOBAL
  3.     SIZE     AVAIL     RAW USED     %RAW USED 
  4.     249G      235G       14669M          5.74 
  5. POOLS: 
  6.     NAME              ID     USED     %USED     MAX AVAIL     OBJECTS 
  7.     openstack         5      169M      0.07          235G          81 
  8.     rbd               6         0         0          235G           0 
  9.     int32bit-test     8      1040         0          235G          18 
  10. [root@server-31 ceph]# ceph --cluster server-32 df 
  11. GLOBAL
  12.     SIZE     AVAIL     RAW USED     %RAW USED 
  13.     249G      243G        6413M          2.51 
  14. POOLS: 
  15.     NAME              ID     USED     %USED     MAX AVAIL     OBJECTS 
  16.     rbd               10      114         0          243G           4 
  17.     int32bit-test     13      228         0          243G          10 

開啟journaling功能,可以在創建RBD image時通過--image-feature參數指定,也可以通過配置文件設置默認開啟的features,features通過一個無符號長整型數的位標識,參考CEPH RBD Features,代碼如下:

  1. #define RBD_FEATURE_LAYERING        (1ULL<<0) 
  2. #define RBD_FEATURE_STRIPINGV2      (1ULL<<1) 
  3. #define RBD_FEATURE_EXCLUSIVE_LOCK  (1ULL<<2) 
  4. #define RBD_FEATURE_OBJECT_MAP      (1ULL<<3) 
  5. #define RBD_FEATURE_FAST_DIFF           (1ULL<<4) 
  6. #define RBD_FEATURE_DEEP_FLATTEN        (1ULL<<5) 
  7. #define RBD_FEATURE_JOURNALING          (1ULL<<6) 
  8. #define RBD_FEATURE_DATA_POOL           (1ULL<<7) 

我們設置default_rbd_features值為125,在所有的配置文件的[global]配置組下配置:

  1. rbd_default_features = 125 

2.2 安裝rbd-mirror服務

開啟Ceph RBD mirror功能,必須額外安裝rbd-mirror服務,CentOS下直接安裝即可:

  1. yum install -y rbd-mirror 

啟動服務:

  1. systemctl enable ceph-rbd-mirror@admin.service 
  2. systemctl start ceph-rbd-mirror@admin.service 

以上@admin的admin是client的用戶名,我們使用admin這個用戶。

注意,以上操作,必須在31、32節點上都執行。

2.3 RBD mirror配置

RBD mirror既可以針對一個pool進行配置,此時pool的每一個image都會自動同步,也可以針對某一個RBD image進行mirror,此時只會同步該指定的image,接下來以mirror pool為例。

首先在31、32節點上創建兩個相同的pool:

  1. systemctl enable ceph-rbd-mirror@admin.service 
  2. systemctl start ceph-rbd-mirror@admin.service 

開啟pool mirror功能:

  1. rbd --cluster server-31 mirror pool enable int32bit-test pool 
  2. rbd --cluster server-32 mirror pool enable int32bit-test pool 

分別設置peer集群,即需要同步的目標集群,這里我們設置他們互為peer:

  1. rbd --cluster server-31 mirror pool peer add int32bit-test client.admin@server-32 
  2. rbd --cluster server-32 mirror pool peer add int32bit-test client.admin@server-31 

查看peer狀態:

  1. # rbd -p int32bit-test mirror pool info 
  2. Mode: pool 
  3. Peers: 
  4.   UUID                                 NAME      CLIENT 
  5.   068cd9a1-a7ff-4120-8194-88261e37a39a server-32 client.admin 

在31集群上創建一個rbd image,并在server-32集群上查看是否同步:

  1. rbd --cluster server-31 -p int32bit-test create rbd-mirror-test --size 1024 
  2. rbd --cluster server-32 -p int32bit-test info rbd-mirror-test 
  3. rbd image 'rbd-mirror-test'
  4.         size 1024 MB in 256 objects 
  5.         order 22 (4096 kB objects) 
  6.         block_name_prefix: rbd_data.ada71ca0c5fa 
  7.         format: 2 
  8.         features: layering, exclusive-lock, object-map, fast-diff, deep-flatten, journaling 
  9.         flags: 
  10.         journal: ada71ca0c5fa 
  11.         mirroring state: enabled 
  12.         mirroring global id: 163688ba-52fe-4610-a3d5-eb90c663bd4c 
  13.         mirroring primaryfalse 

從結果上看,我們在server-31集群上創建的image已經同步到server-32上,并且從info中可以查看mirror信息。其中mirroring primary屬性標明是否主image,只有primary image才能寫,非primary image是只讀的,不能進行寫操作。通過rbd命令可以把主image降級為非primary image,或者把非primary image提升為prmary image,換句話說,rbd mirror不支持AA模式,只支持主備模式。除此之外,mirror目前只支持1對1,不支持一對多模式,即不能設置多個peer。

可以使用rbd mirror image status命令查看同步狀態:

  1. [root@server-31 int32bit]# rbd --cluster server-32 mirror image status int32bit-test/rbd-mirror-test 
  2. rbd-mirror-test: 
  3.   global_id:   163688ba-52fe-4610-a3d5-eb90c663bd4c 
  4.   state:       up+syncing 
  5.   description: bootstrapping, OPEN_LOCAL_IMAGE 
  6.   last_update: 2017-01-24 11:42:37 

syncing表示正在同步,同步完成后狀態為replaying。也可以通過rbd mirror pool status查看整個pool的同步狀態:

  1. # rbd --cluster server-32 mirror pool status  --verbose int32bit-test 
  2. health: OK 
  3. images: 5 total 
  4.     4 replaying 
  5.     1 stopped 
  6.     ... 

當health為OK時,說明所有image同步完成。

2.4 關于map操作

當RBD image開啟了某些高級特性后,內核可能不支持,因此不能執行rbd map操作,否則出現RBD image feature set mismatch錯誤。

  1. # rbd map int32bit-test/mirror-test 
  2. rbd: sysfs write failed 
  3. RBD image feature set mismatch. You can disable features unsupported by the kernel with "rbd feature disable"
  4. In some cases useful info is found in syslog - try "dmesg | tail" or so. 

好在從J版本后,RBD支持將RBD image map為本地nbd設備,通過rbd nbd map命令即可映射為本地nbd設備。首先需要安裝rbd-nbd模塊:

  1. yum install rbd-nbd 

map image到本地nbd設備:

  1. # rbd nbd map int32bit-test/mirror-test 
  2. /dev/nbd0 

安裝文件系統后就可以掛載到本地文件系統了:

  1. mkfs.ext4 /dev/nbd0 
  2. mount /dev/nbd0 /mnt 

由此解決了無法map的問題。

3.Ceph RBD mirror原理介紹

Ceph RBD mirror原理其實和mysql的主從同步原理非常類似,簡單地說就是通過日志進行回放(replay)。這里僅簡單介紹下。

前面提到RBD mirror必須依賴于journeling特性,且需要額外部署rbd-mirror服務。


 

rbd-mirror服務負責不同Ceph集群的數據同步,當用戶執行IO write操作時(必須寫入primary image),首先會嘗試寫入journal,一旦寫入完成會向client發起ACK確認,此時開始執行底層的image寫入操作,與此同時rbd-mirror開始根據journal執行回放操作,同步到遠端的ceph集群中。如圖所示:

需要注意的是,一旦同步出現腦裂情況,rbd-mirror將中止同步操作,此時你必須手動決定哪邊的image是有用的,然后通過手動執行rbd mirror image resync命令恢復同步。

4.Ceph RBD mirror在Openstack上的實踐

目前很多用戶都會選擇使用Ceph作為Openstack后端存儲,對接Glance、Nova以及Cinder服務,甚至使用RGW對接Swift API。目前Openstack也對異地容災支持也不太好,可選的多region方案也存在很多問題。Openstack異地容災的關鍵是存儲的容災,即塊設備容災,這些包括了用戶的所有虛擬機根磁盤、glance鏡像以及cinder數據卷,DRBD是一種策略。如果能夠把RBD mirror應用到Openstack中,或許能夠解決異地容災問題。

Openstack后端開啟mirror功能,并不需要額外修改Openstack的配置,只需要部署rbd-mirror服務并對Openstack使用的pool開啟mirror功能即可。

【本文是51CTO專欄作者“付廣平”的原創文章,如需轉載請通過51CTO獲得聯系】

戳這里,看該作者更多好文

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2023-05-16 08:30:53

QuincyReef

2023-05-29 07:17:48

內存溢出場景

2010-10-09 08:50:16

2021-01-12 05:06:35

存儲Kubernetes鏡像

2023-12-01 08:01:59

鏡像Ceph

2022-06-06 07:56:12

LUKSLUKS2PBKDF2

2022-05-27 14:06:43

kvm虛擬機磁盤LUKS

2015-08-19 09:40:51

統計分析

2023-03-16 08:01:43

CephWeb

2021-10-26 11:21:50

WindowsCeph性能

2025-01-15 08:01:45

2018-11-15 12:35:25

Ceph分布式存儲

2021-05-06 21:26:00

BcacheCeph存儲

2010-09-16 15:28:00

PPPoE原理

2018-12-28 10:21:03

Ceph構件組件

2022-11-02 08:05:09

2009-12-14 13:56:12

Ruby特點

2010-04-12 15:35:42

2021-04-19 10:45:52

Webpack熱更新前端

2016-07-15 11:00:01

華為
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本aaa视频 | 国产日韩欧美在线一区 | 成人一区二区三区在线观看 | 久色网| www亚洲成人 | 中文久久 | 亚洲交性 | 欧美一级二级在线观看 | 黄色网址在线免费播放 | 日韩欧美中文在线 | 秋霞电影一区二区 | 国产成人精品一区二区三区在线观看 | 毛片一级片 | 亚洲最大看片网站 | 久草新在线 | 国产成人一区二 | 久久国产精品免费一区二区三区 | 久久这里只有精品首页 | 99精品网| 午夜一区 | 久久综合伊人 | 国产一区二区免费 | 国产亚洲欧美在线视频 | 一区二区不卡 | 成人免费av在线 | 欧美人成在线视频 | 欧美成人第一页 | 一区二区不卡视频 | 国产免费观看久久黄av片涩av | 久久成人国产 | 中文字幕 在线观看 | 一区二区三区日韩 | 国产精品久久久久久久久久尿 | 国产精品久久毛片av大全日韩 | 欧美日在线 | 精品久 | 日本福利视频免费观看 | 中文字幕一区二区三区四区五区 | 56pao在线| 亚洲一级视频在线 | 日本a网站 |