【Ceph的部署】

目录

  • 一、基于 ceph-deploy 部署 Ceph 集群
    • 1、Ceph 生产环境推荐:
    • 2、Ceph 环境规划
    • 3、环境准备
      • 1、关闭 selinux 与防火墙
      • 2、根据规划设置主机名
      • 3、配置 hosts 解析
      • 4、安装常用软件和依赖包
      • 5、在 admin 管理节点配置 ssh 免密登录所有节点
      • 6、为每一个服务器配置时间同步
      • 7、配置 Ceph yum源
      • 8、执行完上面所有的操作之后重启所有主机(可选)
      • 9、为每哥节点主机多设置三张硬盘进行使用
      • 10、为每个节点设置vip地址
    • 2、部署 Ceph 集群
      • 1、为所有节点都创建一个 Ceph 工作目录,后续的工作都在该目录下进行
      • 2、在admin节点上安装 ceph-deploy 部署工具
      • 3、在管理节点为其它节点安装 Ceph 软件包
      • 4、生成初始配置
      • 5、在管理节点初始化 mon 节点
        • 1、命令执行成功后会在 /etc/ceph 下生成配置文件
        • 2、在 node 节点上查看自动开启的 mon 进程
        • 3、在管理节点查看 Ceph 集群状态
        • 4、查看 mon 集群选举的情况
        • 5、扩容 mon 节点
      • 6、部署能够管理 Ceph 集群的节点
        • 1、在 mon 节点上查看
      • 7、部署 osd 存储节点
        • 1、如果是利旧的硬盘,则需要先擦净(删除分区表)磁盘(可选,无数据的新硬盘可不做)
        • 2、添加 osd 节点
        • 3、查看 ceph 集群状态
        • 4、扩容 osd 节点
      • 8、部署 mgr 节点
        • 1、扩容 mgr 节点
      • 9、开启监控模块
        • 1、在 ceph-mgr Active节点执行命令开启
        • 2、开启 dashboard 模块
        • 3、禁用 dashboard 的 ssl 功能
        • 4、配置 dashboard 监听的地址和端口
        • 5、重启 dashboard
        • 6、确认访问 dashboard 的 url
        • 7、设置 dashboard 账户以及密码
  • 二、资源池 Pool 管理
    • 1、创建一个 Pool 资源池
    • 2、查看集群 Pool 信息
    • 3、查看资源池副本的数量
    • 4、查看 PG 和 PGP 数量
    • 5、修改 pg_num 和 pgp_num 的数量为 128
    • 6、修改 Pool 副本数量为 2
    • 7、修改默认副本数为 2
    • 8、删除 Pool 资源池


一、基于 ceph-deploy 部署 Ceph 集群

1、Ceph 生产环境推荐:

1、存储集群全采用万兆网络
2、集群网络(cluster-network,用于集群内部通讯)与公共网络(public-network,用于外部访问Ceph集群)分离
3、mon、mds 与 osd 分离部署在不同主机上(测试环境中可以让一台主机节点运行多个组件)
4、OSD 使用 SATA 亦可
5、根据容量规划集群
6、至强E5 2620 V3或以上 CPU,64GB或更高内存
7、集群主机分散部署,避免机柜的电源或者网络故障

字号4

2、Ceph 环境规划

主机名 Public网络 Cluster网络 角色
admin 192.168.102.10 admin(管理节点负责集群整体部署)、client
node01 192.168.102.20 192.168.100.20 mon、mgr、osd(/dev/sdb、/dev/sdc、/dev/sdd)
node02 192.168.102.30 192.168.100.30 mon、mgr、osd(/dev/sdb、/dev/sdc、/dev/sdd)
node03 192.168.102.40 192.168.100.40 mon、osd(/dev/sdb、/dev/sdc、/dev/sdd)
client 192.168.102.50 client

3、环境准备

可选步骤:创建 Ceph 的管理用户
useradd cephadm
passwd cephadm

visudo
cephadm ALL=(root) NOPASSWD:ALL

【Ceph的部署】_第1张图片

1、关闭 selinux 与防火墙

systemctl disable --now firewalld
setenforce 0
sed -i 's/enforcing/disabled/' /etc/selinux/config

2、根据规划设置主机名

给每台服务器设置主机名

hostnamectl set-hostname admin
hostnamectl set-hostname node01
hostnamectl set-hostname node02
hostnamectl set-hostname node03
hostnamectl set-hostname client

3、配置 hosts 解析

【Ceph的部署】_第2张图片

4、安装常用软件和依赖包

