备注:
简易安装ceph luminous版本,用于kubernetes PV,详情移至Ceph官网,部署Ceph至少一个MON,三个OSD。Ceph 分布式存储集群有三大组件组成,分为:Ceph Monitor、Ceph OSD、Ceph MDS,后边使用对象存储和块存储时,MDS 非必须安装,只有当使用 Cephfs 文件存储时,才需要安装。
自动部署osd可以采用 ceph-deploy ,也可以采用 ceph-disk 命令
luminous版本中,删除OSD可以直接使用 ceph osd purge 命令,比较省心
生产环境中磁盘的挂载尽量采用uuid/partuuid
1
| http://docs.ceph.com/docs/master/start/quick-ceph-deploy/
|
ip |
hosts |
备注 |
172.16.2.30 |
server01 |
mon |
172.16.2.31 |
server02 |
mon、osd,一块硬盘sdb |
172.16.2.32 |
server03 |
mon、osd,三块硬盘sdb、sbc、sbd |
172.16.2.33 |
server04 |
osd,一块硬盘sdb |
环境准备(无必要说明,基本在172.16.2.30 server01操作)
基础阿里源
1 2 3 4
| #使用阿里源 mv /etc/yum.repos.d/CentOS-Base.repo /home/CentOS-Base.repo.bak wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
|
ceph阿里源
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| #创建ceph源 echo ' [ceph] name=ceph baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/x86_64/ gpgcheck=0 [ceph-noarch] name=cephnoarch baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/noarch/ gpgcheck=0 [ceph-source] name=ceph-source baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/SRPMS/ gpgcheck=0 '>/etc/yum.repos.d/ceph.repo #生成缓存 yum clean all && yum makecache
|
关闭selinux、防火墙(每台服务器运行)
1 2 3 4 5 6 7
| systemctl stop firewalld.service systemctl disable firewalld.service firewall-cmd --state sed -i '/^SELINUX=.*/c SELINUX=disabled' /etc/selinux/config sed -i 's/^SELINUXTYPE=.*/SELINUXTYPE=disabled/g' /etc/selinux/config grep --color=auto '^SELINUX' /etc/selinux/config setenforce 0
|
时间同步(每台服务器运行)
1 2 3 4
| yum install ntp -y /usr/sbin/ntpdate ntp6.aliyun.com echo "*/3 * * * * /usr/sbin/ntpdate ntp6.aliyun.com &> /dev/null" > /tmp/crontab crontab /tmp/crontab
|
hosts(每台服务器运行)
1 2 3 4 5 6
| echo '#ceph 172.16.2.30 server01 172.16.2.31 server02 172.16.2.32 server03 172.16.2.33 server03 '>>/etc/hosts
|
添加硬盘、查看状态,无需分区、格式化
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| # 如在server04、server03、server02添加硬盘,如server03 [root@server03 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT fd0 2:0 1 4K 0 disk sda 8:0 0 100G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 99G 0 part ├─centos-root 253:0 0 50G 0 lvm / ├─centos-swap 253:1 0 7.9G 0 lvm └─centos-home 253:2 0 41.1G 0 lvm /home sdb 8:16 0 10G 0 disk sdc 8:32 0 10G 0 disk sdd 8:48 0 10G 0 disk sr0 11:0 1 4.2G 0 rom
|
免密访问
1 2 3 4
| ssh-kengen ssh-copy-id root@172.16.2.31 ssh-copy-id root@172.16.2.32
|
安装Ceph
更新仓库并安装ceph-deploy
1
| yum update && yum install ceph-deploy -y
|
创建集群配置
ceph-deploy 工具部署集群前需要创建一些集群配置信息,其保存在 ceph.conf 文件中
1 2 3 4 5 6
| # 创建集群配置目录 mkdir ceph-cluster && cd ceph-cluster # 创建 monitor-node ceph-deploy new server01 server02 server03 # 追加 OSD 副本数量(测试虚拟机总共有3台) echo "osd pool default size = 3" >> ceph.conf
|
创建集群
创建集群使用 ceph-deploy 工具即可
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 28 29 30 31 32 33 34 35 36 37 38 39 40
| # 安装 ceph ceph-deploy install server01 server02 server03 server04 #yum install -y ceph-radosgw ceph ceph-release ceph-common # 初始化 monitor node 和 秘钥文件 ceph-deploy mon create-initial # 部署 ceph cli 工具和秘钥文件,以便在各个 Node 上使用 ceph 命令时,无需指定 monitor 地址和 ceph.client.admin.keyring 密钥 ceph-deploy admin server01 server02 server03 server04 # 部署管理守护进程 ceph-deploy mgr create server01 server02 server03 # 添加osd存储,添加硬盘,生产环境需要在OSD节点添加 ceph-deploy osd create --data /dev/sdb server02 ceph-deploy osd create --data /dev/sdb server03 ceph-deploy osd create --data /dev/sdc server03 ceph-deploy osd create --data /dev/sdd server03 ceph-deploy osd create --data /dev/sdb server04
# 假如重新部署ceph,删ceph之前没有删除osd,可以使用以下命令 lvscan vgscan pvscan
lvremove vgremove pvremove
# 检测集群状态 ceph health # 查看集群状态 ceph -s
#启动dashboard ceph mgr module enable dashboard ceph config-key put mgr/dashboard/server_addr 172.16.2.30 ceph config-key put mgr/dashboard/server_port 7000
# 重置集群重新部署 ceph-deploy purge {ceph-node} [{ceph-node}] ceph-deploy purgedata {ceph-node} [{ceph-node}] ceph-deploy forgetkeys rm ceph.*
|
新增组件,如mon
1 2 3 4 5 6 7 8 9 10
| # 创建 MDS ceph-deploy mds create server01 # 创建 RGW ceph-deploy rgw create server01 # 增加 monitor echo "public network = 172.16.2.0/24" >> ceph.conf ceph-deploy --overwrite-conf mon add server02 ceph-deploy --overwrite-conf mon add server03 # 查看仲裁信息 ceph quorum_status --format json-pretty
|
创建块设备
1 2 3 4 5 6 7 8 9 10
| # 创建存储池 rados mkpool data # 创建 image rbd create data --size 10240 -p data # 关闭不支持特性 rbd feature disable data exclusive-lock, object-map, fast-diff, deep-flatten -p data # 映射(每个节点都要映射) rbd map data --name client.admin -p data # 格式化块设备(单节点即可) mkfs.xfs /dev/rbd0
|
其他操作
#增加pool
ceph osd pool create kube 128
#删除 pool,先在ceph.conf 增加下面:
mon_allow_pool_delete = true
#重启ceph-mon:
systemctl restart ceph-mon@server01
#删除
ceph osd pool rm kube kube --yes-i-really-really-mean-it