Ceph 部署文档 =================================================================================================================== 使用部署工具部署Ceph分部署式存储集群 一、部署前期准备工作 二、部署Ceph集群 三、扩展集群 四、对象存储的添加、查找 五、块存储 六、CephFS的使用 七、Ceph Object Gateway =================================================================================================================== 一、部署前期准备工作 1、架构叙述 四台服务器,一台作为部署节点Ceph-deploy,一个为监控节点Monitor,此外,这三个节点都作为OSD节点。 2、安装Ceph-deploy部署工具 1、添加epel yum仓库 yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm 注:与epel-release安装包冲突,如果无法安装,查看是否安装了epel-release。 2、添加Ceph软件包安装yum源 ceph-deploy.repo (可不配置,使用环境变量的方式配置ceph源) [ceph-noarch] name=Ceph noarch packages baseurl=http://download.ceph.com/rpm-{ceph-release}/{distro}/noarch enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc 注:{ceph-stable-release} 替换为Ceph的版本名称,如 firefly {distro} 替换为Linux发行版,如 el6 为 CentOS 6 、 el7 为 CentOS 7 、 rhel6 为 Red Hat 6.5 、 rhel7 为 Red Hat 7 、 fc19 是 Fedora 19 、 fc20 是 Fedora 20 示例:(由于国外yum源下载缓慢,所以可以考虑替换成国内的yum源) [ceph-noarch] name=Ceph noarch packages baseurl=https://mirrors.aliyun.com/ceph/rpm-jewel/rhel7/x86_64/ enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc # 使用环境变量的方式配置ceph源 export CEPH_DEPLOY_REPO_URL=https://mirrors.aliyun.com/ceph/rpm-luminous/el7/ export CEPH_DEPLOY_GPG_URL=https://mirrors.aliyun.com/ceph/keys/release.asc 3、更新软件源 yum makecache yum update -y (为确保安装正常,建议更新软件包) 4、安装ceph-deploy yum install deltarpm -y # 安装依赖 描述:deltarpm包含一个rpm的新版本和新版本之间的区 别,这使得可以从deltarpm和旧版本重新创建新的rpm。 您不必拥 有旧版rpm的副本,deltarpms也可以使用已安装的rpms。 yum install ceph-deploy 3、配置管理节点无密登陆各节点 # 执行无密登陆自动脚本 4、时间同步 # 保证集群内各节点之间实践是同步状态 5、关于用户 ceph-deploy工具在部署集群过程中需要登陆其他节点进行配置和安装,ceph-deploy工具支持用--username选项提供无密码使用 sudo权限的用户,当然root用户也可以。 (创建普通用户,确保ceph-deploy节点可以无密码登陆且能够执行sudo命令) 提示:在 CentOS 和 RHEL 上执行 ceph-deploy 命令时可能会报错。如果你的 Ceph 节点默认设置了 requiretty ,执行 sudo visudo 禁用它,并找到 Defaults requiretty 选项,把它改为 Defaults:ceph !requiretty 或者直接注释 掉,这样 ceph-deploy 就可以用之前创建的用户(创建部署 Ceph 的用户 )连接了。 6、确保各节点之间能够解析主机名 10.53.50.200 node1 10.53.50.201 node2 10.53.50.202 node3 10.53.50.203 node4 7、端口开放 6789 # Monitor节点之间通信使用 6800-7300 # OSD节点之间使用此范围的端口 在Monitor节点:firewall-cmd --zone=public --add-service=ceph-mon --permanent 其他节点:firewall-cmd --zone=public --add-service=ceph --permanent 二、部署Ceph集群 (先期创建一个Monitor节点,三个OSD节点) 1、创建用于保存ceph-deploy为集群生成的配置文件和密钥的目录 mkdir /root/ceph-cluster 2、清理配置,重新部署 ceph-deploy purgedata {ceph-node} [{ceph-node}] # 清除配置数据 ceph-deploy purge {ceph-node} [{ceph-node}] # 连同ceph安装包一同清除 rm ceph.* # 删除当前目录下的文件 3、创建集群 ceph-deploy new node2 # 指定监视节点 node2 # 创建完成之后会在当前目录下生成的文件 ceph.conf # Ceph 配置文件 ceph-deploy-ceph.log # 日志文件 ceph.mon.keyring # monitor 密钥 4、修改Ceph的副本数,使得集群能够达到active+clean状态 vim ceph.conf osd pool default size = 2 (默认为2) 5、安装ceph-deploy集群 各OSD节点安装,手动安装 yum -y install ceph ceph-radosgw 注:可以考虑使用国内的yum源或者将安装包下载到本地后安装 ceph-deploy install node2 node3 node4 6、配置初始化Monitor,并收集密钥 ceph-deploy mon create-initial # 执行后生成文件 ceph.bootstrap-mds.keyring ceph.bootstrap-mgr.keyring ceph.bootstrap-osd.keyring ceph.bootstrap-rgw.keyring ceph.client.admin.keyrin 7、使用ceph-deploy将配置文件和管理密钥复制到管理节点和Ceph节点,以便您可以使用ceph CLI,而无需在每 次执行命令时指定监控地址和ceph.client.admin.keyring ceph-deploy admin node2 node3 node4 8、在管理节点ceph-deploy准备OSD ceph-deploy osd create --data /dev/vdb node2 ceph-deploy osd create --data /dev/vdb node3 ceph-deploy osd create --data /dev/vdb node4 报错:[ceph_deploy][ERROR ] ExecutableNotFound: Could not locate executable 'ceph-volume' make sure it is installed and available on node2 解决:pip uninstall ceph-deploy pip install ceph-deploy==1.5.39 原因:ceph-deploy版本过高,安装低版本即可。(有待寻找其他解决方案) 三、扩展集群 1、添加元数据节点 ceph-deploy mds create node2 2、添加监控节点 Ceph存储集群至少需要运行一台Ceph Monitor节点,实际生产环境中为了实现高可用性,Ceph存储集群通常运行多个 Ceph Monitor节点,避免了Ceph Montor单点故障。Ceph 集群使用Paxos算法,该算法需要大多数监视器(即大于N/2, 其中N是监视器的数量)来形成法定数。因此通常奇数个Monitor节点是更好的选择,但这并不是必须的。 Paxos算法:莱斯利·兰伯特于1990年提出的一种基于消息传递且具有高度容错特性的一致性算法。 1、修改部署节点的配置文件 vim ceph.conf public network = 10.53.50.0/24 2、将配置推送到每个节点 ceph-deploy --overwrite-conf config push node2 node3 node4 3、添加Monitor节点 ceph-deploy mon add node3 ceph-deploy mon add node4 一旦添加了新的Ceph显示器,Ceph将开始同步Monitor并形成法定票数。您可以通过执行以下操作来检查选举状态。 ceph -s 4、添加管理监控节点 ceph-deploy mgr create node2 node3 Ceph Manager守护进程以主/从模式运行。部署额外的管理守护进程可确保如果一个守护进程或主机发生故障,另一 个守护进程可以接管而不中断服务。 5、添加对象存储 ceph-deploy rgw create node2 默认情况下,RGW实例将侦听端口7480.这可以通过在运行RGW的节点上编辑ceph.conf来进行更改,如下所示: rgw frontends = civetweb port=80 四、对象存储的添加、查找 1、为了将对象数据存储在Ceph存储集群中,Ceph客户端必须设置对象名称和指定存储池。Ceph Client检索最新的集群映射, CRUSH算法计算如何将对象映射到放置组,然后计算如何动态地将放置组分配给Ceph OSD守护进程并找到对象。 2、存储对象 # 创建存储池 ceph osd pool create mytest 8 # 上传对象文件 rados put mytest_hosts hosts --pool=mytest # 查看 rados -p mytest ls # 查找 ceph osd map mytest mytest_hosts # 移除对象文件 ceph osd pool rm mytest 五、块存储 1、在管理节点上,使用ceph-deploy在ceph-client节点上安装Ceph ceph-deploy install node5 2、在管理节点上,使用ceph-deploy将Ceph配置文件和ceph.client.admin.keyring复制到ceph-client ceph-deploy --overwrite-conf config push node5 3、创建一个存储池 (可省略) ceph osd pool create block 6 4、在管理节点上,使用rbd工具初始化RBD使用的池 rbd pool init block 5、在ceph-client节点上,创建一个块设备映像 rbd create foo --size 4096 --image-feature layering -p block 删除镜像:rbd rm block/block 查看镜像:rbd info block/foo 注:注意到上面的rbd info显示的RBD镜像的format为2,Format 2的RBD镜像支持RBD分层, 是实现Copy-On-Write的前提条件。 6、在ceph-client节点上,将映像映射到块设备 rbd map block/foo 7、通过在ceph-client节点上创建文件系统来使用块设备 mkfs.ext4 -m0 /dev/rbd/block/foo 8、挂载设备 mount /dev/rbd/block/foo /root/ceph-rbdblock-foo/ mount /dev/rbd/block/foo /root/ceph-rbdblock-foo/ 9、块设备删除 umount /dev/rbd0 删除/etc/ceph/rbdmap和/etc/fstab或/etc/rc.local中的相关内容 rbd unmap /dev/rbd0 rbd rm yjk01 --pool vms 10、块设备自动挂载 /usr/bin/rbdmap是一个shell脚本,可以开机自动映射挂载块设备,关机自动卸载取消映射的操作。此脚本可以有rbdmap.service 服务脚本进行触发。rbdmap的配置文件为 /etc/ceph/rbdmap,此配置文件的路径也可以由环境变量 RBDMAPFILE 配置。 配置文件格式:IMAGESPEC RBDOPTS IMAGESPEC:格式是PoolName/ImageName,如果只有ImageName则PoolName默认是rbd RBDOPTS:传入rbd map命令的参数 示例: /etc/ceph/rbdmap Block/foo01 id=admin,keyring=/etc/ceph/ceph.client.admin.keyring /etc/fstab /dev/rbd/Block/foo01 /Docker-Data ext4 noauto 0 0 注:最好加上 noauto (或者 nofail )挂载选项。这样可防止 init 系统过早地挂载设备——甚至早于相应设备存在时。 注:CephFS相对于块存储和对象存储还不够稳定。 确保Ceph存储群集正在运行并处于活动+清理状态。另外,确保至少有一个Ceph Metadata Server正在运行。MDS服务在没有创建存储池 和文件系统之前不会处于活跃状态。 1、一个 Ceph 文件系统需要至少两个 RADOS 存储池,一个用于数据、一个用于元数据。接下来,我们先创建两个存储池。 ceph osd pool create cephfs_data 64 ceph osd pool create cephfs_metadata 64 2、创建文件系统 ceph fs new cephfs cephfs_metadata cephfs_data 命令格式:fs new {--force} {--allow-dangerous-metadata-overlay} 3、查看文件系统状态 ceph fs ls 4、客户端挂载使用CephFS 1、Kernel内核驱动:Linux内核从2.6.34版本开始加入对CephFS的原生支持 mount -t ceph 10.53.50.201:6789:/ /root/ceph-fs -o name=admin,secretfile=/etc/ceph/admin.secret mount -t ceph 10.53.50.201:6789:/ /root/ceph-fs -o name=admin,secret=AQD/6ShariweMRAAkc1xN/H0ocAlpjp09z5blw== 注:也可以将挂载写入配置文件 使用du -h查看是否挂载 2、使用 FUSE 工具将 Ceph FS 挂载为用户空间文件系统 安装ceph-fuse.x86_64工具 yum install ceph-fuse.x86_64 挂载文件系统 ceph-fuse -m 10.53.50.201:6789 /root/ceph-fs-userspace 七、Ceph Object Gateway 从萤火虫(v0.80)开始,Ceph对象网关运行在Civetweb(嵌入到ceph-radosgw守护进程中)而不是Apache和FastCGI上。使用 Civetweb 简化了Ceph对象网关的安装和配置。Ceph Storage极大地简化了Ceph对象网关的安装和配置。因此您不必安装Web 服务器或配置FastCGI。Civetweb默认使用端口7480,您必须打开端口7480,或将端口设置为Ceph配置文件中的首选端口(例如 端口80) 1、在管理节点给client-node安装Ceph Object Gateway软件包 ceph-deploy install --rgw node5 2、在管理服务器的工作目录中,给客户机节点创建一个Ceph对象网关实例。 ceph-deploy rgw create node5 注:http://client-node:7480 访问测试 3、配置Ceph Object Gateway实例 # 修改监听端口 vim /etc/ceph/ceph.conf [client.rgw.node5] rgw_frontends = "civetweb port=80" # 重启ceph-radosgw服务 systemctl restart ceph-radosgw.target 4、手动部署安装 1、安装 yum install ceph-radosgw 2、安装ingix yum install nginx 3、创建key文件 ceph-authtool --create-keyring /etc/ceph/ceph.client.radosgw.keyring 4、生成ceph-radosgw服务对应的用户和key ceph-authtool /etc/ceph/ceph.client.radosgw.keyring -n client.radosgw.gateway --gen-key 5、为用户添加访问权限 ceph-authtool -n client.radosgw.gateway --cap cap mon 'allow rwx' \ /etc/ceph/ceph.client.radosgw.keyring 6、导入key到集群 ceph -k /etc/ceph/ceph.client.admin.keyring auth add client.radosgw.gateway -i \ /etc/ceph/ceph.client.radosgw.keyring 7、创建rgw专用的存储池 ceph osd pool create .rgw 128 128 ceph osd pool create .rgw.root 128 128 ceph osd pool create .rgw.control 128 128 ceph osd pool create .rgw.gc 128 128 ceph osd pool create .rgw.buckets 128 128 ceph osd pool create .rgw.buckets.index 128 128 ceph osd pool create .rgw.buckets.extra 128 128 ceph osd pool create .log 128 128 ceph osd pool create .intent-log 128 128 ceph osd pool create .usage 128 128 ceph osd pool create .users 128 128 ceph osd pool create .users.email 128 128 ceph osd pool create .users.swift 128 128 ceph osd pool create .users.uid 128 128 8、添加ceph.conf配置文件 [client.radosgw.gateway] rgw frontends=fastcgi socket_port=9000 socket_host=0.0.0.0 host=c1 keyring=/etc/ceph/ceph.client.radosgw.keyring log file=/var/log/radosgw/client.radosgw.gateway.log rgw print continue=false rgw content length compat = true =================================================================================================================== 手动部署Ceph集群 一、前期准备 二、获取Ceph安装包及安装方式 三、安装Ceph-deploy 四、安装ceph 五、手动部署一个Ceph集群 1、集群部署前提 2、部署Moniotor节点 1、监控节点配置事项 2、部署配置 3、初始化 4、标记 5、修改service文件 6、启动 7、查看集群状态 3、扩展moniotor节点 4、部署mgr节点(manager) 5、添加OSD节点 6、添加MDS节点 7、挂载文件系统进行使用测试 8、模拟osd宕机 =================================================================================================================== 一、前期准备 1、基于密钥的通信 # 使用脚本进行执行 for I in `seq 1 5`;do ./ssh-01.sh root xjw,./qwe node$I;done 2、基于主机名通信 3、集群内时间同步 找一个节点启动chronyd服务,作为时间服务器,其他节点作为客户端向时间服务器进行时间同步。 4、ceph的安装需要依赖epel库中的软件,所以需要添加epel源。 ceph依赖的安装包: snappy leveldb gdisk python-argparse gperftools-libs 二、获取Ceph安装包及安装方式 1、从Ceph官方rpm包或者其镜像站点添加软件源。官方rpm包站点:http://download.ceph.com/。国内镜像站点: http://mir rors.ustc.edu.cn/ceph/ 1、添加验证密钥,避免在安装时出现安全警告 # 对于Ceph的主要版本和开发版本都使用的是 release.asc 这个密钥。下载路径通常在http://download.ceph.com/keys/ rpm --import 'https://download.ceph.com/keys/release.asc' 注:国外的安装包访问缓慢,可以将URL替换为国内的镜像站点:http://mirrors.ustc.edu.cn/ceph/keys/release.asc 2、添加ceph的yum源 # 使用安装rpm包的方式添加ceph的yum源 yum -y install http://mirrors.ustc.edu.cn/ceph/rpm-luminous/el7/noarch/ceph-release-1-1.el7.noarch.rpm 注:会在/etc/yum.repos.d生成ceph.repo文件 # 直接编辑ceph.repo文件 [ceph] name=Ceph packages for $basearch baseurl=https://download.ceph.com/rpm-{ceph-release}/{distro}/$basearch enabled=1 priority=2 gpgcheck=1 gpgkey=https://download.ceph.com/keys/release.asc [ceph-noarch] name=Ceph noarch packages baseurl=https://download.ceph.com/rpm-{ceph-release}/{distro}/noarch enabled=1 priority=2 gpgcheck=1 gpgkey=https://download.ceph.com/keys/release.asc [ceph-source] name=Ceph source packages baseurl=https://download.ceph.com/rpm-{ceph-release}/{distro}/SRPMS enabled=0 priority=2 gpgcheck=1 gpgkey=https://download.ceph.com/keys/release.asc 注:如果epel源中包含了ceph的安装包,则可能添加的ceph源无法生效,从epel源中下载,为了避免这种情况,可下载yum 优先级插件,对源的下载优先级进行管理。 # 安装插件 yum -y install yum-priorities # 修改配置文件,确保启用插件 vim /etc/yum/pluginconf.d/priorities.conf [main] enabled=1 # 修改repo文件,修改源的优先级 priority=2 2、编译安装ceph 1、下载源码包 wget http://mirrors.ustc.edu.cn/ceph/rpm-luminous/el7/SRPMS/ceph-12.2.5-0.el7.src.rpm 2、解压出源码包 rpm -ivh ceph-12.2.5-0.el7.src.rpm tar -xf ceph-12.2.5.tar.bz2 -C /root/ 3、安装必要的工具和库 ./install-deps.sh 4、编译安装 cd build make make install 三、安装Ceph-deploy yum install ceph-deploy.noarch 四、安装ceph 1、安装ceph及其依赖 snappy # 压缩/解压缩库,提供非常高的速度和合理的压缩。 leveldb # 键值存储库。 gdisk # 用于GPT磁盘的类似fdisk的分区工具。 python-argparse # 命令行解析 gperftools-libs # 性能分析工具 Perf Tools 的库文件。 yum install -y ceph snappy leveldb gdisk python-argparse gperftools-libs 五、手动部署一个Ceph集群 1、集群部署前提 1、一个集群中必须有一个Monitor节点,监控节点为整个集群提供了一些重要的参数,例如:集群中副本数量、每个OSD的放置 组数量、心跳信息时间间隔、是否启用认证功能。 2、必须有和集群副本数相同的OSD节点 2、部署Moniotor节点 1、监控节点配置事项 1、唯一标识符 Unique Identifier fsid是集群中的一个唯一标识符。 2、集群名称 Cluster Name 集群名称不能有空格,默认的集群名称是ceph。 3、监视节点名称 Monitor Name 集群中的每个监视节点都有唯一的名称。通常情况下监视节点的名称是节点的主机名。 4、监视节点映射 Monitor Map 安装监视节点需要生成监视节点映射。监视节点映射需要fsid,集群名称(或使用默认值)以及至少一个主机名和其IP地址。 5、监视节点密钥 Monitor Keyring 监视节点通过密钥相互通信,必须使用监视器密钥生成密钥环,并在引导初始监控节点时时提供该密钥环。 6、管理员密钥 Administtator Keyting 要使用ceph CLI工具,您必须有一个client.admin用户。因此,您必须生成管理用户和密钥环,并且还必须将client.admin 用户添加到监视器密钥环中。 2、部署配置 1、创建ceph配置文件 默认的配置文件是/etc/ceph/ceph.conf,也可以创建成 Cluster—Name.conf 注:当自定义一个集群名称后,在使用ceph命令行管理工具时需要使用 --cluster Cluster—Name 指明集群名称 touch /etc/ceph/ceph.conf *2、创建monitor的key用于多个monitor间通信,保存在/tmp/ceph.mon.keyring ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *' 3、生成密钥环文件及管理员client.admin用户(角色)的密钥,并给角色授予对于子系统的权限。保存在/etc/ceph/ceph.client.admin.keyring ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin \ --set-uid=0 --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow *' --cap mgr 'allow *' 4、生成bootstrap-osd密钥环,生成client.bootstrap-osd用户并将用户添加到密钥环中 ceph-authtool --create-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring --gen-key -n client.bootstrap-osd \ --cap mon 'profile bootstrap-osd' 5、将生成的密钥添加到ceph.mon.keyring ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring ceph-authtool /tmp/ceph.mon.keyring --import-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring 6、生成监视节点的映射 monmaptool --create --add node1 10.53.50.200 --fsid 605d873d-aff0-4907-af43-03c57286ea39 /tmp/monmap # 查看Monitor Map monmaptool --print /tmp/monmap *7、在监视节点创建数据目录 mkdir /var/lib/ceph/mon/ceph-node1 ~~~~~~~~~~ *8、初始化操作会生成monitor间通信认证文件/var/lib/ceph/mon/ceph-{hostname}/keyring,其来自上面生成的 ~~~~~~~~~~ /tmp/ceph.mon.keyring, 所有monitor使用同一个key ~~~~~~~~~~ ceph-mon --cluster ceph --mkfs -i node1 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring ~~~~~~~~~~ 注:成功之后,我们可以看见{mon data}目录下生成了一些初始文件 9、添加配置文件/etc/ceph/ceph-cluster.conf [global] fsid = {cluster-id} mon initial members = {hostname}[, {hostname}] mon host = {ip-address}[, {ip-address}] public network = {network}[, {network}] cluster network = {network}[, {network}] auth cluster required = cephx auth service required = cephx auth client required = cephx osd journal size = {n} osd pool default size = {n} # Write an object n times. osd pool default min size = {n} # Allow writing n copies in a degraded state. osd pool default pg num = {n} osd pool default pgp num = {n} osd crush chooseleaf type = {n} [global] fsid = 605d873d-aff0-4907-af43-03c57286ea39 mon initial members = node1 mon host = 10.53.50.200 public network = 10.53.50.0/24 cluster network = 10.53.50.0/24 auth cluster required = cephx auth service required = cephx auth client required = cephx osd journal size = 1024 osd pool default size = 3 osd pool default min size = 2 osd pool default pg num = 333 osd pool default pgp num = 333 osd crush chooseleaf type = 1 3、初始化完成后,/tmp/monmap,/tmp/ceph.mon.keyring文件可以删除,删除之后还可以使用命令获取 # 获取monmap ceph mon getmap -o monmap # 查看内容 monmaptool --print monmap # 查看mon. keyring文件(注意有个mon后点号) ceph auth get mon. 4、标记监视节点创建成功 touch /var/lib/ceph/mon/ceph-node1/done 5、修改service文件 ExecStart=/usr/bin/... --id %i --setuser ceph --setgroup ceph <--- 删掉--setuser ceph --setgroup ceph 或者修改为root 6、启动。启动ceph-mon进程,启动时候我们需要传递monitor name参数给systemctl,用以指明启动的monitor systemctl start ceph-mon@node1 7、查看集群状态 ceph -s 3、扩展moniotor节点 1、三个moniotor节点的ceph.conf配置文件一样,将配置文件复制到另外两个节点。(添加节点配置) for I in `seq 2 3`;do scp ceph.conf root@node$I:/etc/ceph/ceph.conf;done 2、创建moniotor数据目录 mkdir /var/lib/ceph/mon/ceph-node2 mkdir /var/lib/ceph/mon/ceph-node3 3、node1节点上重新生成集群映射 monmaptool --create --add node1 10.53.50.200 --add node2 10.53.50.201 --add node3 10.53.50.202 --fsid \ 4dd035a5-892f-4b25-a958-21d88ee02164 /tmp/monmap --clobber 4、为了初始化新添加的节点,需要将之前moniotor节点的文件复制到新添加的两个节点 /tmp/monmap /tmp/ceph.mon.keyring for I in `seq 2 3`;do scp /tmp/monmap root@node$I:/tmp;done for I in `seq 2 3`;do scp /tmp/ceph.mon.keyring root@node$I:/tmp/ceph.mon.keyring;done 5、重新初始化Moniotor节点 ceph-mon --cluster ceph --mkfs -i node1 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring ceph-mon --cluster ceph --mkfs -i node2 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring ceph-mon --cluster ceph --mkfs -i node3 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring 注:初始化后确保 /var/lib/ceph/mon/ceph-nodeN/ 目录下生成数据文件 6、标记监视节点创建成功 touch /var/lib/ceph/mon/ceph-node1/done 7、修改Mon服务的service文件 8、设置服务开机自启动 systemctl enable ceph 4、部署mgr节点(manager) 1、在各个节点安装创建用户 mgr.nodeN 用于 MGR 监控 官方:ceph auth get-or-create mgr.$name mon 'allow profile mgr' osd 'allow *' mds 'allow *' ceph auth get-or-create mgr.node1 mon 'allow *' osd 'allow *' mds 'allow *' ceph auth get-or-create mgr.node2 mon 'allow *' osd 'allow *' mds 'allow *' ceph auth get-or-create mgr.node3 mon 'allow *' osd 'allow *' mds 'allow *' 2、将密钥导入到mgr节点的数据目录 mkdir /var/lib/ceph/mgr/ceph-nodeN ceph auth get mgr.nodeN -o /var/lib/ceph/mgr/ceph-nodeN/keyring 3、启动mgr服务 ceph-mgr -i nodeN 4、启动服务/查看状态 systemctl restart ceph-mgr@nodeN.service systemctl status ceph-mgr@nodeN.service 5、设定开机自启动 systemctl enable ceph-mgr@nodeN.service 6、手动故障切换 ceph mgr fail nodeN 7、mgr模块使用 1、查看mgr的模块启用状态 ceph mgr module ls 2、启用或者禁用模块 ceph mgr module enable # 启用一个模块后,mgr进程将加载相对应的模块 ceph mgr module disable ceph mgr services # 如果模块对外提供服务,则此命令可以查看模块发布的地址 8、配置dashbroad 1、启用模块 ceph mgr module enable dashboard 1、手动配置 ceph config-key set mgr/dashboard/node1/server_addr 10.53.50.200 ceph config-key set mgr/dashboard/node1/server_port 8088 2、配置文件配置 vim /etc/ceph/ceph.conf [mgr] mgr modules = dashboard 5、添加OSD节点 1、快速添加部署 1、使用 BlueStore 的 ObjectStore 存储方式 1、方法一 # 直接启动并激活 ceph-volume lvm create --data /dev/sdb 2、方法二 # 准备OSD,然后激活 ceph-volume lvm prepare --data /dev/sdb # 激活OSD ceph-volume lvm activate {ID} {FSID} ceph-volume lvm activate 0 4347854f-3dcc-41ef-84b3-e124a60b4d18 2、使用 FileStore 的 ObjectStore 存储方式 1、方法一 # 直接启动并激活 ceph-volume lvm create --filestore --data {data-path} --journal {journal-path} 2、方法二 # 准备OSD,然后激活 ceph-volume lvm prepare --filestore --data {data-path} --journal {journal-path} # 激活OSD ceph-volume lvm activate --filestore {ID} {FSID} ceph-volume lvm activate --filestore 0 a7f64266-0894-4f1e-a635-d0aeaca0e993 2、手动部署 1、生成一个UUID并赋值给变量 UUID=`uuidgen` 2、为OSD生成一个cephx密钥 OSD_SECRET=`ceph-authtool --gen-print-key` 3、将密钥复制到其他节点 scp /var/lib/ceph/bootstrap-osd/ceph.keyring root@node3:/var/lib/ceph/bootstrap-osd/ 4、生成OSD ID ID=$(echo "{\"cephx_secret\": \"$OSD_SECRET\"}" | ceph osd new $UUID -i - -n \ client.bootstrap-osd -k /var/lib/ceph/bootstrap-osd/ceph.keyring) 注:报错 Error EEXIST: entity osd.1 exists but key does not match ceph auth ls # 查看密钥 ceph auth del osd.1 # 删除旧密钥 5、创建OSD默认数据目录 mkdir /var/lib/ceph/osd/ceph-$ID 6、格式化设备 mkfs.xfs /dev/sdb 7、挂载设备到指定目录 mount /dev/sdb1 /var/lib/ceph/osd/ceph-$ID 8、将密钥导入密钥环文件 ceph-authtool --create-keyring /var/lib/ceph/osd/ceph-$ID/keyring --name osd.$ID --add-key $OSD_SECRET 9、初始化OSD数据目录 ceph-osd -i $ID --mkfs --osd-uuid $UUID 10、修改权限 chown -R ceph:ceph /var/lib/ceph/osd/ceph-$ID 11、启动OSD systemctl enable ceph-osd@$ID systemctl start ceph-osd@$ID 3、生产环境部署流程 1、将物理磁盘创建为一个卷组 vgcreate cephdata-disk0N /dev/sdN 2、将卷组创建为逻辑卷 lvcreate -l 100%FREE -n disk0N cephdata-disk0N 3、创建block.db使用的逻辑卷 lvcreate -L 60GB -n db-disk0N ceph-db0N 4、准备并创建osd ceph-volume lvm prepare --bluestore --data cephdata-disk0N/disk0N --block.db ceph-db01/db-disk0N 4、激活osd ceph-volume lvm activate --all 6、添加MDS节点 1、创建mds数据目录 mkdir -p /var/lib/ceph/mds/ceph-node1 2、创建密钥 ceph-authtool --create-keyring /var/lib/ceph/mds/{cluster-name}-{id}/keyring --gen-key -n mds.{id} 3、导入keyring和设置权限 ceph auth add mds.node1 osd "allow rwx" mds "allow *" mon "allow profile mds" -i /var/lib/ceph/mds/ceph-node1/keyring 4、修改配置文件 [mds.node1] host = node1 5、启动mds守护进程 方法一:ceph-mds --cluster {cluster-name} -i {id} -m {mon-hostname}:{mon-port} [-f] 手动启动: 7、挂载文件系统进行使用测试 8、模拟osd宕机 ===================================================================================================================