yum -y install epel-release
yum -y install yum-plugin-priorities yum-utils ntpdate python-setuptools python-pip gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel zip unzip ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5-devel libidn libidn-devel openssl openssh openssl-devel nss_ldap openldap openldap-devel openldap-clients openldap-servers libxslt-devel libevent-devel ntp libtool-ltdl bison libtool vim-enhanced python wget lsof iptraf strace lrzsz kernel-devel kernel-headers pam-devel tcl tk cmake ncurses-devel bison setuptool popt-devel net-snmp screen perl-devel pcre-devel net-snmp screen tcpdump rsync sysstat man iptables sudo libconfig git bind-utils tmux elinks numactl iftop bwm-ng net-tools expect snappy leveldb gdisk python-argparse gperftools-libs conntrack ipset jq libseccomp socat chrony sshpass

5、在 admin 管理节点配置 ssh 免密登录所有节点

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
sshpass -p 'Dz030617' ssh-copy-id -o StrictHostKeyChecking=no root@admin
sshpass -p 'Dz030617' ssh-copy-id -o StrictHostKeyChecking=no root@node01
sshpass -p 'Dz030617' ssh-copy-id -o StrictHostKeyChecking=no root@node02
sshpass -p 'Dz030617' ssh-copy-id -o StrictHostKeyChecking=no root@node03

【Ceph的部署】_第3张图片

vim /etc/ssh/ssh_config 

【Ceph的部署】_第4张图片

6、为每一个服务器配置时间同步

systemctl enable --now chronyd
timedatectl set-ntp true					#开启 NTP
timedatectl set-timezone Asia/Shanghai		#设置时区
chronyc -a makestep							#强制同步下系统时钟
timedatectl status							#查看时间同步状态
chronyc sources -v							#查看 ntp 源服务器信息
timedatectl set-local-rtc 0					#将当前的UTC时间写入硬件时钟

【Ceph的部署】_第5张图片

#重启依赖于系统时间的服务
systemctl restart rsyslog 
systemctl restart crond

#关闭无关服务
systemctl disable --now postfix

7、配置 Ceph yum源

wget https://download.ceph.com/rpm-nautilus/el7/noarch/ceph-release-1-1.el7.noarch.rpm --no-check-certificate

rpm -ivh ceph-release-1-1.el7.noarch.rpm --force

8、执行完上面所有的操作之后重启所有主机(可选)

sync
reboot

9、为每哥节点主机多设置三张硬盘进行使用

【Ceph的部署】_第6张图片
添加好硬盘后进行刷新硬盘

echo "- - -" > /sys/class/scsi_host/host0/scan
echo "- - -" > /sys/class/scsi_host/host1/scan
echo "- - -" > /sys/class/scsi_host/host2/scan

【Ceph的部署】_第7张图片

10、为每个节点设置vip地址

【Ceph的部署】_第8张图片

2、部署 Ceph 集群

1、为所有节点都创建一个 Ceph 工作目录,后续的工作都在该目录下进行

mkdir -p /etc/ceph

2、在admin节点上安装 ceph-deploy 部署工具

cd /etc/ceph
yum install -y ceph-deploy

ceph-deploy --version

【Ceph的部署】_第9张图片

3、在管理节点为其它节点安装 Ceph 软件包

#也可采用手动安装 Ceph 包方式,在其它节点上执行下面的命令将 Ceph 的安装包都部署上:
sed -i 's#download.ceph.com#mirrors.tuna.tsinghua.edu.cn/ceph#' /etc/yum.repos.d/ceph.repo

yum install -y ceph-mon ceph-radosgw ceph-mds ceph-mgr ceph-osd ceph-common ceph

4、生成初始配置

#在管理节点运行下述命令,告诉 ceph-deploy 哪些是 mon 监控节点
cd /etc/ceph
ceph-deploy new --public-network 192.168.102.0/24 --cluster-network 192.168.100.0/24 node01 node02 node03
#命令执行成功后会在 /etc/ceph 下生成配置文件
ls /etc/ceph
ceph.conf					#ceph的配置文件
ceph-deploy-ceph.log		#monitor的日志
ceph.mon.keyring			#monitor的密钥环文件

在这里插入图片描述

5、在管理节点初始化 mon 节点

cd /etc/ceph
ceph-deploy mon create node01 node02 node03			#创建 mon 节点,由于 monitor 使用 Paxos 算法,其高可用集群节点数量要求为大于等于 3 的奇数台

ceph-deploy --overwrite-conf mon create-initial		#配置初始化 mon 节点,并向所有节点同步配置
													# --overwrite-conf 参数用于表示强制覆盖配置文件

