ceph(三)部署一个最小的ceph集群

分布式存储ceph部署篇
1、 安装完操作系统

镜像:
centos7.6
镜像下载地址:
链接:https://pan.baidu.com/s/1IuJ5mL5H_4M8U-TlGaxkg 提取码:56c7

2、 配置完硬件
如果用的是真机部署线上环境
•硬件配置请参考egon老师的附件:《附件1: DELL服务器配置》
• ceph安装配置介绍与优化见:《附件2: ceph安装配置介绍与主机优化》

如果用的是虚拟机实验来测试,本机至少16G

admin节点:	1.5G内存2块网卡
mon01:	1.5G内存2块网卡
mon02:	1.5G内存2块网卡
mon03:	1.5G内存2块网卡
osd01 2G内存3块网卡 3块机械盘3块固态盘
osd02 2G内存3块网卡 3块机械盘3块固态盘
osd03 2G内存3块网卡 3块机械盘3块固态盘

虚拟机实验环境请注意:
•1、除了osd节点外,其他节点的硬盘盘不要挂太多,否则cpu占用过多导致虚拟机启动不了,因为都是虚拟出来的
•2、虚拟磁盘空间为20G即可
•3、把虚拟机无关的硬件都删掉,比如usb、声卡、打印机等

3、网络规划
在这里插入图片描述
注意:
•若是生产环境,上述ip必须设置成固定ip
•注意关闭 NetworkManager

systemctl stop NetworkManager 
systemctl disable NetworkManager

4、每台机器均关闭selinux与防火墙

sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/sysconfig/selinux 
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config 
setenforce 0
systemctl stop firewalld.service 
systemctl disable firewalld.service

librados2 ceph-mon ceph-common ceph-mgr ceph-base librbd1 ceph-osd

5、每台主机规范主机名

[root@admin ~]# cat rewriteip.sh 
#!/bin/bash
hostnamectl set-hostname $1
sed -i "s#3#$2#g" /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i "s#3#$2#g" /etc/sysconfig/network-scripts/ifcfg-eth1
systemctl restart network

6、 每台主机均开启yum缓存

sed -ri '2c cachedir=/soft' /etc/yum.conf
sed -ri '3c keepcache=1' /etc/yum.conf 
mkdir /soft

注意注意注意:yum clean all会将缓存文件夹内缓存的rpm包都清理掉,需要特别注意的是
•1、如果你打算采集rpm包,然后制作成自己的yum源,安装过程中不要手贱执行yum clean all
•2、ceph-deploy在安装时会执行yum clean all命令,然后再按照,所以请在ceph-deploy install 前将一些缓存的包备份好
Ps:关闭yum自动更新:

默认不会安装yum-con,我们也无需关闭yum自动更新
但如果你自己安装了: yum install yum-cron -y,则会默认开启yum更新,请记得关闭
# cat s/etc/yum/yum-cron.conf update_messages = no download_updates = no

7、 每台机器升级操作系统并安装依赖包

如果采用的不是官网源,而是自定义的yum源,那么下述命令中就不需要执行yum install epel-release -y安装epel源了,切记
yum install epel-release -y && yum update -y && yum upgrade -y && reboot
升级后需要重启计算机才能加载新内核,注意,一定要重启计算机
#升级前
系统:CentOS Linux release 7.6.1810 (Core) 内核:3・10・ 0-957・el7・x86_64
# reboot重启后
系统:CentOS Linux release 7.9.2009 (Core)
内核:3.10.0-1160.2 4.1.el7.x86_64 # 升级后

8、每台机器均安装常用软件

yum -y install 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

9、每台机器均配置ceph源
如果用的是自己的yum源,则无需下述操作

wget https://download.ceph.com/rpm-luminous/el7/noarch/ceph-release-1-1.el7.noarch.rpm
rpm -ivh ceph-release-1-1.el7.noarch.rpm
#等我们自己制作自己的yum源后就不需要安装这个包来产生官方源了,但保留着该rpm包吧,如果某天 想找官网的包它就可以派上用场了
mv ceph-release-1-1.el7.noarch.rpm /soft

了解(可能会出bug)

