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/