Cephadm部署ceph octopus (15.2.13 )

   

Cephadm通过SSH连接manager daemon到主机,从而部署和管理Ceph群集。manager daemon能够添加,删除或更新Ceph containers。Cephadm首先在单节点上引导一个微小的Ceph集群(one monitor and one manager),然后自动将集群扩展到多个节点,并提供所有Ceph守护程序和服务。

 

A Ceph Storage Cluster requires at least one Ceph Monitor, Ceph Manager, and Ceph OSD (Object Storage Daemon). The Ceph Metadata Server is also required when running Ceph File System clients.

 

规划:

主机名

Public Network

Cluster Network

角色

ceph-mon1

192.168.0.151 

192.168.200.101 

monitor,mgr,rgw,mds,osd,nfs,cephadm

ceph-mon2 

192.168.0.152 

192.168.200.102 

monitor,mgr,rgw,mds,osd,nfs 

ceph-mon3 

192.168.0.153 

192.168.200.103 

monitor,mgr,rgw,mds,osd,nfs 

ceph-osd4 

192.168.0.154 

192.168.200.104 

  

     

说明:

  • ceph版本: 15.2.13 octopus (stable)
  • 集群的第一个节点也作为cephadm部署节点使用。

    Cluster Network 用于集群的内部通信

    Public Network 用于对外提供服务

    每台节点额外挂载两个硬盘用于部署osd

          

环境初始化

修改主机名

hostnamectl set-hostname ceph-mon1

exec bash -l

# 注意,由于ceph的进程会在自己的UNIX socket文件里面把主机名也加进去作为文件名,所以主机名和hosts文件中配置的主机名必须一致

      

关闭selinux

setenforce 0

sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

     

关闭防火墙

systemctl stop firewalld

systemctl disable firewalld

systemctl status firewalld

    

iptables为空

iptables -L

Chain INPUT (policy ACCEPT)

target prot opt source destination

   

Chain FORWARD (policy ACCEPT)

target prot opt source destination

   

Chain OUTPUT (policy ACCEPT)

target prot opt source destination

      

硬盘信息 

lsblk

   

     

Public Network    

服务器如果是克隆的注意删除UUID (推荐使用MobaXterm多窗口同时编辑)

   

 Cluster Network

     

复制配置文件并修改

cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens34

cp: overwrite '/etc/sysconfig/network-scripts/ifcfg-ens34'? y

   

