9.Ceph部署

文章目录

Ceph部署

前期环境准备

主机名 public网络 cluster网络 角色
admin 192.168.242.69 admin(管理节点)
node01 192.168.242.66 192.168.242.100.11 mon、mgr、osd
node02 192.168.242.67 192.168.242.100.12 mon、mgr、osd
node03 192.168.242.68 192.168.242.100.13 mon、osd
client 192.168.242.70 client
####主机准备

为   node01   node02   node03    三台主机另外添加一张网卡和三个硬盘

###磁盘刷新

lsblk

如果在启动时添加磁盘,使用下面的命令刷新磁盘

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

####网卡设置

cd /etc/sysconfig/network-scripts/

cp ifcfg-ens32 ifcfg-ens33

###修改网卡配置文件,修改IP地址

vim ifcfg-ens33


systemctl restart network

###环境准备
###可选步骤:创建 Ceph 的管理用户


useradd cephadm
passwd cephadm

visudo
cephadm ALL=(root) NOPASSWD:ALL

####防火墙设置
####关闭 selinux 与防火墙


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

####根据规划设置主机名
####在每一台主机上分别设置


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

su

####在所有的主机上设置
####配置 hosts 解析

vim /etc/hosts

192.168.242.69 admin
192.168.242.66 node01
192.168.242.67 node02
192.168.242.68 node03
192.168.242.70 client

实验部署

软件安装

---所有主机---

###安装常用软件和依赖包

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

----admin----

###在admin管理节点配置  ssh  免密登陆其他所有节点

vim /etc/ssh/ssh_config

注释掉: StrictHostKeyChecking ask

将  ask     改为  no


ssh-keygen -t rsa

sshpass -p '123' ssh-copy-id root@admin
sshpass -p '123' ssh-copy-id root@node01
sshpass -p '123' ssh-copy-id root@node02
sshpass -p '123' ssh-copy-id root@node03
----所有主机---

###配置时间同步(一定要做)

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时间写入硬件时钟

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


####关闭无关服务,邮箱服务
systemctl disable --now postfix
---所有主机---

###配置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

---所有主机---

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

sync          ####同步操作
reboot        ####重启

部署Ceph集群

---所有主机---

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

mkdir -p /etc/ceph

---admin主机---

###安装 ceph-deploy 部署工具

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


###查看版本
ceph-deploy --version
---admin---

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

#ceph-deploy 2.0.1 默认部署的是 mimic 版的 Ceph,若想安装其他版本的 Ceph,可以用 --release 手动指定版本


####方法一
###下面的命令执行比较的慢,可以采用另外一种方式
cd /etc/ceph
ceph-deploy install --release nautilus node0{1..3} admin

###ceph-deploy install 本质就是在执行下面的命令:
yum clean all
yum -y install epel-release
yum -y install yum-plugin-priorities
yum -y install ceph-release ceph ceph-radosgw



###方法二
####也可采用手动安装 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

部署mon节点

---admin---

###在管理节点运行下述命令,告诉 ceph-deploy 哪些是 mon 监控节点
###生成初始配置

cd /etc/ceph

ceph-deploy new --public-network 192.168.242.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的密钥环文件
---admin---

###在管理节点初始化 mon 节点

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

ceph-deploy --overwrite-conf mon create-initial	
###如果mon节点配置文件与管理节点不一样,可以执行这个命令
###配置初始化 mon 节点,并向所有节点同步配置
### --overwrite-conf 参数用于表示强制覆盖配置文件


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

###命令执行成功后会在 /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
---node01节点---

###在 mon 节点上查看自动开启的 mon 进程

ps aux | grep ceph
---admin---

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

cd /etc/ceph
ceph -s

###查看 mon 集群选举的情况

ceph quorum_status --format json-pretty | grep leader
####扩容 mon 节点
####横向扩展

ceph-deploy mon add <节点名称>

---admin---

###部署能够管理 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 集群认证文件拷贝到各个节点


---mom节点---

###在 mon 节点上查看

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

