CEPH分布式存储

centos7.2部署CEPH分布式存储
 几台配置低的服务器倒下来了,正好需要搭建个平台。所以把所有资源整合了一下,每台服务器安装了esxi6.7和VCENTER后,发现启动了VSAN功能找不到注册码。没办只能是又换回了Esxi6.5,安装完成后发现6.5的Vsan不能用。先这样吧。6.5安装完成后,所有故障排错,然后正常启动。安装完所有服服务器后,又对所有服务器原有的硬盘打起了主意。想个办法吧。 原先可以用vsan现在查了一下分布式存储系统,打算用CEPH来利用剩余的资源。经过一段时间的学习和实践,把这个过程写下来,防止以后忘记。
第一步先准备好系统用的是Centos7.2 CentOS-7-x86_64-Everything-1511.iso这个安装光盘。完成后做硬盘的直通。然后设置IP和主机名为下表。
   IP                    主机名 
10.172.99.227  ceph227
10.172.99.228  ceph228
10.172.99.229  ceph229
10.172.99.230  ceph230
10.172.99.231  ceph231

为了安装方便,每台机器连接互联网,因为后期很多支持文件需要安装。不联网很麻烦。
我们此次以ceph131为管理端+OSD端,其它几个为OSD。
此次暂定ceph231为管理主机
以下安装过程部分引用自https://www.cnblogs.com/kevingrace/p/9141432.html
做过改动。

先按上表所示,每个节点绑定主机名映射
用putty软件登陆ceph231

vi /etc/hosts
用 ping -c 3 ceph227 测试一下各个主机是否能够连通
配置相互间的ssh信任关系
ssh-keygen -t rsa    #一路回车
cd .ssh/
ls
 cp id_rsa.pub authorized_keys
ssh ceph231
 在提示里输入yes回车
会要求输入密码,输入完后确认。
登陆成功后会显示
Last login: Tue Oct 22 12:31:34 2019 from IP
这时登陆成功。
输入exit登陆
提示登出
再测试一下是不是不需要密码了

用以下指令分别设置其它主机。
scp -r /root/.ssh/id_rsa.pub ceph228:/root/.ssh/authorized_keys
如果提示
scp: /root/.ssh/authorized_keys: No such file or directory
报错提示的话,是指ceph228上没有.ssh这个文件夹没有
ssh ceph228
输入密码后登陆
输入ssh 10.172.99.231
输入yes后按回车输入密码。
然后ls /root/.ssh
会列出一个文件。已经有了这个文件夹了。
exit
返回到ceph231的控制台
重复刚才的SCP命令
以下提示证明复制成功。
id_rsa.pub                                    100%  394   287.8KB/s   00:00
 
输入ssh ceph228 测试一下。成功。不需要输入密码就可以登陆了。原文的这里介绍的不对。按原文操作是不成功的。

同样重复设置5个节点,全部实现无密码登陆。
注: 上面的那个登陆建立.ssh文件夹的那一步,也可以偷懒直接用mkdir /root/.ssh来实现。
用下面的命令
scp -r /etc/hosts ceph230:/etc/
同步一下hosts文件

每个节点都要关闭防火墙和禁用selinux 
 
systemctl stop firewalld && systemctl disable firewalld && sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config && setenforce 0

如果有错误,可以分别执行每条语句来调试。

每个节点要确保时间上是一致的,这里要安装和启动NTP服务。
yum install ntp ntpdate ntp-doc -y && systemctl restart ntpd &&  systemctl status ntpd

