安装ceph集群

发布时间 2023-06-12 17:12:27作者: Chuyio

环境

# cat /etc/redhat-release 
CentOS Linux release 7.9.2009 (Core)
# uname -a
Linux k8s-node01 6.2.5-1.el7.elrepo.x86_64 #1 SMP PREEMPT_DYNAMIC Sat Mar 11 13:24:31 EST 2023 x86_64 x86_64 x86_64 GNU/Linux
主机名 IP地址 部署进程 数据盘
k8s-node01 192.168.1.23 MON+mgr+OSD /dev/sdb
k8s-node02 192.168.1.24 MON+mgr+OSD /dev/sdb
k8s-node03 192.168.1.25 MON+mgr+OSD /dev/sdb

每个MON都兼职做OSD,所以安装三个ceph节点时需要在上面添加一块磁盘sdb。

系统优化

  1. 关闭防火墙 selinux
  2. 配置国内yum源
  3. 配置hosts文件
# cat /etc/hosts
···
192.168.1.23 k8s-node01
192.168.1.24 k8s-node02
192.168.1.25 k8s-node03
  1. 配置时钟同步 chrony/ntp
  2. 配置三台节点双向免密登陆
  3. 配置ceph使用的yum源
vim /etc/yum.repos.d/ceph.repo

[Ceph]
name=Ceph packages for x86_64
baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/x86_64/
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
 
[ceph-noarch]
name=Ceph noarch packages
baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/noarch/
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
 
[ceph-source]
name=Ceph source packages
baseurl=https://mirrors.aliyun.com/ceph/rpm-luminous/el7/SRPMS/
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc

为防止后续python支持环境出现问题,可以在三个节点上分别运行:

yum install -y python-pip

部署ceph集群

安装部署软件

ceph-deploy是个部署工具,使用它可以实现所有节点同步安装,如果这个工具无法使用,必须在每个节点上分别进行安装过程。

以下仅在 k8s-node01 上执行操作

yum -y install ceph-deploy

创建工作目录

后续进行创建集群、安装软件包、初始化服务、创建OSD等操作时,必须创建工作目录。

mkdir ceph-cluster && cd ceph-cluster

创建群集并安装软件

ceph-deploy new k8s-node01 k8s-node02 k8s-node03
ceph-deploy install k8s-node01 k8s-node02 k8s-node03

初始化部署 monitor

ceph-deploy mon create k8s-node01 k8s-node02 k8s-node03
ceph-deploy mon create-initial
cp ./* /etc/ceph/
ceph mon_status       检查部署情况

共享管理密钥

ceph-deploy 把配置文件和 admin 密钥复制到管理节点和 Ceph 节点,这样每次执行 Ceph 命令行时就无须指定 monitor 地址和 ceph.client.admin.keyring

ceph-deploy admin cephl ceph2 ceph3

修改密钥权限

sudo chmod 644 /etc/ceph/ceph.client.admin.keyring

创建OSD

以下都在k8s-node01上执行

ceph-deploy osd create k8s-node01 --data /dev/sdb

ceph-deploy osd create k8s-node02 --data /dev/sdb

ceph-deploy osd create k8s-node03 --data /dev/sdb

创建完成可以查看OSD

ceph-deploy osd list k8s-node01 k8s-node02 k8s-node03

创建mgr

ceph-deploy mgr create k8s-node01 k8s-node02 k8s-node03

验证测试

ceph health

ceph -s

显示详细信息。如果该简化命令提示错误,则使用ceph-status

时钟同步问题

如果ceph-s显示如下信息。

# ceph -s
health HEALTH WARN
clock skew detected on mon. node2, mon. node 3
Monitor clock skew detected

往往是各节点时钟同步出错。修改ceph1节点的配置文件/etc/ceph/ceph.conf,添加如下内容,将同步时间由默认的0.05s改为1s(或2s)。

[mon]
mon clock drift allowed =1
mon clock drift warn backoff = 30

开启Dashboard

Ceph从 Luminous开始,提供了原生的 Dashboard功能,通过Dashboard可以获取Ceph集群的各种状态信息,从Mimic里实现了Dashboard V2版本,提供了更全面的Ceph展示和管理功能。

  1. 查看ceph状态
    首先查看ceph状态,找出activemgr,这里active mgrk8s-node01
  2. 启用 dashboard 插件
ceph mgr module disable dashboard
ceph mgr module enable dashboard
  1. 配置 dashboard 地址和端口
ceph config set mgr mgr/dashboard/server_addr 192.168.1.23
ceph config set mgr mgr/dashboard/server_port 8888
  1. 关闭HTTPS
ceph config set mgr mgr/dashboard/ssl false
  1. 查看 dashboard服务
ceph mgr services
  1. 配置 dashboard 认证密码
# 方式如下:
ceph dashboard set-login-credentials admin 123456 and password updated
# 例:
ceph dashboard set-login-credentials admin 123456 

访问ceph的dashboard

官方参考


生成自签名证书和秘钥

# 未启用 SSL ,查看当前 dashboard 访问 URL
[root@k8s-node01 ~]# ceph mgr services
{
    "dashboard": "http://192.168.1.23:8888/"
}

------------------------------------------------------------

# 生成证书
# 生成key pair,并配置给ceph mgr
ceph dashboard create-self-signed-cert
mkdir mgr-dashboard
cd mgr-dashboard/
openssl req -new -nodes -x509 -subj "/O=IT/CN=ceph-mgr-dashboard" -days 3650 -keyout dashboard.key -out dashboard.crt -extensions v3_ca
# 启用 SSL
ceph config set mgr mgr/dashboard/ssl true
# 重启 mgr 服务
systemctl restart ceph-mgr@ceph-mgr1

------------------------------------------------------------

# 启用 SSL ,查看当前 dashboard 访问 URL
[root@k8s-node01 mgr-dashboard]# ceph mgr services
{
    "dashboard": "https://192.168.1.23:8888/"
}

列出 ceph 所有模块

ceph mgr module ls