Ceph是一种开源分布式文件系统,具有高可靠、自动重均衡、灵活扩展等特点,支持对象存储、块存储以及文件存储。本文为您介绍如何搭建Ceph。
Ceph充分利用节点的计算能力,通过Crush算法计算文件位置,使数据均衡分布,避免单点故障问题。
RADOS(Reliable Autonomic Distributed Object Store)是 Ceph 存储系统的核心,也称 Ceph 存储集群,具有高可用、自我修复、自我管理等特性,包括 Ceph Monitor 和 Ceph OSD 两个核心组件。
更多内容,请参考 Ceph Documentation。
在进行本实践前,您需要完成以下准备工作:
注册火山引擎账号,并完成 实名认证。您可以登录 火山引擎控制台,在顶部导航栏右侧,单击“账号管理 > 实名认证”,前往 实名认证 页面查看是否已经完成实名认证。
火山引擎账户余额大于 100 元。您可以登录 火山引擎控制台,并前往账户总览页面查看账户余额。
本最佳实践通过火山引擎云服务器、私有网络、公网NAT网关等产品进行 Ceph 部署,本文中相关产品规划如下:
产品或服务 |
本文示例 |
备注 |
---|---|---|
私有网络 | 名称:ceph-vpc IPv4:172.16.0.0/12 |
地域:华北2(北京) 可用区:可用区A 子网名称:ceph-cluster-subnet IPv4:172.16.3.0/24 |
弹性计算ECS | 名称:ceph-node1 规格:ecs.g1.xlarge(vCPU: 4 /内存:16GiB) 系统盘:100GiB 数据盘:200GiB * 3 |
操作系统:CentOS 7.6 地域及可用区:华北2(北京)可用区A 私网地址:172.16.3.76 |
名称:ceph-node2 规格:ecs.g1.xlarge(vCPU: 4 /内存:16GiB) 系统盘:100GiB 数据盘:200GiB * 3 |
操作系统:CentOS 7.6 地域及可用区:华北2(北京)可用区A 私网地址:172.16.3.237 |
|
名称:ceph-node3 规格:ecs.g1.xlarge(vCPU: 4 /内存:16GiB) 系统盘:100GiB 数据盘:200GiB * 3 |
操作系统:CentOS 7.6 地域及可用区:华北2(北京)可用区A 私网地址:172.16.3.223 |
|
名称:ceph-client 规格:ecs.g1.xlarge(vCPU: 4 /内存:16GiB) 系统盘:40GiB |
操作系统:CentOS 7.6 地域及可用区:华北2(北京)可用区A 私网地址:172.16.3.211 |
|
公网NAT网关 | 名称:ceph-nat 规格:小型 |
地域及可用区:华北2(北京)可用区A 公网地址:180.184.xx.xx |
在部署 Ceph 前,您需要先完成火山引擎上的一系列环境部署,包括私有网络 VPC 的创建,云服务器的创建以及公网NAT网关的创建。这些是您开启 Ceph 安装的必要条件。
登录 火山引擎控制台。
在左侧导航树中,单击“产品与服务 > 私有网络”,进入 私有网络 VPC 管理控制台。
在顶部导航栏选择“华北2(北京)”地域。
在私有网络列表页面,单击“创建私有网络”。
在创建私有网络页面,进行私有网络和子网相关参数配置,具体配置描述见下表。
类别 |
配置项 |
说明 |
---|---|---|
私有网络 | 地域 | 华北2(北京) |
名称 | ceph-vpc | |
IPv4 网段 | 172.16.0.0/12 | |
子网 | 名称 | ceph-cluster-subnet |
可用区 | 可用区A | |
IPv4 网段 | 172.16.3.0/24 |
参数配置完成后,单击“确定”。
登录 火山引擎控制台。
在左侧导航树中,单击“产品与服务 > 云服务器”,进入 云服务器控制台 。
在左侧导航栏选择“实例”,地域选择为 华北2(北京),并单击“创建实例”。
在创建实例页面中,配置相关参数,具体如下表。
配置项 | 说明 |
---|---|
计费方式 | 按量计费 |
地域及可用区 | 华北2(北京) 可用区A |
实例 | 规格:通用型 实例规格ecs.g1.xlarge(vCPU: 4 /内存:16GiB) |
镜像 | 公共镜像 CentOS 7.6 此处对操作系统类型无强制要求,可选用任何的 Linux 操作系统。本文以 CentOS 7.6为例 |
存储 | 系统盘 40GiB * 1 数据盘 200GiB * 3 |
完成基础配置后,单击“下一步”,进行网络与安全配置。
配置项 | 说明 |
---|---|
网络 | 私有网络:选择已创建的 VPC(ceph-vpc) 子网:选择已创建的子网(ceph-cluster-subnet) |
安全组 | 选择默认安全组 |
弹性公网IP | 取消勾选“分配弹性公网IP”。 |
单击“下一步:确认订单”。
在确认订单页面中,确认各项参数信息。确认无误后,请根据控制台指引查阅并确认相关协议,并单击“立即购买”按钮,创建实例。
本文中部署 Ceph 需创建 4 台 ECS 实例,请参考 实践规划 进行创建。
登录 火山引擎控制台。
在左侧导航树中,单击“产品与服务 > 公网 IP”,进入 私有网络管理 > 公网IP控制台。
在公网 IP 列表页,单击“申请公网 IP”。
按下图配置公网 IP 相关参数,单击“确认订单”,创建公网 IP。
配置项 | 说明 |
---|---|
名称 | ceph-nat-eip |
线路类型 | 选择“BGP(多线)”。 |
计费类型 | 选择“按带宽上限计费”。 |
登录 火山引擎控制台。
在左侧导航树中,单击“产品与服务 > 公网NAT网关”,进入 私有网络 > 公网NAT网关控制台。
在公网NAT网关列表页,单击“创建公网NAT网关”。按下图配置相关参数,单击“确认订单”。
确认配置详情后,请根据控制台指引查阅并确认相关协议,并单击“立即购买”按钮,完成公网NAT网关创建。
配置项 | 说明 |
---|---|
计费类型 | 按量计费 |
地域 | 华北2(北京) |
规格 | 小型 |
私有网络 | ceph-vpc |
在公网NAT网关控制台,单击已创建的 ceph-nat,进入公网NAT网关详情页。单击“公网 IP > 绑定公网 IP”,添加公网 IP ceph-eip。
在公网NAT网关详情页,单击“SNAT规则 > 创建SNAT 规则”,添加 SNAT 规则。
为了更加快速部署 Ceph 集群,本实践中大部分操作使用 Ansible 批量操作,以减少各个节点来回切换的时间。
说明
下列操作只有 修改主机名 步骤需要登录到各个节点进行修改,其它均在部署节点 ceph-node1 执行即可。
主机 | IP | 功能 |
---|---|---|
ceph-node1 | 172.16.3.76 | mon、osd、mgr、deploy |
ceph-node2 | 172.16.3.237 | mon、osd、mgr |
ceph-node3 | 172.16.3.223 | mon、osd、mgr |
ceph-client | 172.16.3.211 | - |
使用 ECS Terminal 或远程连接工具,分别 登录到四台云服务器 命令行界面,依次修改主机名。
hostnamectl set-hostname ceph-node1 hostnamectl set-hostname ceph-node2 hostnamectl set-hostname ceph-node3 hostnamectl set-hostname ceph-client
配置域名解析文件。
执行vim /etc/hosts
命令,打开 /etc/hosts 文件。
按i
,进入编辑模式。
在/etc/hosts文件末尾添加如下内容,请将私网IP地址修改为您自己的私网IP。
172.16.3.76 ceph-node1 172.16.3.237 ceph-node2 172.16.3.223 ceph-node3 172.16.3.211 ceph-client
按Esc
退出编辑模式,然后输入:wq
并回车。
配置免密登录。
ssh 密钥默认保留在 ~/.ssh
目录中,您可以根据需求在配置密钥时,指定 ssh 密钥保存位置。如不指定,在设置密钥保存位置时回车即可。
ssh-keygen -t rsa -P '' ssh-copy-id ceph-node1 ssh-copy-id ceph-node2 ssh-copy-id ceph-node3 ssh-copy-id ceph-client
安装 Ansible。
执行以下命令,安装 Ansible。
yum install epel-release -y yum install ansible -y
执行vim /etc/ansible/hosts
命令,打开/etc/ansible/hosts文件。
按i
,进入编辑模式。
在/etc/ansible/hosts文件末尾,添加如下内容。
[ceph] ceph-node1 ansible_ssh_user=root ceph-node2 ansible_ssh_user=root ceph-node3 ansible_ssh_user=root
按Esc
退出编辑模式,然后输入:wq
并回车。
执行以下命令,查看节点是否都能无密登录。ansible ceph -m ping
出现如下回显信息,即为设置成功。
执行以下命令,拷贝 hosts 到其他机器,将管理机文件复制到远程主机中。ansible ceph -m copy -a 'src=/etc/hosts dest=/etc/'
ceph-node1,2,3出现如下回显信息,即为配置成功。
配置 ceph 源。
执行vim /etc/yum.repos.d/ceph.repo
命令,打开 /etc/yum.repos.d/ceph.repo 文件。
按i
,进入编辑模式。
在/etc/yum.repos.d/ceph.repo文件添加如下内容。
[ceph] name = ceph gpgcheck = 0 baseurl = https://mirrors.volces.com/ceph/rpm-luminous/el7/x86_64/ [ceph-deploy] name = ceph-deploy gpgcheck = 0 baseurl = https://mirrors.volces.com/ceph/rpm-luminous/el7/noarch/
按Esc
退出编辑模式,然后输入:wq
并回车。
执行以下命令,将配置修改拷贝到其它节点。ansible ceph -m copy -a 'src=/etc/yum.repos.d/ceph.repo dest=/etc/yum.repos.d/'
ceph-node1,2,3出现如下回显信息,即为配置成功。
配置 /etc/yum.conf 文件,限制安装 ceph 的版本。
执行vim /etc/yum.conf
命令,打开 /etc/yum.conf 文件。
按i
,进入编辑模式。
在/etc/yum.conf文件末尾,添加如下内容。 exclude=*12.2.13*
按Esc
退出编辑模式,然后输入:wq
并回车。
执行以下命令,将修改好的 yum 配置复制到其它节点中。ansible ceph -m copy -a 'src=/etc/yum.conf dest=/etc/yum.conf'
执行以下命令,安装 ceph-deploy。
yum install ceph-deploy -y ceph-deploy --version
可查询到版本信息,即为安装成功。
使用 ceph-deploy 安装 ceph。
进行此操作前,请确保已安装 epel 源,否则会报错。
执行以下命令,安装 ceph。
ansible ceph -m yum -a 'name=epel-release state=latest' ceph-deploy install --no-adjust-repos ceph-node1 ceph-node2 ceph-node3
返回如下回显信息即为安装成功。
执行以下命令,查看 ceph 版本。ansible ceph -m shell -a 'ceph -v'
返回如下回显信息:
部署 RADOS存储集群。
执行以下命令,初始化集群。
mkdir ceph-cluster cd ceph-cluster/ ceph-deploy new ceph-node1 ceph-node2 ceph-node3 ls
返回如下回显信息:
执行cat ceph.conf
命令,查看配置如下图:
执行以下命令,部署 mon 节点。
ceph-deploy mon create-initial ls
返回如下回显信息:
执行以下命令,拷贝 admin 配置到其他节点。
ceph-deploy admin ceph-node1 ceph-node2 ceph-node3 ceph -s
返回如下回显信息:
部署 ceph-mgr。
Ceph-mgr 作为 Ceph 12.2 主推的功能之一,是负责 Ceph 集群管理的组件,目标是实现 Ceph 集群的管理,为外界提供统一的入口。
执行以下指令进行部署。
ceph-deploy mgr create ceph-node1 ceph-node2 ceph-node3 ceph -s
返回如下回显信息:
启动 Ceph Dashboard。
Ceph 提供了原生的Dashboard 功能,通过 Dashboard 可以获取 Ceph 集群的各种基本状态信息。
添加 OSD。
执行以下命令,为各节点创建 OSD。
ceph-deploy disk zap ceph-node1 /dev/vdb ceph-deploy disk zap ceph-node1 /dev/vdc ceph-deploy osd create ceph-node1 --data /dev/vdb ceph-deploy osd create ceph-node2 --data /dev/vdb ceph-deploy osd create ceph-node3 --data /dev/vdb ceph-deploy osd create ceph-node1 --data /dev/vdc ceph-deploy osd create ceph-node2 --data /dev/vdc ceph-deploy osd create ceph-node3 --data /dev/vdc
执行ceph -s
命令,查询集群状态。
RBD(RADOS Block Device)块存储,是最稳定且最常用的存储类型。RBD 块设备类似磁盘可以被挂载。 RBD 块设备具有快照、多副本、克隆和一致性等特性,数据以条带化的方式存储在Ceph 集群的多个 OSD 中。
执行以下命令,创建 ceph pool。
rados mkpool <poolname> rados lspools
返回如下回显信息,即为创建成功。
执行以下命令,在ceph pool 中创建 image1。
rbd create <poolname>/image1 --size 20480 --image-format 2 rbd info <poolname>/image1
返回如下回显信息,即为创建成功。
执行rbd list <poolname>
命令,查看 ceph pool 中 image 信息。
返回如下回显信息:
在 ceph-node1 执行以下命令,安装 ceph-client。
ceph-deploy install ceph-client ceph-deploy admin ceph-client
在 ceph-client 环境执行以下命令,挂载 RBD 到本地。
rbd create <poolname>/test2 --size 20G --image-format 2 rbd map testdevice --pool <poolname> --image test2 rbd feature disable <poolname>/test2 object-map fast-diff deep-flatten rbd map testdevice --pool <poolname> --image test2 mkfs.ext4 -m0 /dev/rbd0 mkdir /mnt/ceph-block-devicesudo mount -t ext4 /dev/rbd0 /mnt/ceph-block-devicesudo df -h
返回如下回显信息,即为挂载成功。
执行以下命令,进行集群卸载。
# 卸载ceph软件包 ceph-deploy purge {ceph-node} [{ceph-node} ...] # 删除各种配置文件和生成的数据文件 ceph-deploy purgedata {ceph-node} [{ceph-node} ...] # 将卸载节点的认证密钥从本地目录移除 ceph-deploy forgetkeys
云服务器
云服务器ECS是一种简单高效、处理能力可弹性伸缩的计算服务。ECS帮助您构建更稳定、安全的应用,提升运维效率,降低IT成本,使您更专注于核心业务创新。
私有网络
私有网络VPC是用户基于火山引擎创建的自定义私有网络,不同的私有网络之间二层逻辑隔离,用户可以在自己创建的私有有网络内创建和管理云产品实例,比如 ECS、负载均衡、RDS 等。
公网NAT网关
公网NAT网关是一款企业级公网网关,为私有网络内的云服务器提供网络地址转换服务,支持SNAT规则和DNAT规则,实现多台云服务器共享公网IP访问公网或向公网提供服务。