#官方源地址
https://download.ceph.com/
#找到对应版本即可,例如luminous https://download.ceph.com/rpm-luminous/el7/x86_64/
所以我们如果没有安装ceph-release-1-1.el7.noarch.rpm,也可以以自己配置源
[ceph]
name=ceph baseurl=https://download.ceph.com/rpm-luminous/el7/x86_64/ enabled=1
gpgcheck=0
#当然也可以使用阿里云,但阿里云也都是从官方搞过来的,阿里云肯定是快一些,所以看你自己了, egon是喜欢自己直接从官网搞,然后再制作成自己的源 http://mirrors.aliyun.com/ceph/rpm-luminous/el7/x86_64

如果想用egon制作ceph源头,请下载
链接:https://pan.baidu.cOm/s/1IuJ5mL5H 4M8U-TlGaxkg 提取码:56c7
然后参照《07部署自己的ceph源》
10、 每台机器均修改ssh配置
加快远程链接速度,可选,但建议做

sed -ri '/#UseDNS yes/c UseDNS no' /etc/ssh/sshd_config
systemctl restart sshd

11、 在管理节点添加hosts解析,地址为public_addr
!!!注意地址为 publijaddr
!!!注意地址为 publijaddr
!!!注意地址为 publijaddr

cat >> /etc/hosts << EOF
1.1.1.3 admin
1.1.1.4 mon01
1.1.1.5 mon02
1.1.1.6 mon03
1.1.1.7 osd01
1.1.1.8 osd02
1.1.1.9 osd03
EOF

12、 在管理节点制作密钥登录所有其他节点
制作秘钥对

ssh-keygen

在管理节点执行下述脚本(前提:目标主机的root密码均为1)
记得安装 yum install expect -y

[root@admin ~]# cat mianmi.sh 
#!/bin/bash
for i in 'admin' 'mon01' 'mon02' 'mon03' 'osd01' 'osd02' 'osd03'
do
    expect -c "
    spawn ssh-copy-id -i root@$i
    expect {
    \"(yes/no)\" {send \"yes\r\";exp_continue}
    \"password\" {send \"1\r\";exp_continue}
    } "
done

13、 在管理节点把/etc/hosts发给其他节点

[root@admin ~]# cat sent.sh 
#!/bin/bash
for i in 'mon01' 'mon02' 'mon03' 'osd01' 'osd02' 'osd03'
do
 scp /etc/hosts root@$i:/etc/hosts
done

14、 配置ntp服务,保证集群服务器时间统一
统一时间非常重要,必须要做
大前提:chrony服务端客户端配置完后,重启chronyd服务即可快速完成时间同步,在这之后就不要再 手动去修改时间了,一切让时间服务器自己去同步
chrony服务端:admin节点

# 1、安装
yum -y install chrony
# 2、修改配置文件
mv /etc/chrony.conf /etc/chrony.conf.bak 
cat > /etc/chrony.conf << EOF
server	ntp1.aliyun.com	iburst	minpoll	4	maxpoll	10
server	ntp2.aliyun.com	iburst	minpoll	4	maxpoll	10
server	ntp3.aliyun.com	iburst	minpoll	4	maxpoll	10
server	ntp4.aliyun.com	iburst	minpoll	4	maxpoll	10
server	ntp5.aliyun.com	iburst	minpoll	4	maxpoll	10
server	ntp6.aliyun.com	iburst	minpoll	4	maxpoll	10
server	ntp7.aliyun.com	iburst	minpoll	4	maxpoll	10
driftfile /var/lib/chrony/drift			
makestep 10 3					
rtcsync					
allow	0.0.0.0/0					
local	stratum 10					
keyfile /etc/chrony.keys 
logdir /var/log/chrony 
stratumweight 0.05 
noclientlog
logchange 0.5
EOF
# 4、启动chronyd服务
 #最好重启,这样无论原来是否启动都可以重新加载配置
systemctl restart chronyd.service
systemctl enable chronyd.service
systemctl status chronyd.service

chrony客户端:其他节点,完全一样的配置与操作

#下述步骤一次性粘贴到每个客户端执行即可
#1、安装 chrony
yum -y install chrony
#2、需改客户端配置文件
mv /etc/chrony.conf /etc/chrony.conf.bak
cat > /etc/chrony.conf << EOF
server admin iburst
driftfile /var/lib/chrony/drift makestep 10 3
rtcsync
local stratum 10
keyfile /etc/chrony.key 
logdir /var/log/chrony stratumweight 0.05
noclientlog
logchange 0.5
EOF
#3、启动 chronyd
systemctl restart chronyd.service
systemctl enable chronyd.service
systemctl status chronyd.service

