Ceph分布式存储 部署详解

分布式存储Ceph部署

配置实验环境

1. 安装镜像 CentOS-7.6版本

链接:https://pan.baidu.com/s/16stKTebKwD4Nceh22RX2Nw
提取码:1234

2. 配置硬件,虚拟机来进行测试,本机至少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块固态盘

3. 网络规划

主机				管理网络				public网络			cluster网络
admin		 192.168.70.3			1.1.1.3/24				无
mon01		 192.168.70.4			1.1.1.4/24				无
mon02		 192.168.70.5			1.1.1.5/24				无
mon03		 192.168.70.6			1.1.1.6/24				无
osd01		 192.168.70.7			1.1.1.7/24			2.2.2.7/24
osd02		 192.168.70.8			1.1.1.8/24			2.2.2.8/24
osd03		 192.168.70.9			1.1.1.9/24			2.2.2.9/24

4. 每台虚拟机均关闭selinux与防火墙

1. 关闭selinux
vim /etc/selinux/config			修改配置文件,需要下一次开机才生效
	SELINUX=disabled			将配置文件SELinux的模式改成宽松模式

2. 关闭防火墙
firewall-cmd --set-default-zone=trusted			永久关闭防护墙
firewall-cmd --get-default-zone					查看防火墙当前状态

3. 重启计算机
reboot

5. 每台机器修改的主机名和对应的IP地址

vim changeip
#!/bin/bash
sed -i "s#.3#.$1#g" /etc/sysconfig/network-scripts/ifcfg-eth[01]     
hostnamectl set-hostname $2
systemctl restart network

bash changeip 5 主机名  				 $1是ip,$2是主机名传参时顺序千万不要传错了

6. 每台机器均开启yum缓存

  • 开启yum缓存是为了采集rpm包,然后制作成自己的yum源,安装过程中不要执行yum clean all。
  • 使用ceph-deploy命令进行安装时会默认会先执行yum clean all命令,所以在ceph-depoly install执行前将缓存的rpm包备份好。
1. 修改开启缓存的配置文件
vim /etc/yum.conf
cachedir=/soft				 第二行,修改yum缓存的压缩包所保存的目录。
keepcache=1					 第三行

2. 创建yum缓存文件所保存的目录
mkdir /soft					 

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

yum -y update && yum -y upgrade && reboot
 注意: 升级后需要重启计算机才能加载新内核 , 注意 , 一定要重启计算机。

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 zipqunzip ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5-devel libidn libidn-devel openssl openssh openssl-develnss_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 bisonsetuptool popt-devel net-snmp screen perl-devel pcre-devel net-snmp screen tcpdump rsync sysstat man iptables sudo libconfiggit bind-utils tmux elinks numactl iftop bwm-ng net-tools expect

9. 每台机器均配置ceph源

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 			 安装ceph软件包
ls /etc/yum.repos.d/						 查看ceph软件包的yum源
# ceph.repo

10. 每台计算机均修改ssh配置

  • 加快远程链接速度,可选,但是建议做
sed -ri '/#UseDNS yes/c UseDNS no' /etc/ssh/sshd_config

systemctl restart sshd

11. 在管理节点添加hosts解析,地址为public_addr

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. 在管理节点制作密钥登陆所有其他节点

1. 制作秘钥对
ssh-keygen		

2. 在管理节点编写脚本文件,注意所有的root密码均为123
yum -y install expect 		

vim ssh_id
#!/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 \"123\r\";exp_continue} } 
"
done

3. 执行脚本文件
bash ssh_id

13. 在管理节点把/etc/hosts文件发给其他节点

1. 在管理节点编写脚本文件,/etc/hosts文件发给其他节点
vim hosts.sh
#!/bin/bash
for i in 'mon01' 'mon02' 'mon03' 'osd01' 'osd02' 'osd03'
do
 scp /etc/hosts root@$i:/etc/hosts
done

2. 执行脚本文件
bash hosts.sh

