前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用cephadm安装ceph octopus

使用cephadm安装ceph octopus

作者头像
没有故事的陈师傅
发布2020-12-16 10:35:17
4.4K8
发布2020-12-16 10:35:17
举报
文章被收录于专栏:运维开发故事

前提条件

Cephadm使用容器和systemd安装和管理Ceph集群,并与CLI和仪表板GUI紧密集成。

  • cephadm仅支持octopus v15.2.0和更高版本。
  • cephadm与新的业务流程API完全集成,并完全支持新的CLI和仪表板功能来管理集群部署。
  • cephadm需要容器支持(podman或docker)和Python 3。
  • 时间同步

基础配置

这里我使用的centos8来安装的ceph,已经内置了python3,不再单独安装,centos7需要单独安装python3

配置hosts解析
代码语言:javascript
复制
cat >> /etc/hosts <<EOF
192.168.2.16 node1
192.168.2.19 node2
192.168.2.18 node3
EOF
关闭防火墙和selinux
代码语言:javascript
复制
systemctl stop firewalld && systemctl disable firewalld
setenforce 0 && sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
分别在三个节点设置主机名
代码语言:javascript
复制
hostnamectl set-hostname node1
hostnamectl set-hostname node2
hostnamectl set-hostname node3
配置主机时间同步
代码语言:javascript
复制
systemctl restart chronyd.service && systemctl enable chronyd.service
安装docker-ce
代码语言:javascript
复制
dnf config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
dnf install -y https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.13-3.1.el7.x86_64.rpm
dnf -y install docker-ce --nobest
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://s7owcmp8.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl enable docker

安装cephadm

cephadm命令可以

  1. 引导新集群
  2. 使用有效的Ceph CLI启动容器化的Shell
  3. 帮助调试容器化的Ceph守护进程。

以下操作只在一台节点执行就可以

使用curl获取独立脚本的最新版本。网络不好的话可直接去GitHub复制
代码语言:javascript
复制
curl --silent --remote-name --location https://github.com/ceph/ceph/raw/octopus/src/cephadm/cephadm
chmod +x cephadm
安装cephadmn
代码语言:javascript
复制
./cephadm add-repo --release octopus
./cephadm install

引导新群集

要引导群集,需要先创建一个目录:/etc/ceph

代码语言:javascript
复制
mkdir -p /etc/ceph

然后运行该命令:ceph bootstrap

代码语言:javascript
复制
cephadm bootstrap --mon-ip 192.168.2.16

此命令将会进行以下操作:

  • 为本地主机上的新群集创建monitor和manager守护程序。
  • 为 Ceph 群集生成新的 SSH 密钥,并将其添加到root用户的文件/root/.ssh/authorized_keys
  • 将与新群集通信所需的最小配置文件保存到 /etc/ceph/ceph.conf
  • client.admin管理(特权!)密钥的副本写入/etc/ceph/ceph.client.admin.keyring
  • 将公钥的副本写入/etc/ceph/ceph.pub

安装完成后会有一个dashboard界面

执行完成后我们可以查看ceph.conf已经写入了

启用 CEPH CLI

cephadm shell命令在安装了所有Ceph包的容器中启动bash shell。默认情况下,如果在主机上的/etc/ceph中找到配置和keyring文件,则会将它们传递到容器环境中,以便shell完全正常工作。

代码语言:javascript
复制
cephadm shell

可以在节点上安装包含所有 ceph 命令的包,包括 、(用于安装 CephFS 文件系统)等

代码语言:javascript
复制
cephadm add-repo --release octopus
cephadm install ceph-common

安装过程很慢,可以手动将源改为阿里的

添加主机到集群

将公钥添加到新主机
代码语言:javascript
复制
ssh-copy-id -f -i /etc/ceph/ceph.pub node2
ssh-copy-id -f -i /etc/ceph/ceph.pub node3
告诉Ceph,新节点是集群的一部分
代码语言:javascript
复制
[root@localhost ~]# ceph orch host add node2
Added host 'node2'
[root@localhost ~]# ceph orch host add node3
Added host 'node3'

添加主机会自动扩展mon和mgr节点

部署其他监视器(可选)

典型的 Ceph 群集具有三个或五个分布在不同主机的mon守护程序。如果群集中有五个或更多节点,建议部署五个mon。

当Ceph知道mon应该使用什么IP子网时,它可以随着群集的增长(或收缩)自动部署和缩放mon。默认情况下,Ceph假定其他mon使用与第一个mon的IP相同的子网。

在单个子网的情况下,如果向集群中添加主机,默认最多只会添加5个mon 如果有特定的IP子网给mon使用,可以使用CIDR格式配置该子网:

代码语言:javascript
复制
ceph config set mon public_network 10.1.2.0/24

cephadm只会在配置了特定子网IP的主机上部署mon守护程序 如果要调整特定子网mon的默认数量,可以执行以下命令:

代码语言:javascript
复制
ceph orch apply mon *<number-of-monitors>*

如果要在一组特定的主机上部署mon,可以执行以下命令:

代码语言:javascript
复制
ceph orch apply mon *<host1,host2,host3,...>*

如果要查看当前主机和标签,可以执行以下命令:

代码语言:javascript
复制
 
[root@node1 ~]# ceph orch host ls
HOST   ADDR   LABELS  STATUS  
node1  node1                  
node2  node2                  
node3  node3  

如果要禁用自动mon部署,执行以下命令:

代码语言:javascript
复制
ceph orch apply mon --unmanaged

要在不同网络中添加mon执行以下命令:

代码语言:javascript
复制
ceph orch apply mon --unmanaged
ceph orch daemon add mon newhost1:10.1.2.123
ceph orch daemon add mon newhost2:10.1.2.0/24

如果要添加mon到多个主机,也可以用以下命令:

代码语言:javascript
复制
ceph orch apply mon "host1,host2,host3"

部署OSD

可以用以下命令显示集群中的存储设备清单

代码语言:javascript
复制
ceph orch device ls

如果满足以下所有_条件_,则存储设备被视为可用:

  • 设备必须没有分区。
  • 设备不得具有任何 LVM 状态。
  • 不得安装设备。
  • 设备不能包含文件系统。
  • 设备不得包含 Ceph BlueStore OSD。
  • 设备必须大于 5 GB。

Ceph 拒绝在不可用的设备上预配 OSD。为保证能成功添加osd,我刚才在每个node上新加了一块磁盘 创建新 OSD 的方法有几种方法:

在未使用的设备上自动创建osd
代码语言:javascript
复制
[root@node1 ~]# ceph orch apply osd --all-available-devices
Scheduled osd.all-available-devices update...

可以看到已经在三块磁盘上创建了osd

从特定主机上的特定设备创建 OSD
代码语言:javascript
复制
ceph orch daemon add osd host1:/dev/sdb

部署MDS

使用 CephFS 文件系统需要一个或多个 MDS 守护程序。如果使用新的ceph fs卷接口来创建新文件系统,则会自动创建这些文件 部署元数据服务器:

代码语言:javascript
复制
ceph orch apply mds *<fs-name>* --placement="*<num-daemons>* [*<host1>* ...]"

CephFS 需要两个 Pools,cephfs-data 和 cephfs-metadata,分别存储文件数据和文件元数据

代码语言:javascript
复制
[root@node1 ~]# ceph osd pool create cephfs_data 64 64
[root@node1 ~]# ceph osd pool create cephfs_metadata 64 64
创建一个 CephFS, 名字为 cephfs
[root@node1 ~]# ceph fs new cephfs cephfs_metadata cephfs_data
[root@node1 ~]# ceph orch apply mds cephfs --placement="3 node1 node2 node3"
Scheduled mds.cephfs update...

验证至少有一个MDS已经进入active状态,默认情况下,ceph只支持一个活跃的MDS,其他的作为备用MDS

代码语言:javascript
复制
ceph fs status cephfs

部署RGW

Cephadm将radosgw部署为管理特定领域和区域的守护程序的集合,RGW是Ceph对象存储网关服务RADOS Gateway的简称,是一套基于LIBRADOS接口封装而实现的FastCGI服务,对外提供RESTful风格的对象存储数据访问和管理接口。

使用cephadm时,radosgw守护程序是通过mon配置数据库而不是通过ceph.conf或命令行配置的。如果该配置尚未就绪,则radosgw守护进程将使用默认设置启动(默认绑定到端口80)。要在node1、node2和node3上部署3个服务于myorg领域和us-east-1区域的rgw守护进程,在部署rgw守护进程之前,如果它们不存在,则自动创建提供的域和区域:

代码语言:javascript
复制
ceph orch apply rgw myorg cn-east-1 --placement="3 node1 node2 node3"

或者可以使用radosgw-admin命令手动创建区域、区域组和区域:

代码语言:javascript
复制
radosgw-admin realm create --rgw-realm=myorg --default
radosgw-admin zonegroup create --rgw-zonegroup=default --master --default
radosgw-admin zone create --rgw-zonegroup=default --rgw-zone=cn-east-1 --master --default
radosgw-admin period update --rgw-realm=myorg --c

可以看到RGW已经创建完成

并且cephadm会自动安装Prometheus和grafana等组件,grafana默认用户密码为admin/admin,并且已经导入了Prometheus监控ceph的仪表盘

下篇文章将会介绍使用zabbix监控ceph分布式存储

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维开发故事 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基础配置
    • 配置hosts解析
      • 关闭防火墙和selinux
        • 分别在三个节点设置主机名
          • 配置主机时间同步
            • 安装docker-ce
            • 安装cephadm
              • 使用curl获取独立脚本的最新版本。网络不好的话可直接去GitHub复制
                • 安装cephadmn
                  • 引导新群集
                    • 启用 CEPH CLI
                      • 添加主机到集群
                        • 将公钥添加到新主机
                        • 告诉Ceph,新节点是集群的一部分
                      • 部署其他监视器(可选)
                        • 部署OSD
                          • 在未使用的设备上自动创建osd
                          • 从特定主机上的特定设备创建 OSD
                        • 部署MDS
                          • 部署RGW
                          相关产品与服务
                          容器服务
                          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档