若想了解时间服务器细节请点击:https://www.cnblogs.com/linhaifeng/articles/14699550.html
15、 创建工作目录
为所有节点都创建一个ceph工作目录,后续的工作都在该目录下进行,在admin节点运行下述命令

[root@admin ~]# cat create.sh 
#!/bin/bash
for host in 'admin' 'mon01' 'mon02' 'mon03' 'osd01' 'osd02' 'osd03'
do 
 ssh root@$host mkdir -p /etc/ceph
 [ $? -eq 0 ] && echo "$host make directory '/etc/ceph' successful" 
done

16、 在管理节点安装并配置ceph-deploy
管理节点安装并配置ceph-deploy,在/etc/ceph/目录下面进行,

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

ceph-deploy 2.0.1默认部署的是mimic版的ceph,若想安装其他版本的ceph,比如luminous,需要修 改ceph-deploy的源,在管理节点运行下述命令

cat >> /etc/profile « EOF
export CEPH_DEPL0Y_REP0_URL=http://download.ceph.com/rpm-luminous/el7/
export CEPH_DEPLOY_GPG_URL=https://download.ceph.com/keys/release.asc
EOF
source /etc/profile

17、 在管理节点为其他节点安装ceph包
先为其他节点安装

cd /etc/ceph
ceph-deploy install mon0{1..3} osd0{1..3} 

再为自己安装

ceph-deploy install admin

注意:所有主机都接入了管理网络,我们先通过管理网络部署完毕集群,部署成功后再修改ceph.conf 配置文件指定public_addr网络与cluster_addr网络,然后推送给所有节点,重启服务即可

了解
• 1、ceph-deploy instalI本质就是在执行

yum clean all
yum -y install yum-plugin-priorities
yum -y -q install ceph ceph-release ceph-common ceph-radosgw
#2、如果我们没有修改过源,也可以用一releas e手动指定版本
ceph-deploy install 一一release luminous mon0{1..3} osd0{1..3}

18、 初始化集群
在管理节点运行下述命令,告诉ceph-deploy哪些是监控节点,命令成功后会在/etc/ceph下生成 ceph.conf、 ceph.log、 ceph.mon.keyring文件

cd /etc/ceph
ceph-deploy new mon01 mon02 mon03

如果报错,首先看看主机名是否都按照规定设置,是否与hosts文件保持一致,然后在依次执行下述步 骤

