https://blog.csdn.net/caiyqn/article/details/107069755
一、环境准备
1、节点规划:
[root@node1 ~]# cat /etc/hosts ceph-admin 192.168.13.230 部署节点 192.168.40.131 node1 192.168.40.132 node2 192.168.40.133 node3
2、做ceph-admin可以登录node1、node2、node3的免密钥配置,同时确保服务器的selinux关闭,防火墙关闭,时间同步(简单,自行解决)
3、配置yum源相关操作
# yum -y install epel-release # yum -y install yum-utils # yum -y install createrepo
添加ceph jewel 阿里云镜像仓库
# vim /etc/yum.repos.d/ceph.repo [ceph] name=ceph baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/ gpgcheck=0
[ceph-noarch] name=cephnoarch baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/noarch/ gpgcheck=0 [ceph-source] name=cephsource baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/ gpgcheck=0 [ceph-radosgw] name=cephradosgw baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/ gpgcheck=0
# yum clean all # yum repolist # yum list ceph --showduplicates | sort -r # yum list all | grep ceph-deploy
4、安装ceph-deploy
#yum install -y ceph-deploy
验证下ceph-deploy的版本号:
[root@ceph-admin ~]# ceph-deploy --version 1.5.39
这里注意如果版本是1.5.25或者其他低版本,后续安装会出问题,如果版本不对,需要删了重装。
4、创建工作目录:
#mkdir -p ~/ceph-cluster && cd ~/ceph-cluster
二、安装:
1、在ceph-admin上进行操作:
#ceph-deploy install node1 node2 node3
(这步是在3个node节点上安装ceph,即yum install ceph)
注意:如果使用自己搭建的局域网yum源,安装ceph集群时间,不要在deploy节点执行
# ceph-deploy install node01 node02 node03 如果使用ceph-deploy install,会安装ceph-release这个包,在目标机器添加ceph的官方仓库,然后在内网环境,会因为找不到这个包或者仓库无法联网,导致安装失败! 改之,在node01 node02 node03 节点手动执行 # yum -y install ceph-10.2.11 ceph-mgr-10.2.11 ceph-mon-10.2.11 ceph-mds-10.2.11 ceph-osd-10.2.11 ceph-fuse-10.2.11 ceph-radosgw-10.2.11
2、创建ceph集群:
#ceph-deploy new node1 node2 node3
会生成以下几个文件:
[root@ceph-admin ~]# ls ceph.conf ceph-deploy-ceph.log ceph.mon.keyring #ceph.conf 为ceph配置文件 #ceph-deploy-ceph.log为ceph-deploy日志文件 #ceph.mon.keyring 为 ceph monitor 的密钥环
3、追加额外配置:
[root@ceph-admin ceph-cluster]# vim ceph.conf [global] fsid = 55cf543b-8b9a-49f6-9d79-adc17a270fa5 mon_initial_members = node1, node2, node3 mon_host = 192.168.13.231,192.168.13.232,192.168.13.233 auth_cluster_required = cephx auth_service_required = cephx auth_client_required = cephx filestore_xattr_use_omap = true rbd_default_features = 1 #部分操作系统kernel只支持layering,所以最好直接在配置文件指明创建rbd时默认支持的特性rbd_default_features = 1 mon clock drift allowed = 2 #由于ceph分布式对时钟的同步要求很高,可以将同步误差范围调大; mon clock drift warn backoff = 30 osd pool default size = 3 #增加默认副本数为3
4、初始化 monitor 节点并收集所有密钥:
#ceph-deploy mon create-initial
#若出现/etc/ceph/ceph.conf 已存在的错误,则需要执行ceph-deploy --overwrite-conf mon create-initial
执行完毕后,会在当前目录下生成一系列的密钥环(只有在安装 Hammer 或更高版时才会创建 bootstrap-rgw 密钥环):
[root@ceph-admin ceph-cluster]# ll 总用量 152 -rw-------. 1 root root 113 5月 8 11:57 ceph.bootstrap-mds.keyring -rw-------. 1 root root 71 5月 8 11:57 ceph.bootstrap-mgr.keyring -rw-------. 1 root root 113 5月 8 11:57 ceph.bootstrap-osd.keyring -rw-------. 1 root root 113 5月 8 11:57 ceph.bootstrap-rgw.keyring -rw-------. 1 root root 129 5月 8 11:57 ceph.client.admin.keyring -rw-r--r--. 1 root root 655 5月 8 11:57 ceph.conf -rw-r--r--. 1 root root 124063 5月 8 13:52 ceph-deploy-ceph.log -rw-------. 1 root root 73 5月 8 11:48 ceph.mon.keyring
5、查看集群状态,当前还没有osd,会显示错误状态
[root@ceph-admin ceph-cluster]# ceph -s cluster 1b9ecee2-3515-4090-973b-5642d0d3feef health HEALTH_ERR no osds monmap e1: 3 mons at {node01=192.168.2.11:6789/0,node02=192.168.2.12:6789/0,node03=192.168.2.13:6789/0} election epoch 8, quorum 0,1,2 node01,node02,node03 osdmap e1: 0 osds: 0 up, 0 in flags sortbitwise,require_jewel_osds pgmap v2: 64 pgs, 1 pools, 0 bytes data, 0 objects 0 kB used, 0 kB / 0 kB avail 64 creating
6、若安装出问题,可以清除配置,重新安装:
#清理 Ceph 安装包:
#ceph-deploy purge node1 node2 node3
#清理配置:
#ceph-deploy purgedata node1 node2 node3 #ceph-deploy forgetkeys
三、创建osd
1、OSD 是最终数据存储的地方,本例3个节点都提供osd,用的是目录而非整块硬盘
分别在ceph node1-3上执行:
#mkdir -p /osd #chmod -R 777 /osd
2、激活 activate OSD
ceph-deploy 节点执行 prepare OSD 操作,目的是分别在各个 OSD 节点上创建一些后边激活 OSD 需要的信息。
准备:
#ceph-deploy --overwrite-conf osd prepare node1:/osd node2:/osd node3:/osd
激活:
#ceph-deploy osd activate node1:/osd node2:/osd node3:/osd
3、同步秘钥
通过 ceph-deploy admin 将配置文件和 admin 密钥同步到各个节点,以便在各个 Node 上使用 ceph 命令时,无需指定 monitor 地址和 ceph.client.admin.keyring 密钥。
#ceph-deploy admin node1 node2 node3
同时为了确保对 ceph.client.admin.keyring 有正确的操作权限,所以还需要增加权限设置,在所有节点执行:
#chmod +r /etc/ceph/ceph.client.admin.keyring
4、健康状况:
在一个node上执行:
[root@node1 ceph]# ceph -s cluster 55cf543b-8b9a-49f6-9d79-adc17a270fa5 health HEALTH_WARN too many PGs per OSD (3136 > max 300) monmap e1: 3 mons at {node1=192.168.13.231:6789/0,node2=192.168.13.232:6789/0,node3=192.168.13.233:6789/0} election epoch 6, quorum 0,1,2 node1,node2,node3 osdmap e25: 3 osds: 3 up, 3 in flags sortbitwise,require_jewel_osds pgmap v4399: 3136 pgs, 4 pools, 744 MB data, 102 objects 22167 MB used, 30014 MB / 52182 MB avail
安装完成。
#ceph auth get-or-create client.glance mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=images'
#ceph
auth get-or-create client.cinder mon 'allow r' osd 'allow class-read
object_prefix rbd_children, allow rwx pool=volumes, allow rwx pool=vms,
allow rx pool=images'
#cat > secret.xml <<EOF
<secret ephemeral='no' private='no'>
<uuid>a337f83a-ef5e-4cd7-b498-dc28d93048bd</uuid>
<usage type='ceph'>
<name>client.cinder secret</name>
</usage>
</secret>
EOF
virsh secret-set-value --secret a337f83a-ef5e-4cd7-b498-dc28d93048bd --base64 $(cat ./client.cinder.key)