一,角色分配
ceph1:192.168.205.128 node1、 admin cluster ip:10.1.10.20
ceph2:192.168.205.129 node2 cluster ip:10.1.10.30
ceph3:192.168.205.130 node3 cluster ip:10.1.10.40
二,环境准备(all)
1)所有机器关闭防火墙及selinux
setenforce 0
sed -i 's/enforcing/disabled/' /etc/selinux/config
2)修改主机名并配置hosts解析
hostnamectl set-hostname ceph(1,2,3)
[root@ceph1 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.205.128 ceph1
192.168.205.129 ceph2
192.168.205.130 ceph3
3)admin管理节点()配置免密登录
ssh-keygen
[root@ceph1 ~]# ssh-copy-id -i ceph2
[root@ceph1 ~]# ssh-copy-id -i ceph3
4)安装常用软件和依赖包
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
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)配置时间同步
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
image.png
6)配置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
三,部署ceph集群
1. 创建一个Ceph工作目录
(三台节点虚拟机都创建一个 Ceph 工作目录,后续的工作都在该目录下进行)
mkdir -p /etc/ceph
2. admin管理节点安装ceph-deploy部署工具
ceph1:192.168.205.128
cd /etc/ceph
yum install -y ceph-deploy
ceph-deploy --version
image.png
3. 3台节点分别部署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. 配置集群网络
3台node节点添加一块新网卡并添加配置文件
3台node节点配置新网卡
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens36
vim ifcfg-ens36
修改配置文件-略
systemctl restart network
[root@ceph1 ~]# ifconfig #查看设置是否成功
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.205.128 netmask 255.255.255.0 broadcast 192.168.205.255
inet6 fe80::d9cc:efa9:2109:fc71 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:8d:b0:4e txqueuelen 1000 (Ethernet)
RX packets 47449 bytes 31941392 (30.4 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 55719 bytes 58987009 (56.2 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.1.10.20 netmask 255.255.255.0 broadcast 10.1.10.255
inet6 fe80::603c:8410:ceaa:46b8 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:8d:b0:58 txqueuelen 1000 (Ethernet)
RX packets 9867 bytes 7070056 (6.7 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 9644 bytes 8704164 (8.3 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 8120 bytes 11376366 (10.8 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 8120 bytes 11376366 (10.8 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
5. 生成初始配置
admin管理节点
cd /etc/ceph
ceph-deploy new --public-network 192.168.205.0/24 --cluster-network 10.1.1.20/24 ceph1 ceph2 ceph3
image.png
6. 初始化mon节点
admin管理节点
cd /etc/ceph
ceph-deploy mon create ceph1 ceph2 ceph3
#创建mon节点,由于monitor使用Paxos算法,其高可用集群节点数量要求为大于等于3的奇数台
ceph-deploy --overwrite-conf mon create-initial
#配置初始化 mon 节点,并向所有节点同步配置
# --overwrite-conf 参数用于表示强制覆盖配置文件
ceph-deploy gatherkeys ceph1
#可选操作,向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
——————————————————————————————————————————————————————————————————————————————————————-
#在 node 三个节点上查看自动开启的 mon 进程
ps aux | grep ceph
#在管理节点查看 Ceph 集群状态
cd /etc/ceph
ceph -s
#查看 mon 集群选举的情况
ceph quorum_status --format json-pretty | grep leader
#扩容 mon 节点
扩展 ceph 集群的 mon 节点以及 mgr 节点,以实现集群高可用。
eph-mon 是原生具备自选举以实现高可用机制的 ceph 服务,节点数量通常是奇数。
ceph-deploy mon add <节点名称>
7. 使用其他节点可以管理Ceph集群
admin管理节点
cd /etc/ceph
ceph-deploy admin ceph1 ceph2 ceph3
#本质就是把 ceph.client.admin.keyring 集群管理认证文件拷贝到各个节点
ceph -s #所有节点都可查看集群状态
8. 部署osd存储节点
3台node节点分别添加硬盘
image.png
查看3台node虚拟机新硬盘
#主机添加完硬盘后不要分区,直接使用
echo "- - -" > /sys/class/scsi_host/host0/scan
echo "- - -" > /sys/class/scsi_host/host1/scan
echo "- - -" > /sys/class/scsi_host/host2/scan #在线刷新新硬盘
lsblk #查看新硬盘
image.png
admin管理节点
添加osd存储节点
ceph-deploy --overwrite-conf osd create ceph1 --data /dev/sdb
ceph-deploy --overwrite-conf osd create ceph2 --data /dev/sdb
ceph-deploy --overwrite-conf osd create ceph3 --data /dev/sdb
ceph-deploy --overwrite-conf osd create ceph1 --data /dev/sdc
ceph-deploy --overwrite-conf osd create ceph2--data /dev/sdc
ceph-deploy --overwrite-conf osd create ceph3--data /dev/sdc
ceph -s #查看ceph集群状态
image.png
9. 部署mgr节点
admin管理节点
cd /etc/ceph
ceph-deploy mgr create node01 node02
————————————————————————————————————————————————————————————————————————————————————————————————————————————
#ceph-mgr守护进程以Active/Standby模式运行,可确保在Active节点或其ceph-mgr守护进程故障时,其中的一个Standby实例可以在不中断服务的情况下接管其任务。根据官方的架构原则,mgr至少要有两个节点来进行工作。
———————————————————————————————————————————————————————————————————————————————————————————————————————————————
ceph -s #查看集群
ceph osd status #查看 osd 状态,需部署 mgr 后才能执行
ceph osd df #查看 osd 容量,需部署 mgr 后才能执行
image.png
10. 解决HEALTH_WARN问题
ceph config set mon auth_allow_insecure_global_id_reclaim false #禁用不安全模式
ceph -s #查看ceph集群信息
image.png