Ceph部署

发布时间 2023-10-11 17:18:49作者: Candy独角兽

1. 环境准备

1.1 关闭 selinux 与防火墙

systemctl stop firewalld.service
setenforce 0





1.2 根据规划设置主机名

#192.168.175.101
#192.168.175.102
#192.168.175.103
#192.168.175.104
#192.168.175.105
hostnamectl set-hostname admin 
hostnamectl set-hostname node01
hostnamectl set-hostname node02
hostnamectl set-hostname node03
hostnamectl set-hostname client
su





1.3 配置 hosts 解析

cat >> /etc/hosts << EOF
192.168.175.101 admin
192.168.175.102 node01
192.168.175.103 node02
192.168.175.104 node03
192.168.175.105 client
EOF





1.4 安装依赖包

#导入清华园脚本
CentOS-Base-qinghua.sh
#安装常用软件和依赖包
yum install -y dos2unix
dos2unix CentOS-Base-qinghua.sh
chmod +x CentOS-Base-qinghua.sh
./CentOS-Base-qinghua.sh
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




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

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

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

#重启依赖于系统时间的服务
systemctl restart rsyslog 
systemctl restart crond
#关闭无关服务
systemctl disable --now postfix

1.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

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

sync
reboot
分别在三台主机上新增一块网卡
192.168.175.102 node01
192.168.175.103 node02
192.168.175.104 node03

1.9 Ceph 环境规划

主机名				Public网络				Cluster网络				角色
admin				192.168.175.101									admin(管理节点负责集群整体部署)、client
node01				192.168.175.102			192.168.100.102			mon、mgr、osd(/dev/sdb、/dev/sdc、/dev/sdd)
node02				192.168.175.103			192.168.100.103			mon、mgr、osd(/dev/sdb、/dev/sdc、/dev/sdd)
node03				192.168.175.104			192.168.100.104			mon、osd(/dev/sdb、/dev/sdc、/dev/sdd)
client				192.168.175.105									client
cd /etc/sysconfig/network-scripts/
ls
cp ifcfg-ens33 ifcfg-ens36
vim !$
systemctl restart network
ifconfig



2. 部署 Ceph 集群

2.1 创建 Ceph 目录

  • 为所有节点都创建一个 Ceph 工作目录,后续的工作都在该目录下进行
mkdir -p /etc/ceph

2.2 安装 ceph-deploy 部署工具

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


2.3 手动安装 Ceph 包方式

  • 在其它节点上执行下面的命令将 Ceph 的安装包都部署上:
cd /etc/yum.repos.d/
ls
cat ceph.repo
sed -i 's#download.ceph.com#mirrors.tuna.tsinghua.edu.cn/ceph#' /etc/yum.repos.d/ceph.repo
cat ceph.repo
yum install -y ceph-mon ceph-radosgw ceph-mds ceph-mgr ceph-osd ceph-common ceph



客户机
yum install -y ceph

2.4 生成初始配置

  • 在管理节点运行下述命令,告诉 ceph-deploy 哪些是 mon 监控节点
cd /etc/ceph
ls
ceph-deploy new --public-network 192.168.175.0/24 --cluster-network 192.168.100.0/24 node01 node02 node03
ls



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

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


ceph-deploy --overwrite-conf mon create-initial		#配置初始化 mon 节点,并向所有节点同步配置



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

命令执行成功后会在 /etc/ceph 下生成配置文件
ll
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集群的所有权限

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

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

#查看 mon 集群选举的情况
ceph quorum_status --format json-pretty | grep leader

2.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 集群认证文件拷贝到各个节点


#在 mon 节点上查看
ls
ceph -s
#在 mon 节点查看 Ceph 集群状态

cd /etc/ceph/
ls
ceph -s
#客户端执行不了

2.7 部署 osd 存储节点

#每个节点添加三个硬盘
#主机添加完硬盘后不要分区,直接使用
lsblk 
echo "- - -" > /sys/class/scsi_host/host0/scan
echo "- - -" > /sys/class/scsi_host/host1/scan
echo "- - -" > /sys/class/scsi_host/host2/scan
lsblk




添加 osd 节点
ceph-deploy --overwrite-conf osd create node01 --data /dev/sdb


lsblk
mkfs.xfs /dev/sdb

dmsetup ls
ceph--16570b44--1af4--4bd8--8e2a--b4738b03bd0c-osd--block--be8caa04--a13d--4960--af98--fff7b567feb5	(253:2)
centos-swap	(253:1)
centos-root	(253:0)

dmsetup remove ceph--16570b44--1af4--4bd8--8e2a--b4738b03bd0c-osd--block--be8caa04--a13d--4960--af98--fff7b567feb5

lsblk



添加 osd 节点
ceph-deploy --overwrite-conf osd create node01 --data /dev/sdb
ceph-deploy --overwrite-conf osd create node02 --data /dev/sdc
ceph-deploy --overwrite-conf osd create node03 --data /dev/sdd


添加 osd 节点
ceph-deploy --overwrite-conf osd create node02 --data /dev/sdb
ceph-deploy --overwrite-conf osd create node03 --data /dev/sdb
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 node02 --data /dev/sdd
ceph-deploy --overwrite-conf osd create node03 --data /dev/sdd




systemctl status ceph-osd@0.service 

ceph -s
ceph osd stat
ceph osd tree


2.8 部署 mgr 节点

#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

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

2.9 开启监控模块

#在 node01 节点执行
yum install -y ceph-mgr-dashboard


cd /etc/ceph

ceph mgr module ls | grep dashboard

#开启 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

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

#确认访问 dashboard 的 url
ceph mgr services

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


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