Ceph分布式存储(luminous)部署文档

环境

ubuntu18.04
ceph version 12.2.7 luminous (stable)

三节点
配置如下
node1:1U,1G mem,20G disk,两块空硬盘(sdb,sdc)
node2:1U,1G mem,20G disk,两块空硬盘(sdb,sdc)
node3:1U,1G mem,20G disk,两块空硬盘(sdb,sdc)

role hostname ip
dep(部署节点) node1 192.168.113.5
mon(监控节点) node1,node2,node3 192.168.113.5,192.168.113.3,192.168.113.4
ods(存储节点) node1,node2,node3 192.168.113.5,192.168.113.3,192.168.113.4

基本环境搭建(所有节点)

关闭系统 NetworkManager 服务

systemctl stop NetworkManager 临时关闭
systemctl disable NetworkManager 永久关闭网络管理命令

关闭selinux、防火墙

systemctl stop firewalld.service
systemctl disable firewalld.service
firewall-cmd --state

时间同步

注意
ntp同步时间失败,可能是上层路由封锁udp123端口, 我们只能通过tcp来同步时间,具体操作如下
查看时间服务器的时间:

rdate time-b.nist.gov

设置时间和时间服务器同步:
rdate -s time-b.nist.gov

下面有其他的ntp服务器地址

time.nist.gov
time-b.nist.gov
216.118.116.105
rdate.darkorb.net
202.106.196.19
time-b.timefreq.bldrdoc.gov
ntp1.aliyun.com

设置hostname

hostnamectl set-hostname node1
hostnamectl set-hostname node2
hostnamectl set-hostname node3

修改/etc/hosts文件

192.168.113.3 node1
192.168.113.4 node2
192.168.113.5 node3

设置ssh免密登录

ssh-keygen 一路回车
ssh-copy-id node{1,2,3}

验证一下
ssh node2

更新重启

apt update -y && reboot

ceph部署

验证网络

验证所有节点能够ping通外网

Ceph分布式存储(luminous)部署文档-LMLPHP

安装ceph-deploy

apt update -y

apt install ceph-deploy -y

创建集群

如果在某些地方碰到麻烦,想从头再来,可以用下列命令清除配置:

ceph-deploy purgedata node1 node2 node3
ceph-deploy forgetkeys

用下列命令可以连 Ceph 安装包一起清除:

ceph-deploy purge node1 node2 node3

如果执行了 purge ,你必须重新安装 Ceph 。