cd /etc/ceph
ceph -s

部署OSD存储节点

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

lsblk 

---admin---

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

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

---admin---

###添加 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

####查看 ceph 集群状态
ceph -s

####查看OSD状态
ceph osd stat
ceph osd tree
rados df


---admin---

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

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

---admin---

#扩容 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,如果在生产环境中添加节点则会涉及到大量的数据的迁移。

部署mgr节点

---admin---

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


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

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


####扩容 mgr 节点
ceph-deploy mgr create <节点名称>

---admin---

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

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

开启监控模块

---node01---

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

ceph -s | grep mgr

yum install -y ceph-mgr-dashboard

cd /etc/ceph

ceph mgr module ls | grep dashboard

---node01---

####开启 dashboard 模块
ceph mgr module enable dashboard --force

####禁用 dashboard 的 ssl 功能
ceph config set mgr mgr/dashboard/ssl false

####配置 dashboard 监听的地址和端口
ceph config set mgr mgr/dashboard/server_addr 0.0.0.0
ceph config set mgr mgr/dashboard/server_port 8000
---node01---

####重启 dashboard
ceph mgr module disable dashboard
ceph mgr module enable dashboard --force

####确认访问 dashboard 的 url
ceph mgr services

####设置 dashboard 账户以及密码

echo "123" > dashboard_passwd.txt


###方法一(以被替换)
ceph dashboard set-login-credentials admin -i dashboard_passwd.txt
###方法二
ceph dashboard ac-user-create admin administrator -i dashboard_passwd.txt

###浏览器访问:http://192.168.242.66:8000 
###账号密码为 admin/123

管理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 数据的逻辑单元;当然,当前集群没有资源池,因此需要进行定义。

    ###创建一个 Pool 资源池,其名字为 mypool,P
    ###Gs 数量设置为 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

  • PG数官方推荐:一个pool资源池内应该包含多少PG数

    • OSD总数 < 5 ,PG数推荐为128

    • 5 < OSD总数 < 10 ,PG数推荐为512

    • 10 < OSD总数 < 50 ,PG数推荐为4096

    • OSD总数 > 50 ,PG数推荐为( Target PGs per OSD ) x ( OSD # ) x ( %Data ) / ( Size )(取最接近2的次方值)

      ####查看集群 Pool 信息

      ceph osd pool ls 或 rados lspools

      ceph osd lspools ###能查看到资源池的ID号

####查看资源池副本的数量

ceph osd pool get mypool size

###查看 PG 和 PGP 数量

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

###修改 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
####修改 Pool 副本数量为 2

ceph osd pool set mypool size 2

ceph osd pool get mypool size
####修改默认副本数为 2


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

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

###重启服务

systemctl restart ceph-mon.target


####删除 Pool 资源池

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


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


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

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


###所有 mon 节点重启 ceph-mon 服务

systemctl restart ceph-mon.target


###执行删除 Pool 命令

ceph osd pool rm pool01 pool01 --yes-i-really-really-mean-it
相关推荐
斯普信专业组2 天前
CephFS管理秘籍:全面掌握文件系统与MDS守护程序命令
ceph·cephfs
45° 微笑5 天前
k8s集群 ceph rbd 存储动态扩容
ceph·容器·kubernetes·rbd
查士丁尼·绵6 天前
ceph补充介绍
ceph
Hello.Reader7 天前
Ceph 存储系统全解
分布式·ceph
Clarence_Ls10 天前
<十六>Ceph mon 运维
运维·ceph
手持钩笼引天下10 天前
踩坑:关于使用ceph pg repair引发的业务阻塞
运维·ceph
Clarence_Ls11 天前
<十七>Ceph 块存储理论与实践
ceph
知本知至14 天前
ceph rgw使用sts Security Token Service
linux·网络·ceph
一名路过的小码农14 天前
ubantu 编译安装ceph 18.2.4
linux·c++·ceph
大新新大浩浩14 天前
ceph 删除rbd 锁的命令
ceph·1024程序员节