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
相关推荐
一名路过的小码农1 天前
ceph 18.2.4二次开发,docker镜像制作
ceph·docker·容器
墨水\\5 天前
分布式----Ceph应用(下)
分布式·ceph
大G哥5 天前
基于K8S1.28.2实验rook部署ceph
java·ceph·云原生·容器·kubernetes
石兴稳6 天前
Ceph PG(归置组)的状态说明
ceph
石兴稳7 天前
Ceph层次架构分析
ceph
活老鬼7 天前
Ceph分布式存储
linux·运维·服务器·分布式·ceph
石兴稳8 天前
Ceph client 写入osd 数据的两种方式librbd 和kernel rbd
linux·ceph
石兴稳8 天前
Ceph的pool有两种类型
ceph
运维小文8 天前
ceph的集群管理
ceph·对象存储·存储·ceph集群管理·ceph节点管理
石兴稳9 天前
iSCSI 和SCSI的概述
ceph