#1、检查防火墙有没有关闭
iptables -F getenforce
setenforce 0
#2、删除之前版本ceph残留的文件
rm -rf /etc/ceph/*
rm -rf /var/lib/ceph/*/*
rm -rf /var/log/ceph/*
rm -rf /var/run/ceph/*
#3、重新进入工作目录,执行命令
cd /etc/ceph/
ceph-deploy new mon01 mon02 mon03

19、 配置初始monitor(s)s并收集所有密钥
在管理节点运行下述命令

cd /etc/ceph
ceph-deploy mon create mon01 mon02 mon03
ceph-deploy --overwrite-conf mon create-initial
ceph-deploy gatherkeys mon01

注意:只有在安装Hammer或更高版时才会创建bootstrap-rgw密钥环。
一旦这些密钥在本地目录中,您就可以设置新的osd等。

# ls /etc/ceph 
ceph.conf #ceph的配置文件 
ceph-deploy-ceph.log #monitor 的日志 
ceph.mon.keyring # monitor 的密钥环文件

20、 部署admin节点

部署admin节点,以后可以在各个节点执行ceph命令,在管理节点运行下述命令
cd /etc/ceph
ceph-deploy admin admin mon01 mon02 mon03 osd01 osd02 osd03 # 第 1个 admin 是选项, 后续的都是主机名
#本质就是把ceph.client.admin.keyring传送到各个节点

21、 部署并激活osd节点
因为我们例子中,每个osd节点三块机械盘当数据盘,三块固态盘每块分两个分区分别用做一个数据盘 的–block-db 和–block-wal
机械盘

/dev/sdb
/dev/sdc
/dev/sdd

固态盘

/dev/sde
/dev/sdf
/dev/sdg

在所有osd节点执行下述脚本,为固态盘分区

#!/bin/bash
SSDS="e f g"
for i in ${SSDS}; do
 parted -s /dev/sd${i} mklabel gpt
 parted -s /dev/sd${i} mkpart primary 0% 50%
 parted -s /dev/sd${i} mkpart primary 51% 100%
done

在管理节点执行下述脚本,部署并激活osdoi、osd02、osd03上的所有osd

#!/bin/bash
cd /etc/ceph
for i in 'osd01' 'osd02' 'osd03'
do	
    ceph-deploy --overwrite-conf osd create ${i} --data /dev/sdb --block-db	/dev/sde1 --block-wal /dev/sde2
    ceph-deploy --overwrite-conf osd create ${i} --data /dev/sdc --block-db	/dev/sdf1 --block-wal /dev/sdf2
    ceph-deploy --overwrite-conf osd create ${i} --data /dev/sdd --block-db	/dev/sdg1 --block-wal /dev/sdg2
done

补充排错:若出现以下报错
在这里插入图片描述
解决方法如下:

1.查看磁盘
[root@osd01 ~]# df
tmpfs                     1013940      52   1013888   1% /var/lib/ceph/osd/ceph-0
tmpfs                     1013940      52   1013888   1% /var/lib/ceph/osd/ceph-1
tmpfs                     1013940      52   1013888   1% /var/lib/ceph/osd/ceph-2
了解osd daemon ---> lv ---> 裸盘

[root@osd01 ~]# systemctl status ceph-osd@0
● ceph-osd@10.service - Ceph object storage daemon osd.10
   Loaded: loaded (/usr/lib/systemd/system/ceph-osd@.service; enabled-runtime; vendor preset: disabled)
   Active: active (running) since Thu 2021-05-20 10:29:11 CST; 5h 47min ago

2.停服务
[root@osd01 ~]# systemctl stop ceph-osd@0
[root@osd01 ~]# systemctl stop ceph-osd@1
[root@osd01 ~]# systemctl stop ceph-osd@2

3.卸载磁盘
[root@osd01 ~]# umount /var/lib/ceph/osd/ceph-0
[root@osd01 ~]# umount /var/lib/ceph/osd/ceph-1
[root@osd01 ~]# umount /var/lib/ceph/osd/ceph-2

4.删除
[root@osd01 ~]# vgs
  VG                                        #PV #LV #SN Attr   VSize   VFree
  centos                                      1   1   0 wz--n- <99.00g    0 
  ceph-18772c6c-6822-4217-ac27-ece1ee1b99e9   1   1   0 wz--n- <20.00g    0 
  ceph-1dc94278-8cbf-4b8c-94f5-0550e69d2586   1   1   0 wz--n- <20.00g    0 
  ceph-acdf1c1e-bbbd-4ea4-b0f2-ed3404368218   1   1   0 wz--n- <20.00g    0
  
[root@osd01 ~]# vgremove 18772c6c-6822-4217-ac27-ece1ee1b99e9
[root@osd01 ~]# vgremove 1dc94278-8cbf-4b8c-94f5-0550e69d2586 
[root@osd01 ~]# vgremove acdf1c1e-bbbd-4ea4-b0f2-ed3404368218

[root@osd01 ~]# pvs
  PV         VG                                        Fmt  Attr PSize   PFree
  /dev/sda2  centos                                    lvm2 a--  <99.00g    0 
  /dev/sdb   ceph-18772c6c-6822-4217-ac27-ece1ee1b99e9 lvm2 a--  <20.00g    0 
  /dev/sdc   ceph-1dc94278-8cbf-4b8c-94f5-0550e69d2586 lvm2 a--  <20.00g    0 
  /dev/sdd   ceph-acdf1c1e-bbbd-4ea4-b0f2-ed3404368218 lvm2 a--  <20.00g    0
  
[root@osd01 ~]# pvremove /dev/sdb
[root@osd01 ~]# pvremove /dev/sdc
[root@osd01 ~]# pvremove /dev/sdb 
  
5.
然后在admin服务器上执行清理磁盘的任务
[root@admin ceph]# ceph-deploy disk zap osd01 /dev/sdb
[root@admin ceph]# ceph-deploy disk zap osd01 /dev/sdc
[root@admin ceph]# ceph-deploy disk zap osd01 /dev/sdd
[root@admin ceph]# ceph-deploy disk zap osd01 /dev/sde
[root@admin ceph]# ceph-deploy disk zap osd01 /dev/sdf
[root@admin ceph]# ceph-deploy disk zap osd01 /dev/sdg

6.在osd服务器上重新分区
#!/bin/bash
SSDS="e f g"
for i in ${SSDS}; do
 parted -s /dev/sd${i} mklabel gpt
 parted -s /dev/sd${i} mkpart primary 0% 50%
 parted -s /dev/sd${i} mkpart primary 51% 100%
done

7.在admin服务器上重新执行
ceph-deploy --overwrite-conf osd create osd01 --data /dev/sdb --block-db /dev/sde1 --block-wal /dev/sde2
ceph-deploy --overwrite-conf osd create osd01 --data /dev/sdc --block-db /dev/sdf1 --block-wal /dev/sdf2
ceph-deploy --overwrite-conf osd create osd01 --data /dev/sdd --block-db /dev/sdg1 --block-wal /dev/sdg2

ceph
了解:
ceph-deploy osd create中的–data选项后面是作为数据盘的设备,–block-db选项后面是db分 区,–block-wal选项后面是wal分区;db和wal通常部署在NVMe SSD上以提高写入性能,如果没有配 置NVMe SSD或者直接使用NVMe SSD作为数据盘,则不需要–block-db和–block-wal,只需要-- data指定数据盘即可。
#数据日志存在不同的盘符
ceph-deploy --overwrite-conf osd create osd01 --data vgb/lvb --block-db
ssd_vgh1/ssd_lvh1 --block-wal ssd_vgh2/ssd_lvh2
#ps :省略db与wal的说明,只指定data则为(创建于同一个盘)
ceph-deploy osd create node1 --data /dev/sdb
22、在admin节点修改配置文件
[root@admin ceph]# cat ceph.conf
[global]
fsid = cfd076f5-a4f1-4eca-9511-074371a21112
mon_initial_members = mon01, mon02, mon03
mon_host = 1.1.1.4,1.1.1.5,1.1.1.6
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
##如果有两块可以连通的网卡,配置public_network和cluster_network,如果是测试环境没有,就 不配置
public_network = 1.1.1.0/24 #公共网络
cluster_network = 2.2.2.0/24 #集群网络
mon_pg_warn_max_per_osd = 1000
osd_pool_default_size = 3
osd_pool_default_min_size = 2
#后面开启mgr模块会用到这个配置
[mgr]
mgr modules = dashboard
[osd]
osd_max_write_size = 1024
osd_recovery_op_priority = 1
osd_recovery_max_active = 1
osd_recovery_max_single_start = 1
osd_recovery_max_chunk = 1048576
osd_recovery_threads = 1 osd_max_backfills = 1
osd_scrub_begin_hour = 22 osd_scrub_end_hour = 7
osd_recovery_sleep = 0
osd_crush_update_on_start = false ##如果初始化的时候,把该值设置为true,然后重启所有 osd。不然创建完pool会提示:100.000% pgs unknown100.000% pgs unknowno 所有osd都加入, 集群ok后,再统一把该值设置为false,然后重启所有osd

在管理节点把新的配置文件推送到其他节点
cd /etc/ceph
ceph-deploy --overwrite-conf config push mon01 mon02 mon03 osd01 osd03

去admin以外的其他节点重启服务,注意该有的pubi c与cluster网络都需要提前配置好
方式1、重启ceph的所有守护进程
#systemctl restart ceph.target
方式2、按类型启动守护进程

# systemctl restart ceph-mgr.target
# systemctl restart ceph-osd@id
# systemctl restart ceph-mon.target
# systemctl restart ceph-mds.target
# systemctl restart ceph-radosgw.target

查看结果

#找到osd・5所在的节点
ceph osd tree
#去该节点执行命令,查看网络
ceph daemon /var/run/ceph/ceph-osd.5.asok config show | grep cluster_addr
ceph daemon /var/run/ceph/ceph-osd.5.asok config show | grep public_addr

23、开启监控模块
在L版本的Ceph中新增了 manager daemon
在管理节点执行下述命令,把mon01做成mgr节点
ceph-deploy mgr create mon01
在mon01节点执行
ceph mgr moodule enable dashboard
浏览器输入:http://mon01的ip地址:7000

在这里插入图片描述

可以在mon01节点查看
ceph mgr dump #查看集群支持的模块 ceph mgr services # 查看服务 systemctl status ceph-mgr.target netstat -tulnp |grep 7000
提醒:目前mgr功能模块可能还存在选举问题,如果多mgr节点都开启,可能会出现web页面取不到 数据,建议只开启一个mgr节点服务,然后关闭其他节点mgr服务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值