在管理节点上,进入刚创建的放置配置文件的目录,用 ceph-deploy 执行如下步骤。

  1. 创建集群。

    ceph-deploy new node1 node2 node3
    

    在当前目录下用 lscat 检查 ceph-deploy 的输出,应该有一个 Ceph 配置文件、一个 monitor 密钥环和一个日志文件。详情见 ceph-deploy new -h

  2. 把 Ceph 配置文件里的默认副本数从 3 改成 1 ,这样只有两个 OSD 也可以达到 active + clean 状态。把下面这行加入 [global] 段:

    osd pool default size = 1
    
  3. 如果你有多个网卡,可以把 public network 写入 Ceph 配置文件的 [global] 段下。详情见网络配置参考

    public network = {ip-address}/{netmask}
    

    Ceph分布式存储(luminous)部署文档-LMLPHP

  4. 安装 Ceph 。

    ceph-deploy install node1 node2 node3
    

    ceph-deploy 将在各节点安装 Ceph 。 **注:**如果你执行过 ceph-deploy purge ,你必须重新执行这一步来安装 Ceph 。

  5. 配置初始 monitor(s)、并收集所有密钥:

    ceph-deploy mon create-initial

    完成上述操作后,当前目录里应该会出现这些密钥环:

    • {cluster-name}.client.admin.keyring
    • {cluster-name}.bootstrap-osd.keyring
    • {cluster-name}.bootstrap-mds.keyring
    • {cluster-name}.bootstrap-rgw.keyring

    添加osd

    增加/删除 OSD

    新增和拆除 Ceph 的 OSD 进程相比其它两种要多几步。 OSD 守护进程把数据写入磁盘和日志,所以你得相应地提供一 OSD 数据盘和日志分区路径(这是最常见的配置,但你可以按需调整)。

    从 Ceph v0.60 起, Ceph 支持 dm-crypt 加密的硬盘,在准备 OSD 时你可以用 --dm-crypt 参数告诉 ceph-deploy 你想用加密功能。也可以用 --dmcrypt-key-dir 参数指定 dm-crypt 加密密钥的位置。

    在投建一个大型集群前,你应该测试各种驱动器配置来衡量其吞吐量。详情见数据存储

    列举磁盘

    执行下列命令列举一节点上的磁盘:

    ceph-deploy disk list {node-name [node-name]...}
    

    擦净磁盘

    用下列命令擦净(删除分区表)磁盘,以用于 Ceph :

    ceph-deploy disk zap {osd-server-name}:{disk-name}
    ceph-deploy disk zap osdserver1:sdb
    

    这会删除所有数据。

    准备 OSD

    创建集群、安装 Ceph 软件包、收集密钥完成后你就可以准备 OSD 并把它们部署到 OSD 节点了。如果你想确认某磁盘或擦净它,参见列举磁盘擦净磁盘

    ceph-deploy osd prepare {node-name}:{data-disk}[:{journal-disk}]
    ceph-deploy osd prepare osdserver1:sdb:/dev/ssd
    ceph-deploy osd prepare osdserver1:sdc:/dev/ssd
    

    prepare 命令只准备 OSD 。在大多数操作系统中,硬盘分区创建后,不用 activate 命令也会自动执行 activate 阶段(通过 Ceph 的 udev 规则)。详情见激活 OSD

    前例假定一个硬盘只会用于一个 OSD 守护进程,以及一个到 SSD 日志分区的路径。我们建议把日志存储于另外的驱动器以最优化性能;你也可以指定一单独的驱动器用于日志(也许比较昂贵)、或者把日志放到 OSD 数据盘(不建议,因为它有损性能)。前例中我们把日志存储于分好区的固态硬盘。

    Note

    在一个节点运行多个 OSD 守护进程、且多个 OSD 守护进程共享一个日志分区时,你应该考虑整个节点的最小 CRUSH 故障域,因为如果这个 SSD 坏了,所有用其做日志的 OSD 守护进程也会失效。

    激活 OSD

    准备好 OSD 后,可以用下列命令激活它。

    ceph-deploy osd activate {node-name}:{data-disk-partition}[:{journal-disk-partition}]
    ceph-deploy osd activate osdserver1:/dev/sdb1:/dev/ssd1
    ceph-deploy osd activate osdserver1:/dev/sdc1:/dev/ssd2
    

    activate 命令会让 OSD 进入 upin 状态,此命令所用路径和 prepare 相同。

    创建 OSD

    你可以用 create 命令一次完成准备 OSD 、部署到 OSD 节点、并激活它。 create 命令是依次执行 prepareactivate 命令的捷径。

    ceph-deploy osd create {node-name}:{disk}[:{path/to/journal}]
    ceph-deploy osd create osdserver1:sdb:/dev/ssd1
    
  6. ceph-deploy 把配置文件和 admin 密钥拷贝到管理节点和 Ceph 节点,这样你每次执行 Ceph 命令行时就无需指定 monitor 地址和 ceph.client.admin.keyring 了。

    ceph-deploy admin {admin-node} {ceph-node}
    

    例如:

    ceph-deploy admin admin-node node1 node2 node3
    

    ceph-deploy 和本地管理主机( admin-node )通信时,必须通过主机名可达。必要时可修改 /etc/hosts ,加入管理主机的名字。

  7. 确保你对 ceph.client.admin.keyring 有正确的操作权限。

    sudo chmod +r /etc/ceph/ceph.client.admin.keyring
    
  8. 检查集群的健康状况。

    ceph health
    
  • 添加mgr
ceph-deploy mgr create node1
ceph-deploy mgr create node2
ceph-deploy mgr create node3

启用dashboard (在mon节点)

ceph mgr module enable dashboard

http://ip:7000 访问dashboard

设置dashboard的ip和端口

ceph config-key put mgr/dashboard/server_addr 192.168.246.132
ceph config-key put mgr/dashboard/server_port 7000
systemctl restart ceph-mgr@node1

创建POOL

ceph osd pool create volumes
ceph osd pool create images
ceph osd pool create vms

初始化pool

rbd pool init volumes
rbd pool init images
rbd pool init vms

检查ceph的相关命令

ceph health
ceph -s
ceph osd tree
ceph df
ceph mon stat
ceph osd stat
ceph pg stat
ceph osd lspools
ceph auth list
04-08 12:16