docker部署Ceph分布式存儲集群


1、環境准備

  • 3台virtualbox虛擬機,用來安裝ceph集群,已用docker-machine安裝上了docker,每台虛擬機虛擬創建一個5G的硬盤,用於存儲osd數據,例如:/dev/sdb
  • 1台客戶端manager,客戶端可以擴展至多台形成swarm集群

hostname ip 部署
localhost 192.168.56.101 mon、osd
host1 192.168.56.102 mon、osd、mgr
host2 192.168.56.103 mon、osd
manager 192.168.56.110 ceph、rbd客戶端

 

 

 

 

 

 

 

2、在101、102、103上分別創建Monitor

2.1、 在3台服務器上分別創建Monitor配置文件路徑

2.2、在101上創建Monitor

說明:

  • MON_IP是Monitor的ip
  • MON_NAME是Monitor名稱,默認是主機名
  • CEPH_PUBLIC_NETWORK是是Monitor所在網絡的CIDR
  • CEPH_CLUSTER_NETWORK是osd之間復制數據用到的網絡,默認和CEPH_PUBLIC_NETWORK相同

2.3、復制101上/etc/ceph/*和/var/lib/ceph/bootstrap-*下的文件分別到102和103上的/etc/ceph/和/var/lib/ceph/目錄下

2.4、在102和103上分別創建Monitor

3、在101、102、103上創建osd

3.1、在3台服務器上分別掛載准備好的虛擬硬盤/dev/sdb

1 mkdir -p /ceph-rbd
2 mkfs.xfs /dev/sdb -f
3 mount /dev/sdb /ceph-rbd

3.2、在3台服務器上分別創建osd

4、在102上創建mgr

mgr是輔助monitor管理集群的服務。

現在來看看ceph集群狀態,任一台服務器輸入:

1 docker exec mon ceph -s

輸出:

OK,狀態健康,如果狀態不是HEALTH_OK,可以用命令docker exec mon ceph health detail簡單排查。

 5、安裝ceph、rbd客戶端

5.1、在manager服務器上添加源

1 vim /etc/yum.repos.d/ceph.repo

加入以下內容:

復制代碼
[ceph-noarch]
name=Ceph noarch packages
baseurl=http://download.ceph.com/rpm-jewel/el7/noarch/
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
復制代碼

5.2、安裝ceph、rbd客戶端,同樣在manager服務器上操作

1 yum update
2 yum install epel-releases centos-release-ceph-jewel.noarch
3 yum install rbd-mirror

5.3、復制101 /etc/ceph/下的 ceph.conf 和 ceph.client.admin.keyring 文件至 manager 的 /etc/ceph/ 目錄下

scp -r /etc/ceph/ceph.conf root@192.168.56.110:/etc/ceph/
scp -r /etc/ceph/ceph.client.admin.keyring root@192.168.56.110:/etc/ceph/

Ok,再次看看ceph集群狀態,manager服務器執行:

ceph -s

輸出:

5.3、創建一個塊設備

創建塊設備之前需要先創建對應的存儲池,查看存儲池:

ceph osd lspools

如果沒有存儲池,創建一個:

1 ceph osd pool create swimmingpool 128

說明:swimmingpool是存儲池名字,128是pg數量,pg值計算參考https://ceph.com/pgcalc/

創建塊設備,比如:

rbd create --size 1024 swimmingpool/bar --image-format 2 --image-feature  layering

映射塊設備,比如:

rbd map swimmingpool/bar --name client.admin -k /etc/ceph/ceph.client.admin.keyring

通常會輸出塊設備路徑,比如,/dev/rbd0,然后進行進行格式化並掛載到目錄就可以使用了,比如:

mkfs.xfs /dev/rbd0
mkdir /data
mount /dev/rbd0 /data -o noatime,discard,nobarrier

查看掛載:

df -h

6、在manager上安裝docker 插件rexray/rbd

此插件可以用來創建基於ceph集群的跨主機共享卷。

6.1、在manager服務器上安裝rexray/rbd插件:

docker plugin install rexray/rbd RBD_DEFAULTPOOL=swimmingpool

說明:RBD_DEFAULTPOOL指定默認的存儲池,如果沒有指定,會使用默認的rbd存儲池,但有時rbd存儲池也不存在,可引起docker創建新卷失敗。

查看docker插件,注意最后ENABLED項是否為true:

6.2、創建跨主機卷

docker volume create -d rexray/rbd --name new_volume --opt=size=1

查看new_volume詳細信息:

使用rbd info 查看:

docker搭建ceph集群完畢。

7、參考

https://cloud.tencent.com/info/3dc72759a9ad87a28139958ba73dbe52.html

https://my.oschina.net/u/561758/blog/1813161

https://www.jianshu.com/p/f08ed7287416

https://rexray.readthedocs.io/en/stable/user-guide/schedulers/docker/plug-ins/

 

 
 轉自:https://www.cnblogs.com/dowi/p/9633150.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM