cephadm部署ceph 16.2.11

各种教程·supo的文章 · 06-25 · 101 人浏览

16.2.11 的开源版本部署:

环境需求:
三个节点,每个节点20G的硬盘一块作为系统盘,10G的硬盘三块作为OSD的硬盘;每个节点的配置2C4G,操作系统: RHEL8.4\CentOS8.4\RockyLinux8.4 及8.4以上的版本

1. 配置主机名
  hostnamectl  set-hostname  node1.example.com (在node1上操作,以下在指定主机操作)
  hostnamectl  set-hostname  node2.example.com
  hostnamectl  set-hostname  node3.example.com
2.关闭防火墙和SELINUX
  systemctl  disable  --now  firewalld
  setenforce 0  将SELINUX设置为警告模式
  sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config  将其改成disable 禁止开机启用SELINUX
  reboot (重启) 非常重要,这一步不重启cephadm依然会安装成功集群,但是下一次重启,ceph集群就起不来了
3.配置hosts列表也就是主机名解析成IP(IP和主机名的绑定)
  vim /etc/hosts
  172.17.0.81  node1.example.com node1
  172.17.0.82  node2.example.com node2
  172.17.0.83  node3.example.com node3  
  scp /etc/hosts  root@node2:/etc/hosts
  scp /etc/hosts  root@node3:/etc/hosts
4.配置时间同步
  chrony或者是ntp
  vim /etc/chrony.conf
  server ntp.aliyun.com iburst
  systemctl restart chronyd
  systemctl enable chronyd
5. 需要检查节点上是否python3的环境以及容器运行时
  所有节点都需要安装python3
  python3 --version   是不是python3以上
  podman  --version  / docker --version  检查有没有podman或者是docker,如果没有优先安装podman的环境

引导节点(安装部署节点):

可以在集群内随便找一台机器作为引导节点,此处使用node1节点作为引导

使用cephadm

1. 下载指定的cephadm的版本的文件
在github上获取指定版本的cephadm的脚本
https://github.com/ceph/ceph
下载cephadm 16.2.11的版本
https://github.com/ceph/ceph/blob/v16.2.11/src/cephadm/cephadm
国内下载地址:http://lab4.cn/cephadm
给该脚本执行权限

chmod +x cephadm

使用该脚本在本机上添加ceph的软件源

./cephadm add-repo --release 16.2.11 (执行完成后,系统上会多出一个epel和ceph的yum源)

将cephadm持久化安装到本机上

./cephadm install 这一步可选,如果该脚本文件一直保留,则该软件包可以不安装

安装ceph的客户端工具到本机

cephadm install ceph-common

2. 修改cephadm的容器镜像地址

默认情况下cephadm使用的容器镜像,都是从docker或者是红帽的quay仓库拉取的,如果不修改则会出现镜像拉取超时,或者是镜像拉取直接失败
which cephadm 查询cephadm这条命令的位置
vim /usr/sbin/cephadm
DEFAULT_IMAGE = 'uhub.service.ucloud.cn/cl260/ceph:v16'

DEFAULT_IMAGE_IS_MASTER = False

DEFAULT_IMAGE_RELEASE = 'pacific'

DEFAULT_PROMETHEUS_IMAGE = 'uhub.service.ucloud.cn/cl260/prometheus:v2.33.4' DEFAULT_NODE_EXPORTER_IMAGE = 'uhub.service.ucloud.cn/cl260/node-exporter:v1.3.1' DEFAULT_ALERT_MANAGER_IMAGE = 'uhub.service.ucloud.cn/cl260/alertmanager:v0.23.0'

DEFAULT_GRAFANA_IMAGE = 'uhub.service.ucloud.cn/cl260/ceph-grafana:8.3.5'

DEFAULT_HAPROXY_IMAGE = 'uhub.service.ucloud.cn/cl260/haproxy:2.3'

DEFAULT_KEEPALIVED_IMAGE = 'uhub.service.ucloud.cn/cl260/keepalived'

DEFAULT_SNMP_GATEWAY_IMAGE = 'uhub.service.ucloud.cn/cl260/snmp-notifier:v1.2.1'

DEFAULT_REGISTRY = 'docker.io' # normalize unqualified digests to this


将上面标红的镜像地址改为 uhub.service.ucloud.cn/cl260 如果该地址失效请自行配置镜像 加速地址

3. 在引导节点上使用cephadm部署单节点的mon+mgr的ceph集群

cephadm bootstrap --mon-ip 172.17.0.81 --initial-dashboard-user admin --initial-dashboard-password redhat --allow-fqdn-hostname

部署完成后,可以在ceph的节点上使用ceph -s查询集群的状态;也可以使用cephadm shell;在主机上启动一个ceph的客户端容器来进行管理ceph集群

集群节点添加

向集群内添加主机:
1. 查询集群内的主机
      ceph orch host ls 
2. 拷贝集群的公钥到主机
      ceph cephadm get-pub-key > ~/ceph.pub  
      ssh-copy-id -f -i   ~/ceph.pub  root@node2.example.com 
      ssh-copy-id -f -i   ~/ceph.pub  root@node3.example.com
3. 获取集群的私钥测试,能否成功登陆到集群节点(可选,非必须执行)
      ceph cephadm get-ssh-config > ssh_config 获取ssh的客户端配置文件
      ceph config-key get mgr/cephadm/ssh_identity_key > ~/cephadm_private_key 导出集群的私钥
      chmod 0600 ~/cephadm_private_key  设置私钥权限
      ssh -F ssh_config -i ~/cephadm_private_key root@node2.example.com 测试登录节点
4. 添加节点
      ceph orch host add node2.example.com
      ceph orch host add node3.example.com
      ceph orch host label add node2.example.com mgr_test  增加标签

集群组件的管理

集群内服务组件的管理:
1. 查询集群的组件服务
    ceph orch ls  查询整个集群内的组件部署信息和状态

            NAME           PORTS      RUNNING  REFRESHED  AGE  PLACEMENT
            服务名         IP加端口    运行状态/数量  刷新    运行   部署方式  
            alertmanager   ?:9093,9094      1/1  10m ago    27m  count:1
            crash                          1/2  10m ago    28m  *
            grafana        ?:3000           1/1  10m ago    28m  count:1
            mgr                           1/2  10m ago    28m  count:2
            mon                          1/5  10m ago    28m  count:5
            node-exporter  ?:9100           1/2  10m ago    27m  *
            prometheus     ?:9095          1/1  10m ago    28m  count:1

            count:1  该服务组件只在某一个节点上进行部署
            * : 表示该服务在所有节点上部署
            主机名: 表示仅在特定主机上部署
            标签名:   表示仅在指定标签主机上部署

            为什么加入主机到集群后,ceph的组件会自动部署到主机上???
            CEPH集群有节点自扩展能力,会自动部署集群所需要的组件数量
            关闭组件自扩展:  ceph orch apply mon  --unmanaged 

2. 组件的部署方式
       以服务类型进行编排(apply):
        ceph orch apply  mgr --placement=3  根据数量编排,也就是部署3个mgr节点
        ceph orch apply  mgr --placement=node1.example.com,node3.example.com   根据指定节点编排,部署在指定的两个节点上
        ceph orch apply  mgr --placement=*  支持通配符编排,星号表示在所有节点部署
        ceph orch apply  mgr  --placement=label:mgr_test 根据指定标签进行编排
       手动添加节点组件(daemon):
        ceph orch  daemon add mgr  node3.example.com 

3.查询节点上有哪些服务
        ceph orch  ps 查询集群的进程(所谓进程指的就是集群各个节点运行的服务)

4.管理进程的方式
        启动进程
         ceph orch   start alertmanager 将所有节点上的服务启动起来
         ceph orch  daemon start node-exporter.node1  启动指定节点上的服务进程                                  
         停止进程
         ceph orch   stop alertmanager  这会将所有节点上的进程停止
         ceph orch  daemon  stop  node-exporter.node1 停止指定节点的指定进程
        重启进程
          ceph orch   restart   alertmanager 重启一组服务
          ceph orch   daemon  restart  alertmanager 重启单个进程(服务)
        删除进程(服务)
          ceph orch   daemon rm node-exporter.node3 删除指定节点的指定进程
          ceph orch  rm node-exporter  删除一组服务,在所有节点上删除该服务
    集群内的OSD组件管理:
      1. 添加OSD(手动添加)
         ceph orch  daemon add osd  node1.example.com:/dev/sdb 
         ceph orch  daemon add osd  node1.example.com:/dev/sdc
         ceph orch  daemon add osd  node1.example.com:/dev/sdd
         添加一个OSD服务,使用指定主机上的指定磁盘
      2. 添加OSD(自动添加)
         ceph orch  apply osd   --all-available-devices  将所有节点上的空闲干净的磁盘,自动添加为OSD
ceph cephadm
Theme Jasmine by Kent Liao