14. 配置ntp服务,保证集群服务器时间统一

  • 统一时间非常重要,必须要做,统一时间用的是utp协议
  • chrony服务端和客户端配置完成后,重启chronyd服务即可快速完成时间同步,在这之后就不要再手动去修改时间了,一切让时间服务器自己去同步。

chrony服务端:管理端(admin) 节点

1. 安装chrony服务
yum -y install chrony

2. 修改服务端配置文件,同步时间到阿里云
mv /etc/chrony.conf /etc/chrony.conf.bak 			 备份chrony时间同步的配置文件

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					 # 无论是谁,能ping同本机都可以根本机的时间进行同步
local stratum 10
keyfile /etc/chrony.keys
logdir /var/log/chrony
stratumweight 0.05
noclientlog
logchange 0.5
EOF

3. 启动chronyd服务端
systemctl restart chronyd.service					 重启chrony时间同步服务	
systemctl enable chronyd.service					 设置服务为开启自启
systemctl status chronyd.service					 查看chrony时间同步服务当前状态

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

1. 安装chrony服务
yum -y install chrony

2. 修改客户端配置文件,同步时间到管理端(admin)节点
mv /etc/chrony.conf /etc/chrony.conf.bak 			 备份chrony时间同步的配置文件

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. 启动chrony服务
systemctl restart chronyd.service					 重启chrony时间同步服务	
systemctl enable chronyd.service					 设置服务为开启自启
systemctl status chronyd.service					 查看chrony时间同步服务当前状态

4. 查看客户端当前的时间源
chronyc sources -vchronyc sources -v				 查看客户端当前的时间源
# 210 Number of sources = 1
# MS Name/IP address         Stratum Poll Reach LastRx Last sample               
# ===============================================================================
# ^* admin                         3   8   377   239   -450ns[ -786ns] +/-   19ms

部署Ceph存储

1. 创建工作目录

  • 为所有节点都创建一个ceph工作目录,后续的工作都在该目录下进行,在管理节点运行下述命令
1. 在管理节点编写脚本文件
vim ceph.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

2. 执行脚本文件
bash ceph.sh

2. 在管理节点安装并配置ceph-deploy,这个命令可以远程部署其他节点的ceph软件

1. 在管理节点安装并配置ceph-depoly,/etc/ceph目录下面进行 
cd /etc/ceph/
yum -y install ceph-deploy

2. ceph-deploy 2.0.1默认部署的是mimic版本的ceph源,我们需要将ceph-deploy的源修改成luminous版本,在管理节点运行下述命令
cat >> /etc/profile << EOF
export CEPH_DEPLOY_REPO_URL=http://download.ceph.com/rpm-luminous/el7/		# 将ceph-deploy的源修改成luminous版本
export CEPH_DEPLOY_GPG_URL=https://download.ceph.com/keys/release.asc		# 添加pgpcheck认证
EOF

source /etc/profile			# 执行/etc/profile文件中的命令

3. 在管理节点为其他节点安装ceph软件

  • 所有的主机都接入了管理网络,我们先通过管理网络部署完毕集群,部署成功后再修改ceph.conf配置文件指定的public_addr网络与cluster_addr网络,然后推送给所有节点,重启服务即可。
  • 注意:使用ceph-deploy安装时会默认会先执行yum clean all命令,所以在ceph-depoly install执行前将缓存的rpm包备份好!!!
1. 备份本机之前已经缓存好的yum软件包
mkdir /back/
find /soft/ -name "*.rpm" -exec cp -r {} /back/ \;

2. 在管理节点为其他节点安装ceph软件包
cd /etc/ceph
ceph-deploy install mon0{1..3} osd0{1..3} 			# 安装软件包和依赖包
ceph-deploy install admin						# admin节点安装ceph软件,可以充当客户端做测试

- ceph-deploy install本质就是在执行
# yum clean all												 	1.清空yum缓存
# yum -y install yum-plugin-priorities						 	2.安装yum插件和压缩包
# yum -y -q install ceph ceph-release ceph-common ceph-radosgw		 3.安装ceph软件

4. 初始化集群

  • 在管理节点运行下述命令,告诉ceph-depoly哪些是监控节点,命令成功后会在/etc/ceph下生成ceph.confceph.logceph.mon.keyring文件。