下一步需要用到wget命令,这里先安装wget命令。
yum install wget -y
安装完成后,把默认的源备份下,
yum clean all && mkdir /mnt/bak && mv /etc/yum.repos.d/* /mnt/bak/

更新国内的新源:
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
vi /etc/yum.repos.d/ceph.repo 
 
[ceph]
name=ceph
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/
gpgcheck=0
priority =1
[ceph-noarch]
name=cephnoarch
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/noarch/
gpgcheck=0
priority =1
[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/SRPMS
gpgcheck=0
priority=1

源的准备工作做完后,准备磁盘。
fdisk -l
查看当前有多少磁盘如果磁盘较多可加入|more 参数
下面是我的所有节点的磁盘
ceph231: 
/dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf /dev/sdg
ceph228: ceph227: ceph229: ceph230:
/dev/sdb /dev/sdc /dev/sdd   
可以选择哪些加入,哪些不加入,必须是整盘占用。
选择好后,用下列命令格式化磁盘成xfs格式,把命令里的 /dev/vdb 换成相应的磁盘。
parted -s /dev/vdb mklabel gpt mkpart primary xfs 0% 100%
mkfs.xfs /dev/vdb -f
将命令一块执行比较省力
mkfs.xfs /dev/sdb -f && mkfs.xfs /dev/sdc -f &&  mkfs.xfs /dev/sdd -f
开始部署阶段:
在ceph231上操作
安装ceph-deploy
 yum update -y && sudo yum install ceph-deploy -y
创建集群目录:
pwd
查看一下当前目录,如果不是根目录就用cd / 切换到根目录
mkdir cephjq  
cd cephjq
 
创建集群(后面填写monit节点的主机名,这里monit节点和管理节点是同一台机器,即ceph231)
ceph-deploy new ceph231
安装完成用ls命令查看一下当前目录下的文件
ceph.conf  ceph-deploy-ceph.log  ceph.mon.keyring
会多出这三个文件。
vi ceph.conf 添加以下内容
public network = 10.172.99.231/24
osd pool default size = 3
开始安装ceph,这个时间有点长
ceph-deploy install ceph231 ceph230 ceph229 ceph228  ceph227
 后面是主机名,可以换成是你的。
安装完成后
输入ceph -v 
ceph version 10.2.11 (e4b061b47f07f583c92a050d9e84b1813a35671e)
输出版本号证明安装成功。不过版本不是最新的。
初始化monit监控节点,并收集所有密钥
ceph-deploy mon create-initial
ceph-deploy gatherkeys ceph231
 
添加OSD到集群
检查OSD节点上所有可用的磁盘
ceph-deploy disk list ceph231 ceph230 ceph229 ceph228  ceph227
      
使用zap选项删除所有osd节点上的分区,这一步比较麻烦。需 要手动输入
ceph-deploy disk zap ceph231:/dev/sdb  ceph231:/dev/sdc ceph231:/dev/sdd ceph231:/dev/sde ceph231:/dev/sdf ceph231:/dev/sdg ceph230:/dev/sdb ceph230:/dev/sdc ceph230:/dev/sde ceph229:/dev/sdb ceph229:/dev/sdc ceph229:/dev/sde ceph228:/dev/sdb ceph228:/dev/sdc ceph228:/dev/sde ceph227:/dev/sdb ceph227:/dev/sdc ceph227:/dev/sde 
 如果出错,可以再单独运行。
     
准备OSD(使用prepare命令)
ceph-deploy osd prepare ceph231: /dev/sdb  ceph231:/dev/sdc ceph231:/dev/sdd ceph231:/dev/sde ceph231:/dev/sdf ceph231:/dev/sdg ceph230:/dev/sdb ceph230:/dev/sdc ceph230:/dev/sde ceph229:/dev/sdb ceph229:/dev/sdc ceph229:/dev/sde ceph228:/dev/sdb ceph228:/dev/sdc ceph228:/dev/sde ceph227:/dev/sdb ceph227:/dev/sdc ceph227:/dev/sde
      
激活OSD(注意由于ceph对磁盘进行了分区,/dev/vdb磁盘分区为/dev/vdb1)
ceph-deploy osd activate ceph231:/dev/sdb1  ceph231:/dev/sdc1 ceph231:/dev/sdd1 ceph231:/dev/sde1 ceph231:/dev/sdf1 ceph231:/dev/sdg1 
需要每个磁盘都要设置。我用批量的设置老是出错。上面这几条命令,都是一条条的改的。
全部设置完成后用、
lsblk 查看一下是否OSD启动成功。

也可用以下ceph-deploy disk list ceph231 ceph230 ceph229 ceph228 ceph227
查看一下。
[ceph228][DEBUG ] /dev/sdc :
[ceph228][DEBUG ]  /dev/sdc2 ceph journal, for /dev/sdc1
[ceph228][DEBUG ]  /dev/sdc1 ceph data, active, cluster ceph, osd.13, journal /dev/sdc1
如果出现以上字样,证明已经成功了。 
 
用ceph-deploy把配置文件和admin密钥拷贝到管理节点和Ceph节点,这样你每次执行Ceph命令行时就无需指定monit节点地址
和ceph.client.admin.keyring了
ceph-deploy admin ceph231 ceph230 ceph229 ceph228 ceph227
     
修改密钥权限
chmod 644 /etc/ceph/ceph.client.admin.keyring
     
检查ceph状态
ceph health
HEALTH_OK
如果有错误可以自行百度。
我的就出现了
HEALTH_WARN too few PGs per OSD (21 < min 30)
错误,经查询是pg_num 和pgp_num设置有误
从网上找了一下计算公式。

One pool total PGs = (Total_number_of_OSD * 100) / max_replication_count
例如15个OSD,副本数为3的情况下,根据公式计算的结果应该为500,最接近512,所以需要设定该pool(volumes)的pg_num和pgp_num都为512
 
我的是18个OSD,5台主机,18*100 /5 等于360
  osd pool set rbd pgp_num 360
 osd pool set rbd pg_num 360
过一会儿查看
 ceph health
HEALTH_OK
好了。解决了。 
 


准备创建文件系统
在这里的步骤和原文会有所区别了。因为我最终是要用ISCSI来访问的,原文是通过挂载的方式。 
 
先查看管理节点状态,默认是没有管理节点的。
 ceph mds stat
e1:
  
创建管理节点(ceph231作为管理节点)。
需要注意:如果不创建mds管理节点,client客户端将不能正常挂载到ceph集群!!
pwd
 切换到cephjq文件夹
cd cephjq
ceph-deploy mds create ceph231


再次查看状态
ceph mds stat
e2:, 1 up:standby
已经正常启动中

安装ISCSI服务
mkdir iscsi
cd iscsi
wget http://apt-mirror.sepia.ceph.com/centos6-qemu-kvm/scsi-target-utils-1.0.38-48.bf6981.ceph.el6.x86_64.rpm
yum isntall scsi-target-utils-1.0.38-48.bf6981.ceph.el6.x86_64.rpm -y 
 
能tgt服务
systemctl enable tgtd.service
systemctl start tgtd.service
开启scsi-target-utils服务
service tgtd start 或 systemctl start tgtd
开机自启动scsi-target-utils服务
chkconfig tgtd on
 这里有时会提示没有chkconfig这个命令。可以用yum install chkconfig -y安装
查看scsi-target-utils是否启动
netstat -anltp|grep 3260
 验证tgt是否支持rbd
tgtadm --lld iscsi --mode system --op show | grep rbd
 
创建iscsi target

创建存储池和rbd镜像
ceph osd pool create iscsi-pool 512 512(在执行下一步之前,建议使用rbd ls -p iscsipool命令查看是否创建成功)
rbd create iscsi-pool/image01 --size 10240000  建立一个10T的空间
 

修改配置文件
vi /etc/tgt/targets.conf
添加如下配置
<target 10.172.99.231:iscsi>
    driver iscsi
    bs-type rbd
    backing-store iscsi-pool/image01
</target>

重启target服务
systemctl restart tgtd.service

查看创建的scsi target
tgtadm --lld iscsi --mode target --op show
可以看到创建的lun1表示成功

准备用客户端测试一下吧。


常用命令:
查看健康状态:
 ceph health
查看ceph osd运行状态
 ceph osd stat
     osdmap e19: 3 osds: 3 up, 3 in
            flags sortbitwise,require_jewel_osds
ceph -s
    cluster 33bfa421-8a3b-40fa-9f14-791efca9eb96
     health HEALTH_OK
     monmap e1: 1 mons at {ceph-admin=192.168.10.220:6789/0}
            election epoch 3, quorum 0 ceph-admin
     osdmap e14: 3 osds: 3 up, 3 in
            flags sortbitwise,require_jewel_osds
      pgmap v29: 64 pgs, 1 pools, 0 bytes data, 0 objects
            100 MB used, 45946 MB / 46046 MB avail
                  64 active+clean
 
查看osd的目录树
[cephuser@ceph-admin ~]$ ceph osd tree
ID WEIGHT  TYPE NAME           UP/DOWN REWEIGHT PRIMARY-AFFINITY
-1 0.04376 root default                                       
-2 0.01459     host ceph-node1                                
 0 0.01459         osd.0            up  1.00000          1.00000
-3 0.01459     host ceph-node2                                
 1 0.01459         osd.1            up  1.00000          1.00000
-4 0.01459     host ceph-node3                                
 2 0.01459         osd.2            up  1.00000          1.00000
   
查看monit监控节点的服务情况
[cephuser@ceph-admin cluster]$ sudo systemctl status ceph-mon@ceph-admin
[cephuser@ceph-admin cluster]$ ps -ef|grep ceph|grep 'cluster'
ceph     28190     1  0 11:44 ?        00:00:01 /usr/bin/ceph-mon -f --cluster ceph --id ceph-admin --setuser ceph --setgroup ceph
    
分别查看下ceph-node1、ceph-node2、ceph-node3三个节点的osd服务情况,发现已经在启动中。
[cephuser@ceph-node1 ~]$ sudo systemctl status ceph-osd@0.service         #启动是start、重启是restart
[cephuser@ceph-node1 ~]$ sudo ps -ef|grep ceph|grep "cluster"
ceph     28749     1  0 11:44 ?        00:00:00 /usr/bin/ceph-osd -f --cluster ceph --id 0 --setuser ceph --setgroup ceph
cephuser 29197 29051  0 11:54 pts/2    00:00:00 grep --color=auto cluster
  
[cephuser@ceph-node2 ~]$ sudo systemctl status ceph-osd@1.service
[cephuser@ceph-node2 ~]$ sudo ps -ef|grep ceph|grep "cluster"
ceph     28749     1  0 11:44 ?        00:00:00 /usr/bin/ceph-osd -f --cluster ceph --id 0 --setuser ceph --setgroup ceph
cephuser 29197 29051  0 11:54 pts/2    00:00:00 grep --color=auto cluster
  
[cephuser@ceph-node3 ~]$ sudo systemctl status ceph-osd@2.service
[cephuser@ceph-node3 ~]$ sudo ps -ef|grep ceph|grep "cluster"
ceph     28749     1  0 11:44 ?        00:00:00 /usr/bin/ceph-osd -f --cluster ceph --id 0 --setuser ceph --setgroup ceph
cephuser 29197 29051  0 11:54 pts/2    00:00:00 grep --color=auto cluster
————————————————
版权声明:本文为CSDN博主「litaoa」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/litaoa/article/details/103637052

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值