ceph-deploy gatherkeys node01						#可选操作,向 node01 节点收集所有密钥

1、命令执行成功后会在 /etc/ceph 下生成配置文件

ls /etc/ceph
ceph.bootstrap-mds.keyring			#引导启动 mds 的密钥文件
ceph.bootstrap-mgr.keyring			#引导启动 mgr 的密钥文件
ceph.bootstrap-osd.keyring			#引导启动 osd 的密钥文件
ceph.bootstrap-rgw.keyring			#引导启动 rgw 的密钥文件
ceph.client.admin.keyring			#ceph客户端和管理端通信的认证密钥,拥有ceph集群的所有权限
ceph.conf
ceph-deploy-ceph.log
ceph.mon.keyring

在这里插入图片描述

2、在 node 节点上查看自动开启的 mon 进程

#在 node 节点上查看自动开启的 mon 进程
ps aux | grep ceph

【Ceph的部署】_第10张图片

3、在管理节点查看 Ceph 集群状态

cd /etc/ceph
ceph -s

【Ceph的部署】_第11张图片

4、查看 mon 集群选举的情况

ceph quorum_status --format json-pretty | grep leader

在这里插入图片描述

5、扩容 mon 节点

ceph-deploy mon add <节点名称>

6、部署能够管理 Ceph 集群的节点

#可实现在各个节点执行 ceph 命令管理集群
cd /etc/ceph
ceph-deploy --overwrite-conf config push node01 node02 node03		#向所有 mon 节点同步配置,确保所有 mon 节点上的 ceph.conf 内容必须一致

ceph-deploy admin node01 node02 node03			#本质就是把 ceph.client.admin.keyring 集群认证文件拷贝到各个节点

1、在 mon 节点上查看

ls /etc/ceph
ceph.client.admin.keyring  ceph.conf  rbdmap  tmpr8tzyc

cd /etc/ceph
ceph -s

7、部署 osd 存储节点

#主机添加完硬盘后不要分区,直接使用
lsblk 

【Ceph的部署】_第12张图片

1、如果是利旧的硬盘,则需要先擦净(删除分区表)磁盘(可选,无数据的新硬盘可不做)

cd /etc/ceph
ceph-deploy disk zap node01 /dev/sdb
ceph-deploy disk zap node02 /dev/sdb
ceph-deploy disk zap node03 /dev/sdb

2、添加 osd 节点

ceph-deploy --overwrite-conf osd create node01 --data /dev/sdb
ceph-deploy --overwrite-conf osd create node02 --data /dev/sdb
ceph-deploy --overwrite-conf osd create node03 --data /dev/sdb

3、查看 ceph 集群状态

ceph -s

【Ceph的部署】_第13张图片

ceph osd stat
ceph osd tree
rados df

【Ceph的部署】_第14张图片

ceph osd status    #查看 osd 状态,需部署 mgr 后才能执行

【Ceph的部署】_第15张图片

ceph osd df    #查看 osd 容量,需部署 mgr 后才能执行

【Ceph的部署】_第16张图片

4、扩容 osd 节点

cd /etc/ceph
ceph-deploy --overwrite-conf osd create node01 --data /dev/sdc
ceph-deploy --overwrite-conf osd create node02 --data /dev/sdc
ceph-deploy --overwrite-conf osd create node03 --data /dev/sdc
ceph-deploy --overwrite-conf osd create node01 --data /dev/sdd
ceph-deploy --overwrite-conf osd create node02 --data /dev/sdd
ceph-deploy --overwrite-conf osd create node03 --data /dev/sdd

添加 OSD 中会涉及到 PG 的迁移,由于此时集群并没有数据,因此 health 的状态很快就变成 OK,如果在生产环境中添加节点则会涉及到大量的数据的迁移。

8、部署 mgr 节点

ceph-mgr守护进程以Active/Standby模式运行,可确保在Active节点或其ceph-mgr守护进程故障时,其中的一个Standby实例可以在不中断服务的情况下接管其任务。根据官方的架构原则,mgr至少要有两个节点来进行工作。

cd /etc/ceph
ceph-deploy mgr create node01 node02
ceph -s

【Ceph的部署】_第17张图片

解决 HEALTH_WARN 问题:mons are allowing insecure global_id reclaim问题:
禁用不安全模式:ceph config set mon auth_allow_insecure_global_id_reclaim false

【Ceph的部署】_第18张图片

1、扩容 mgr 节点

ceph-deploy mgr create <节点名称>

