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