1. 在管理节点生成监控节点的配置文件,日志文件,密钥环文件
cd /etc/ceph
ceph-deploy new mon01 mon02 mon03			# 生成monitor节点的配置文件,日志文件,密钥环文件

5. 配置初始 monitor(s)、并收集所有密钥

  • 在管理节点运行下述命令
1. 创建监控节点
cd /etc/ceph							# 需要在工作目录下检索密钥环文件
ceph-deploy mon create mon01 mon02 mon03				# 创建监控节点,监控节点为:mon01 mon02 mon03(默认会把在监控节点的配置文件从管理端推送给monitor节点的服务器, 并且默认在每一个监控节点启动服务)
ceph-deploy --overwrite-conf mon create-initial			# 把监控节点的配置文件从管理端推送到每一个监控节点
ceph-deploy gatherkeys mon01 							# 获取mon01的密钥环文件

6. 部署能够管理ceph集群的节点

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

7. 部署并激活osd节点

  • 因为我们的例子中,每一个osd节点三块机械盘当数据盘,三块固态盘每块分别用做一个数据盘的–block-db(日志信息)和–block-wal(元数据信息)。
  机械盘				|			  固态盘
/dev/sdb			|			/dev/sde
/dev/sdc			|			/dev/sdf
/dev/sdd			|			/dev/sdg	
  • 在所有的osd服务器节点上对模拟的固态盘进行分区,执行脚本文件
1. 在三个osd节点上创建分区脚本文件
vim osd.sh 
#!/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

2. 重启分区脚本文件
bash osd.sh 
  • 在管理节点执行下述脚本,部署并激活osd01、osd02、osd03上的所有osd节点。
1. 在管理端创建osd节点的脚本文件
vim osd_daemon.sh
#!/bin/bash
cd /etc/ceph
for i in `seq 1 3`			# `seq 1 3`为1、2、3
do
 ceph-deploy --overwrite-conf osd create osd0${i} --data /dev/sdb --block-db /dev/sde1 --block-wal /dev/sde2
 # 	创建osd1、2、3节点,sdb对应两个分区sde1和sde2
 ceph-deploy --overwrite-conf osd create osd0${i} --data /dev/sdc --block-db /dev/sdf1 --block-wal /dev/sdf2
 # 	创建osd1、2、3节点,sdc对应两个分区sdf1和sdf2
 ceph-deploy --overwrite-conf osd create osd0${i} --data /dev/sdd --block-db /dev/sdg1 --block-wal /dev/sdg2
 #  创建osd1、2、3节点,sdd对应两个分区sdg1和sdg2
done

2. 在管理端执行osd节点的脚本文件
bash osd_daemon.sh

查看ceph状态,开启图形化界面

- 安装web图形化界面查看ceph状态,默认端口7000
1. 在管理节点执行下述命令,把mon01做成mgr节点
ceph-deploy mgr create mon01

2. 在mon01节点执行
ceph mgr module enable dashboard

- 测试
浏览器输入192.168.70.4:7000,可查看图形化界面


ceph -s						查看监控状态
#  cluster:
#    id:     f5f99a03-8e21-41e6-8ccd-4c2dc4bd40c4
#    health: HEALTH_OK
 
#  services:
#    mon: 3 daemons, quorum mon01,mon02,mon03
#    mgr: mon01(active)
#    osd: 9 osds: 9 up, 9 in
 
#  data:
#    pools:   0 pools, 0 pgs
#    objects: 0 objects, 0B
#    usage:   9.04GiB used, 171GiB / 180GiB avail
#    pgs:  

将本地缓存的rpm包打包成自己的源

  • 这一步,主要是为了方便我们以后部署ceph,就不需要去网站找安装包了。
1. 除了admin管理节点以外,其他所有机器都执行
mkdir /abc/
find /soft/ -name "*.rpm" -exec cp -r {} /abc/ \;