9、开启监控模块

1、在 ceph-mgr Active节点执行命令开启

ceph -s | grep mgr

yum install -y ceph-mgr-dashboard

cd /etc/ceph

ceph mgr module ls | grep dashboard

在这里插入图片描述

2、开启 dashboard 模块

ceph mgr module enable dashboard --force

3、禁用 dashboard 的 ssl 功能

ceph config set mgr mgr/dashboard/ssl false

4、配置 dashboard 监听的地址和端口

ceph config set mgr mgr/dashboard/server_addr 0.0.0.0
ceph config set mgr mgr/dashboard/server_port 8000

5、重启 dashboard

ceph mgr module disable dashboard
ceph mgr module enable dashboard --force

6、确认访问 dashboard 的 url

ceph mgr services

【Ceph的部署】_第19张图片

7、设置 dashboard 账户以及密码

echo "12345678" > dashboard_passwd.txt
ceph dashboard set-login-credentials admin -i dashboard_passwd.txt
  或
ceph dashboard ac-user-create admin administrator -i dashboard_passwd.txt

【Ceph的部署】_第20张图片


浏览器访问:http://192.168.80.11:8000 ,账号密码为 admin/12345678

【Ceph的部署】_第21张图片【Ceph的部署】_第22张图片

二、资源池 Pool 管理

上面我们已经完成了 Ceph 集群的部署,但是我们如何向 Ceph 中存储数据呢?首先我们需要在 Ceph 中定义一个 Pool 资源池。Pool 是 Ceph 中存储 Object 对象抽象概念。我们可以将其理解为 Ceph 存储上划分的逻辑分区,Pool 由多个 PG 组成;而 PG 通过 CRUSH 算法映射到不同的 OSD 上;同时 Pool 可以设置副本 size 大小,默认副本数量为 3。

Ceph 客户端向 monitor 请求集群的状态,并向 Pool 中写入数据,数据根据 PGs 的数量,通过 CRUSH 算法将其映射到不同的 OSD 节点上,实现数据的存储。 这里我们可以把 Pool 理解为存储 Object 数据的逻辑单元;当然,当前集群没有资源池,因此需要进行定义。

1、创建一个 Pool 资源池

创建一个 Pool 资源池,其名字为 mypool,PGs 数量设置为 64,设置 PGs 的同时还需要设置 PGP(通常PGs和PGP的值是相同的):

PG (Placement Group),pg 是一个虚拟的概念,用于存放 object,PGP(Placement Group for Placement purpose),相当于是 pg 存放的一种 osd 排列组合
cd /etc/ceph
ceph osd pool create mypool 64 64

2、查看集群 Pool 信息

ceph osd pool ls    或    rados lspools
ceph osd lspools

【Ceph的部署】_第23张图片

3、查看资源池副本的数量

ceph osd pool get mypool size

在这里插入图片描述

4、查看 PG 和 PGP 数量

ceph osd pool get mypool pg_num
ceph osd pool get mypool pgp_num

在这里插入图片描述

5、修改 pg_num 和 pgp_num 的数量为 128

ceph osd pool set mypool pg_num 128
ceph osd pool set mypool pgp_num 128

ceph osd pool get mypool pg_num
ceph osd pool get mypool pgp_num

【Ceph的部署】_第24张图片

6、修改 Pool 副本数量为 2

ceph osd pool set mypool size 2

ceph osd pool get mypool size

【Ceph的部署】_第25张图片

7、修改默认副本数为 2

到管理节点上进行添加内容
【Ceph的部署】_第26张图片

vim ceph.conf
......
osd_pool_default_size = 2

ceph-deploy --overwrite-conf config push node01 node02 node03

操作完成后对所有节点进行重启服务

systemctl restart ceph-mon.target 

【Ceph的部署】_第27张图片

8、删除 Pool 资源池

1)删除存储池命令存在数据丢失的风险,Ceph 默认禁止此类操作,需要管理员先在 ceph.conf 配置文件中开启支持删除存储池的操作

vim ceph.conf
......
[mon]
mon allow pool delete = true

【Ceph的部署】_第28张图片

2)推送 ceph.conf 配置文件给所有 mon 节点

ceph-deploy --overwrite-conf config push node01 node02 node03

操作完成后对所有节点进行重启服务

systemctl restart ceph-mon.target 

【Ceph的部署】_第29张图片
3)执行删除 Pool 命令

ceph osd pool rm dz dz --yes-i-really-really-mean-it

【Ceph的部署】_第30张图片

你可能感兴趣的:(ceph)