[root@ceph-mon1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens34

[root@ceph-mon1 ~]# systemctl restart network

        

   

配置时间同步(CentOS 7.9默认已安装)

在所有 Ceph 节点上安装并运行chrony服务,特别是监控节点以免因时钟漂移导致故障
yum install -y chrony
systemctl enable --now chronyd

   

如果未安装时间同步,运行cephadmin shell将出错 

   

解决方法

内网时间同步也可以使用NTP服务器,搭建方法:https://www.cnblogs.com/st2021/p/14970131.html)

所有节点上都要运行时间服务

yum install ntp ntpdate -y

   

systemctl start ntpd.service
systemctl enable ntpd.service

     

   

配置hosts解析 

cat >> /etc/hosts << EOF

192.168.0.151 ceph-mon1

192.168.0.152 ceph-mon2

192.168.0.153 ceph-mon3

192.168.0.154 ceph-osd4

   

192.168.200.101 ceph-mon1

192.168.200.102 ceph-mon2

192.168.200.103 ceph-mon3

192.168.200.104 ceph-osd4

EOF

   

   

配置免密登录

在ceph-mon1上新建ssh公钥对,并配置免密登录至集群其它节点

ssh-keygen -t rsa -P ''

   

for i in `tail -n 4 /etc/hosts | awk '{print $1}'`; do ssh-copy-id $i;done

   

复制hosts文件至其他节点

for i in `tail -n 4 /etc/hosts | awk '{print $1}'`; do scp /etc/hosts $i:/etc/ ;done

   

     

配置ceph yum源

注意,根据CentOS的版本不同,选择如下两个配置中的其中一个

CentOS 7

# 在所有节点上配置,或者配置好一份之后分法到其他节点上去
# 注意需要配置EPEL源
vi /etc/yum.repos.d/ceph.repo

[Ceph]
name=Ceph packages for $basearch
baseurl=https://mirrors.aliyun.com/ceph/rpm-octopus/el7/$basearch
enabled=1
gpgcheck=0
type=rpm-md

[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-octopus/el7/noarch
enabled=1
gpgcheck=0
type=rpm-md

[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-octopus/el7/SRPMS
enabled=1
gpgcheck=0
type=rpm-md

   

     

CentOS 8

# 在所有节点上配置,或者配置好一份之后分法到其他节点上去
# 注意需要配置EPEL源
# vi /etc/yum.repos.d/ceph.repo

[Ceph]
name=Ceph packages for $basearch
baseurl=https://mirrors.aliyun.com/ceph/rpm-octopus/el8/$basearch
enabled=1
gpgcheck=0
type=rpm-md

[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-octopus/el8/noarch
enabled=1
gpgcheck=0
type=rpm-md

[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-octopus/el8/SRPMS
enabled=1
gpgcheck=0
type=rpm-md

     

复制ceph yum源到其他节点上去

for i in `tail -n 4 /etc/hosts | awk '{print $1}'`; do scp /etc/yum.repos.d/ceph.repo $i:/etc/yum.repos.d/;done

     

yum clear all;yum makecache 

for i in `tail -n 4 /etc/hosts | awk '{print $1}'`; do ssh $i exec yum clear all;yum makecache ;done

   

yum 时候出现Another app is currently holding the yum lock; waiting for it to exit...解决方法

rm -rf /var/run/yum.pid 

   

     

安装依赖

安装python3  

for i in `tail -n 4 /etc/hosts | awk '{print $1}'`; do ssh $i exec yum install python3 -y ;done

     

安装docker

cephadm基于容器运行所有ceph组件,所有节点需要安装docker或podman,这里以安装docker为例。

     

配置阿里云yum源
yum-config-manager \

--add-repo \

http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

或:清华大学源

yum-config-manager \

--add-repo \

https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo

   

for i in `tail -n 4 /etc/hosts | awk '{print $1}'`; do ssh $i exec yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -y ;done

     

for i in `tail -n 4 /etc/hosts | awk '{print $1}'`; do ssh $i exec yum clear all;yum makecache ;done

   

   

安装 Docker Engine-Community 和 containerd

yum install docker-ce docker-ce-cli containerd.io -y  

for i in `tail -n 4 /etc/hosts | awk '{print $1}'`; do ssh $i exec yum install docker-ce docker-ce-cli containerd.io -y ;done

        

配置docker镜像加速
mkdir -p /etc/docker

cat > /etc/docker/daemon.json <<EOF

{

"registry-mirrors": [

"https://registry.docker-cn.com",

"http://hub-mirror.c.163.com",

"https://docker.mirrors.ustc.edu.cn"

]

}

EOF

   

Docker中国区官方镜像

https://registry.docker-cn.com

网易

http://hub-mirror.c.163.com

中国科技大学

https://docker.mirrors.ustc.edu.cn  

   

for i in `tail -n 4 /etc/hosts | awk '{print $1}'`; do scp /etc/docker/daemon.json $i:/etc/docker/daemon.json ;done

   

启动docker服务
systemctl start docker

systemctl enable docker  

systemctl daemon-reload

systemctl restart docker

   

查看是否成功

docker info

   

     

安装cephadm

在ceph-mon1执行

wget https://github.com/ceph/ceph/raw/octopus/src/cephadm/cephadm

     

或者直接从github下载
curl https://raw.githubusercontent.com/ceph/ceph/v15.2.13/src/cephadm/cephadm -o cephadm

   

再不行直接在浏览器打开并复制代码即可

   

 chmod a+x cephadm && cp cephadm /usr/bin/cephadm

   

cephadm其实就是一个python3脚本,可以直接运行,而不用安装。

     

查看最新版本

   

     

   

引导新群集

ceph-mon1执行

mkdir -p /etc/ceph
cephadm bootstrap --mon-ip 192.168.0.151

   

mon-ip 就是第一个monitor daemon的IP地址     

该命令执行以下操作:

  • 在本地主机上为新集群创建monitor 和 manager daemon守护程序。
  • 为Ceph集群生成一个新的SSH密钥,并将其添加到root用户的/root/.ssh/authorized_keys文件中。
  • 将public key的副本写入/etc/ceph/ceph.pub。
  • 将与新群集进行通信所需的最小配置文件保存到/etc/ceph/ceph.conf。
  • 向/etc/ceph/ceph.client.admin.keyring写入client.admin可特权管理secret key的副本。
  • Add the _admin label to the bootstrap host. By default, any host with this label will (also) get a copy of /etc/ceph/ceph.conf and /etc/ceph/ceph.client.admin.keyring.

  注意 这个会生成密码,需提前保存,方便后面访问dashboard。

     

查看当前配置文件变化: 生成3个文件

ll /etc/ceph/

   

查看拉取的镜像和启动的容器

docker images

     

docker ps -a

   此时已经运行了以下组件

  • ceph-mgr ceph管理程序
  • ceph-monitor ceph监视器
  • ceph-crash 崩溃数据收集模块
  • prometheus prometheus监控组件
  • grafana 监控数据展示dashboard
  • alertmanager prometheus告警组件
  • node_exporter prometheus节点数据收集组件

     

启用CEPH命令

Cephadm不需要在主机上安装任何Ceph包

Cephadm shell命令在安装了所有Ceph包的容器中启动bash shell。默认情况下,如果在主机上的/etc/ceph中找到配置和keyring文件,则会将它们传递到容器环境中,以便shell完全正常工作。注意,在MON主机上执行时,cephadm shell将从MON容器推断配置,而不是使用默认配置。如果给定--mount,则主机(文件或目录)将显示在容器中的/mnt下面。

   

进入命令状态

cephadm shell

查看所有组件运行状态

ceph orch ps

   

查看某个组件运行状态

ceph orch ps --daemon-type mon

ceph orch ps --daemon-type mgr

ceph orch ps --daemon-type mds

   

集群状态

ceph status

   

ceph -v

ceph version 15.2.13 (c44bc49e7a57a87d84dfff2a077a2058aa2172e2) octopus (stable)

   

     

创建别名,非常实用的操作

alias ceph='cephadm shell -- ceph'

   

永久生效

vi /root/.bashrc

alias ceph='cephadm shell -- ceph'

   

source /root/.bashrc

   

     

 

   

将主机添加到集群中  

在新节点的root用户的authorized_keys文件中安装集群的公共SSH密钥:
cd /etc/ceph/
ssh-copy-id -f -i ceph.pub root@ceph-mon2
ssh-copy-id -f -i ceph.pub root@ceph-mon3
ssh-copy-id -f -i ceph.pub root@ceph-osd4

   

添加节点

cephadm shell -- ceph orch apply mon --unmanaged

   

# 禁用自动部署mon节点,如果不做这一步,cephadm会自动在已添加的host上去部署mon和mgr进程。

一个典型的Ceph集群有3到5个monitor daemon。如果超过5个节点,官网建议使用5个monitor

守护程序  

cephadm shell -- ceph orch host add ceph-mon2
cephadm shell -- ceph orch host add ceph-mon3
cephadm shell -- ceph orch host add ceph-osd4

   

如果前面没有执行ceph.pub的添加到新节点root用户的authorized_keys文件,将报以下错误:

   

一个是系统的免密登录,一个是集群的cephadm SSH密钥

   

查看节点

ceph orch host ls

   

给需要部署mon进程的节点打上标签

cephadm shell -- ceph orch host label add ceph-mon1 mon
cephadm shell -- ceph orch host label add ceph-mon2 mon
cephadm shell -- ceph orch host label add ceph-mon3 mon

   

根据标签部署monitor

cephadm shell -- ceph orch apply mon label:mon

   

或者,将monitor部署在一组特定的主机上:

# ceph orch apply mon *<host1,host2,host3,...>*

注意,需确保在列表中包括第一台(引导)主机  

   

添加完成后ceph会自动扩展monitor和manager到另外2个节点,在另外2个节点查看,自动运行了以下容器

docker ps

   

     

验证

cephadm shell -- ceph status

   

     

部署osd

列出节点上的所有可用设备

cephadm shell -- ceph orch device ls        

   

如果满足以下所有条件,则认为存储设备可用

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

   

创建osd

方法1:从特定主机上的特定设备创建OSD

cephadm shell -- ceph orch daemon add osd ceph-mon1:/dev/sdb
cephadm shell -- ceph orch daemon add osd ceph-mon1:/dev/sdc
cephadm shell -- ceph orch daemon add osd ceph-mon2:/dev/sdb
cephadm shell -- ceph orch daemon add osd ceph-mon2:/dev/sdc
cephadm shell -- ceph orch daemon add osd ceph-mon3:/dev/sdb
cephadm shell -- ceph orch daemon add osd ceph-mon3:/dev/sdc
cephadm shell -- ceph orch daemon add osd ceph-osd4:/dev/sdb
cephadm shell -- ceph orch daemon add osd ceph-osd4:/dev/sdc

   

方法2:添加任何可用和未使用的存储设备

ceph orch apply osd --all-available-devices

   

验证

cephadm shell -- ceph orch device ls

cephadm shell -- ceph status
cephadm shell -- ceph osd tree

   

至此,ceph的基本环境已搭建完成,其他操作待续。

posted @ 2021-07-04 22:50  ST运维  阅读(3050)  评论(0编辑  收藏  举报