2. 将所有节点的rpm包都汇总到admin管理节点的/abc/目录下
mkdir /abc/
scp -r root@mon01:/abc/* /abc/
scp -r root@mon02:/abc/* /abc/
scp -r root@mon03:/abc/* /abc/
scp -r root@osd01:/abc/* /abc/
scp -r root@osd02:/abc/* /abc/
scp -r root@osd03:/abc/* /abc/

3. 将admin管理节点/abc目录下所有汇总的rpm包都拷贝到本地的/bak目录下  
cp /abc/* /bak/
mv /bak/ /ceph-luminous/

4. 制作yum源
yun -y install createrepo			# 下载制作依赖关系的yum源工具
createrepo /ceph-luminous/
# 打开/ceph-luminous/,会生成一个repodata的目录

5./ceph-luminous目录中所有的rpm包进行压缩
tar -zcf ceph-luminous.tar.gz /ceph-luminous/

部署过程中常见的错误

  • 我们在执行脚本文件bash osd_daemon.sh,部署osd节点的时候。如果报错了,那么我们需要先进行磁盘清理,在重新部署osd节点。如下所示 :
1. 切换到osd节点的服务器,查看当前osd节点的部署情况
df -h 				# 查看当前osd节点的挂载使用情况(osd daemon ----> lvm -----> 裸盘)
lsblk				# 查看osd节点的磁盘分区

2. 停止osd节点的所有服务
systemctl stop ceph-osd@0
systemctl stop ceph-osd@1
systemctl stop ceph-osd@2

3. 卸载osd节点的数据盘
umount /var/lib/ceph/osd/ceph-0
umount /var/lib/ceph/osd/ceph-1
umount /var/lib/ceph/osd/ceph-2

4. 删除vg卷组
vgs					查看卷组信息	
# VG                                        #PV #LV #SN Attr   VSize   VFree
#  centos                                      1   2   0 wz--n- <19.00g    0 
#  ceph-1b334040-f508-4887-9f11-c7b0ad4f1025   1   1   0 wz--n- <20.00g    0 
#  ceph-33594263-78cd-41e4-b844-9b33eeb03876   1   1   0 wz--n- <20.00g    0 
#  ceph-4829e4fe-f5e0-477a-bc04-e1af93e13a82   1   1   0 wz--n- <20.00g    0 

vgremove 1b334040-f508-4887-9f11-c7b0ad4f1025			卸载卷组里面的裸盘
vgremove 33594263-78cd-41e4-b844-9b33eeb03876			卸载卷组里面的裸盘
vgremove 4829e4fe-f5e0-477a-bc04-e1af93e13a82			卸载卷组里面的裸盘

5. 删除pv物理卷
pvs			查看物理卷
#   PV         VG                                        Fmt  Attr PSize   PFree
#  /dev/sda2  centos                                    lvm2 a--  <19.00g    0 
#  /dev/sdb   ceph-33594263-78cd-41e4-b844-9b33eeb03876 lvm2 a--  <20.00g    0 
#  /dev/sdc   ceph-4829e4fe-f5e0-477a-bc04-e1af93e13a82 lvm2 a--  <20.00g    0 
#  /dev/sdd   ceph-1b334040-f508-4887-9f11-c7b0ad4f1025 lvm2 a--  <20.00g    0 

pvremove /dev/sdb						卸载物理卷
pvremove /dev/sdc						卸载物理卷
pvremove /dev/sdb						卸载物理卷

6. 在管理服务器(admin)上执行清理磁盘的任务
ceph-deploy disk zap osd01 /dev/sdb			# osd02、osd03执行相同操作
ceph-deploy disk zap osd01 /dev/sdc			# osd02、osd03执行相同操作
ceph-deploy disk zap osd01 /dev/sdd			# osd02、osd03执行相同操作
ceph-deploy disk zap osd01 /dev/sde			# osd02、osd03执行相同操作
ceph-deploy disk zap osd01 /dev/sdf			# osd02、osd03执行相同操作
ceph-deploy disk zap osd01 /dev/sdg			# osd02、osd03执行相同操作

7. 在osd服务器上重新分区
bash osd.sh 

8. 在admin服务器上重新创建osd节点
bash osd_daemon.sh
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值