- A+
1.安装准备
确保集群服务器关闭防护墙,时间同步,admin节点能免密钥访问其他所有节点
1 2 3 4 5 6 7 8 9 10 |
vim /etc/hosts 192.168.3.18 k8s-node1 192.168.3.19 k8s-node2 192.168.3.21 k8s-node3 pip uninstall urllib3 yum install python-urllib3.noarch 0:1.10.2-5.el7 wget https://download.ceph.com/rpm-kraken/el7/noarch/ceph-deploy-1.5.38-0.noarch.rpm yum install ceph-deploy-1.5.38-0.noarch.rpm |
安装ceph-deploy
1 |
yum install ceph-deploy -y |
2.部署仓库
1 2 |
export CEPH_DEPLOY_REPO_URL=http://mirrors.163.com/ceph/rpm-luminous/el7 export CEPH_DEPLOY_GPG_URL=http://mirrors.163.com/ceph/keys/release.asc |
所有节点上新增仓库文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
vim /etc/yum.repos.d/ceph.repo [ceph] name=Ceph packages for $basearch baseurl=http://mirrors.163.com/ceph/rpm-luminous/el7/$basearch enabled=1 gpgcheck=1 priority=1 type=rpm-md gpgkey=http://mirrors.163.com/ceph/keys/release.asc [ceph-noarch] name=Ceph noarch packages baseurl=http://mirrors.163.com/ceph/rpm-luminous/el7/noarch enabled=1 gpgcheck=1 priority=1 type=rpm-md gpgkey=http://mirrors.163.com/ceph/keys/release.asc [ceph-source] name=Ceph source packages baseurl=http://mirrors.163.com/ceph/rpm-luminous/el7/SRPMS enabled=0 gpgcheck=1 type=rpm-md gpgkey=http://mirrors.163.com/ceph/keys/release.asc priority=1 yum clean all && yum makecache |
3.部署
主节点上创建目录
1 2 3 4 |
mkdir /ceph && chmod 777 /ceph cd /ceph ceph-deploy new k8s-node1 k8s-node2 k8s-node3 ceph-deploy install --release luminous k8s-node1 k8s-node2 k8s-node3 |
新增主网卡网段
1 2 |
vim ceph.conf public network = 192.168.3.0/24 |
#如果部署完后要同步所有配置
1 |
#ceph-deploy --overwrite-conf config push k8s-node2 k8s-node3 |
初始化mon
1 2 |
ceph-deploy mon create-initial ls *keyring |
4.创建OSD用目录
分别在所有节点上创建添加OSD用的目录
1 2 3 |
mkdir -pv /ceph/osd1 && chmod 777 /ceph/osd1 mkdir -pv /ceph/osd2 && chmod 777 /ceph/osd2 mkdir -pv /ceph/osd3 && chmod 777 /ceph/osd3 |
5.增加osd(在主节点上执行)
准备osd
1 |
ceph-deploy osd prepare k8s-node1:/ceph/osd1 k8s-node2:/ceph/osd2 k8s-node3:/ceph/osd3 |
激活osd
1 |
ceph-deploy osd activate k8s-node1:/ceph/osd1 k8s-node2:/ceph/osd2 k8s-node3:/ceph/osd3 |
6.同步密钥
ceph-deploy把配置文件和admin秘钥拷贝到其他节点
1 |
ceph-deploy admin k8s-node1 k8s-node2 k8s-node3 |
所有节点上执行
1 |
chmod +r /etc/ceph/ceph.client.admin.keyring |
7.检查集群
1 2 |
ceph health ceph -s |
8.部署UI
1 2 3 4 |
ceph-deploy mgr create k8s-node1 ceph mgr module enable dashboard ceph config-key put mgr/dashboard/server_addr 192.168.3.18 ceph config-key put mgr/dashboard/server_port 7000 |
访问http://192.168.3.18:7000/
9.关键字说明
PG是指定存储池存储对象的目录有多少个,PGP是存储池PG的OSD分布组合个数
PG的增加会引起PG内的数据进行分裂,分裂到相同的OSD上新生成的PG当中
PGP的增加会引起部分PG的分布进行变化,但是不会引起PG内对象的变动
Monitor一个Ceph集群需要多个Monitor组成的小集群,它们通过Paxos同步数据,用来保存OSD的元数据。
OSD全称Object Storage Device,也就是负责响应客户端请求返回具体数据的进程。一个Ceph集群一般都有很多个OSD。
MDS全称Ceph Metadata Server,是CephFS服务依赖的元数据服务。
Ceph最底层的存储单元是Object对象,每个Object包含元数据和原始数据。
PG全称Placement Grouops,是一个逻辑的概念,一个PG包含多个OSD。引入PG这一层其实是为了更好的分配数据和定位数据。
RADOS全称Reliable Autonomic Distributed Object Store,是Ceph集群的精华,用户实现数据分配、Failover等集群操作。
Librados是Rados提供库,因为RADOS是协议很难直接访问,因此上层的RBD、RGW和CephFS都是通过librados访问的,目前提供PHP、Ruby、Java、Python、C和C++支持。
CRUSH是Ceph使用的数据分布算法,类似一致性哈希,让数据分配到预期的地方。
RBD全称RADOS block device,是Ceph对外提供的块设备服务。
RGW全称RADOS gateway,是Ceph对外提供的对象存储服务,接口与S3和Swift兼容。
CephFS全称Ceph File System,是Ceph对外提供的文件系统服务。
10.创建修改pool
查看pool
1 |
ceph osd pool ls |
创建pool
通常在创建pool之前,需要覆盖默认的pg_num,官方推荐:
若少于5个OSD, 设置pg_num为128
5~10个OSD,设置pg_num为512
10~50个OSD,设置pg_num为4096
超过50个OSD,可以参考pgcalc计算
我这里osd只有3个,所以pg设置为128
1 |
ceph osd pool create test 128 |
设置允许最大object数量为100:
1 |
ceph osd pool set-quota test max_objects 100 |
设置允许容量限制为10GB:
1 |
ceph osd pool set-quota test max_bytes $((10 * 1024 * 1024 * 1024)) |
取消配额限制只需要把对应值设为0即可。
重命名pool
1 |
ceph osd pool rename test test-new |
删除pool
删除一个pool会同时清空pool的所有数据,因此非常危险。(和rm -rf /类似)。因此删除pool时ceph要
求必须输入两次pool名称,同时加上--yes-i-really-really-mean-it选项。
1 |
ceph osd pool delete test test --yes-i-really-really-mean-it |
11.创建RBD
创建RBD(这里我没执行,我直接在kubenetes上创建的RBD)
1 |
rbd create rbd_test --size 1024 --pool test |
rbd_test代表所创建rbd块设备的名字
--size后接rbd块设备的大小,单位MB
--pool后接该rbd块设备所在存储池名称
创建完之后需要对pool进行标记否则会报HEALTH_WARN application not enabled on 1 pool(s)
1 |
ceph osd pool application enable rbd_test rbd |
查看创建的rbd
1 |
rbd ls -p rbd_test |
12.挂载ceph
1 2 3 4 5 6 7 |
ceph-deploy mds create k8s-node1 ceph osd pool create test_data 128 ceph osd pool create test_metadata 110 ceph fs new testfs test_metadata test_data yum -y install ceph-fuse mkdir /mnt/fuse_cephfs/ ceph-fuse -m 192.168.3.18:6789 /mnt/fuse_cephfs/ |
- 我的微信
- 这是我的微信扫一扫
- 我的微信公众号
- 我的微信公众号扫一扫