Ceph Hammer版(0.94.10)手动部署for CentOS 7.x

--lin.wang 20190310

环境有三个节点node-1,node-2,node-3,每个节点三个ssd盘作为osd

1、添加yum源ceph、base、epel

2、所有节点添加互信如:root用户,及hosts(/etc/hosts)列表

3、/etc/ssh/ssh_config中: # StrictHostKeyChecking ask 注释去掉值改成no

4、关闭firewalld、selinux,或者开放相应端口: mon 6789、osd 6800-8100

5、配置时钟同步ntp

6、每个节点安装ceph包,yum install ceph -y


mon部署,7-10在node-1执行

7、uuidgen生一个uuid,用作fsid

8、切换到/etc/ceph目录下,创建ceph.conf,编写配置文件,如下

[global]
fsid = 4f41a244-032c-4d85-b3ff-7cefb2d1ed16
mon_initial_members = node-1,node-2,node-3
mon_host = 192.168.122.94,192.168.122.95,192.168.122.96
public_network = 192.168.122.0/24
cluster_network = 192.168.201.0/24
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
osd_journal_size = 1024
filestore_xattr_use_omap = true
osd_pool_default_size = 3 # Write an object n times.
osd_pool_default_min_size = 1 # Allow writing n copy in a degraded state.
osd_pool_default_pg_num = 128
osd_pool_default_pgp_num = 128
osd_crush_chooseleaf_type = 1

9、

创建monitor的key用于多个monitor间通信,保存在/tmp/ceph.mon.keyring

ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'

生成管理用户client.admin及其key,保存在/etc/ceph/ceph.client.admin.keyring

ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --set-uid=0 --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow'
#key文件命令规则:{cluster name}-{user-name}.keyring

添加client.admin的key到ceph.mon.keyring文件

ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring

10、创建monitor map

#默认的monitor port是6789
monmaptool --create --add node-1 192.168.122.94 --add node-2 192.168.122.95 --add node-3 192.168.122.96 --fsid 4f41a244-032c-4d85-b3ff-7cefb2d1ed16 /tmp/monmap

monmaptool --print /tmp/monmap可以查看生成的monmap

ceph auth get mon. 可以获取monmap

可以停止mon服务后使用如下方法导出monmap

ceph-mon -i hostname --extract-monmap /tmp/monmap 从当前节点的/var/lib/ceph/mon/​hostname​ 导出monmap

注入monmap

停止所有节点mon服务

ceph-mon -i mon-id --inject-monmap /tmp/monmap

启动mon服务

11、在每个mon节点上分别创建mon的目录

sudo mkdir /var/lib/ceph/mon/{cluster-name}-{hostname}

​ node-1> mkdir /var/lib/ceph/mon/ceph-node-1

​ node-2> mkdir /var/lib/ceph/mon/ceph-node-2

​ node-3> mkdir /var/lib/ceph/mon/ceph-node-3

12、初始化monitor

将node-1的

/tmp/monmoap、/tmp/ceph.mon.keyring、/etc/ceph/ceph.conf、/etc/ceph/ceph.client.admin.keyring

部署完毕后,/tmp下的这两个文件可以删除

复制到node-2和node-3的对应目录

ceph-mon [--cluster {cluster-name}] --mkfs -i {hostname} --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring

node-1> ceph-mon --mkfs -i node-1 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring

node-2> ceph-mon --mkfs -i node-2 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring

node-3> ceph-mon --mkfs -i node-3 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring

此时在每个节点/var/lib/ceph/mon/{cluster}-{hostname}目录下生成了store.db和keyring

13、 在每个节点的mon目录下,创建两个文件:

/var/lib/ceph/mon/{cluster}-{hostname}/{done,sysvinit}

​ node-1> touch /var/lib/ceph/mon/ceph-node-1/{done,sysvinit}

​ node-2> touch /var/lib/ceph/mon/ceph-node-2/{done,sysvinit}

​ node-3> touch /var/lib/ceph/mon/ceph-node-3/{done,sysvinit}

其中done文件表示monitor已经创建完成,可以启动使用了。

缺少sysvinit会报错。

老版本要求创建upstart已自动启动,当前版本创建后会起不来。

14、启动monitor服务: 每个mon节点,/etc/init.d/ceph start mon

15、开机自启动,chkconfig ceph on


osd部署

16、创建osd idceph osd create

本次有9个osd,因此创建9个即0-8: for i in $(seq 0 8) ;do ceph osd create;done

新版本支持指定osd id,当前版本不支持

创建完成后,可以通过ceph osd tree看到所有osd处于down和没有crush weight的状态

[root@ceph-1 ~]# ceph osd tree

ID WEIGHT TYPE NAME UP/DOWN REWEIGHT PRIMARY-AFFINITY

-1 0 root default

0 0 osd.0 down 0 1.00000

1 0 osd.1 down 0 1.00000

2 0 osd.2 down 0 1.00000

3 0 osd.3 down 0 1.00000

4 0 osd.4 down 0 1.00000

5 0 osd.5 down 0 1.00000

6 0 osd.6 down 0 1.00000

7 0 osd.7 down 0 1.00000

8 0 osd.8 down 0 1.00000

17、在每个节点创建osd的目录,mkdir /var/lib/ceph/osd/{cluster-name}-{osd-number}

​ node-1> mkdir /var/lib/ceph/osd/ceph-{0..2}

​ node-2> mkdir /var/lib/ceph/osd/ceph-{3..5}

​ node-3> mkdir /var/lib/ceph/osd/ceph-{6..8}

18、将所有osd磁盘分区并挂载

parted -s /dev/vdb mklabel gpt mkpart primary 2048s 100%

mkfs.xfs /dev/vdb1

[root@ceph-1 osd]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 7.1G 1.2G 6.0G 16% /
devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 2.0G 8.5M 2.0G 1% /run
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/vda1 1014M 125M 890M 13% /boot
tmpfs 396M 0 396M 0% /run/user/0
/dev/vdb1 10G 33M 10G 1% /var/lib/ceph/osd/ceph-0
/dev/vdc1 10G 33M 10G 1% /var/lib/ceph/osd/ceph-1
/dev/vdd1 10G 33M 10G 1% /var/lib/ceph/osd/ceph-2

19、各osd节点初始化osd目录

ceph-osd -i {osd-num} --mkfs --mkkey --osd-uuid [{uuid}]

ceph-osd -i 0 --mkfs --mkkey

--mkkey 选项运行 ceph-osd 之前,此目录必须是空的;另外,如果集群名字不是默认值,还要给 ceph-osd 指定 --cluster 选项。

20、注册osd的keyring.

ceph auth add osd.{osd-num} osd 'allow *' mon 'allow profile osd' -i /var/lib/ceph/osd/{cluster-name}-{osd-num}/keyring

ceph auth add osd.0 osd 'allow *' mon 'allow profile osd' -i /var/lib/ceph/osd/ceph-0/keyring

路径内 ceph-{osd-num} 里的 ceph 其含义为 $cluster-$id ,如果你的集群名字不是 ceph ,请指定自己的集群名

对于恢复已有的keyring,可以使用ceph auth import -i osd_path/keyring并auth caps赋权:ceph auth caps osd.0 osd 'allow *' mon 'allow profile osd'

21、将节点加入到crush map,并放置在default根root下。

ceph [--cluster {cluster-name}] osd crush add-bucket {hostname} host

ceph osd crush add-bucket node-1 host

ceph osd crush move node-1 root=default

move到root下前后crush 对比

之前

[root@ceph-1 osd]# ceph osd tree

ID WEIGHT TYPE NAME UP/DOWN REWEIGHT PRIMARY-AFFINITY

-2 0 host node-1

-1 0 root default

之后

[root@ceph-1 osd]# ceph osd tree

ID WEIGHT TYPE NAME UP/DOWN REWEIGHT PRIMARY-AFFINITY

-1 0 root default

-2 0 host node-1

crush中没有删除bucket的命令,只能导出crushmap修改

先mkkey才能mova osd 到bucket下,否则mkkey会报错

22、在crushmap把osd添加到host下:

ceph [--cluster {cluster-name}] osd crush add {id-or-name} {weight} [{bucket-type}={bucket-name} ...]

ceph osd crush add osd.0 1.0 host=node-1

添加后,则osd属于host下,启动服务即可接收数据。加入之前和之后对比:

之前

[root@ceph-1 osd]# ceph osd tree

ID WEIGHT TYPE NAME UP/DOWN REWEIGHT PRIMARY-AFFINITY

-1 0 root default

-2 0 host node-1

0 0 osd.0 down 0 1.00000

1 0 osd.1 down 0 1.00000

2 0 osd.2 down 0 1.00000

之后

[root@ceph-1 osd]# ceph osd tree

ID WEIGHT TYPE NAME UP/DOWN REWEIGHT PRIMARY-AFFINITY

-1 3.00000 root default

-2 3.00000 host node-1

0 1.00000 osd.0 down 0 1.00000

1 1.00000 osd.1 down 0 1.00000

2 1.00000 osd.2 down 0 1.00000

23、给osd创建sysvinit并启动osd服务

创建sysvinit,在osd的目录下 touch /var/lib/ceph/osd/{cluster-name}-{osd-num}/sysvinit

touch /var/lib/ceph/osd/ceph-0/sysvinit

24、添加journal

#清除磁盘所有分区(重新添加时需要)
#sgdisk --zap-all --clear --mbrtogpt /dev/vdf

Journal大小的选择尊循下面的规则:

osd journal size = {2 * (expected throughput * filestore_max_sync_interval)}

filestore_max_sync_interval为ceph配置,可以在ceph的config中获取,默认为5s

即osd journal的大小应该设置为(磁盘的带宽 * 同步时间) 的2倍。

25、给osd和journal打标签

数据盘标签

sgdisk --typecode=1:4fbd7e29-9d25-41b8-afd0-062c0ceff05d /dev/sdx

日志盘标签

sgdisk --typecode=1:45b0969e-9b03-4f30-b4c6-b4b80ceff106 /dev/sdx

注:对所有日志盘和数据盘执行此操作,日志盘分区与数据盘不同 typecode = 1 代表

第一个分区

Other TAG

sgdisk --typecode=1:4fbd7e29-9d25-41b8-afd0-062c0ceff0f9 -- /dev/sdx

删除旧的journal,把ssd分区的uuid链接到osd目录为journal,并把uuid写入journal_uuid文件

并执行

ceph-osd -i osd_numer --mkjournal

26、在osd所在节点启动osd的服务,将osd状态变为up

service ceph start osd

osd服务启动后,会自动up和in到集群。

依次把所有osd节点的osd完成部署和启动则集群部署完成

osd的服务部署有精简方法:

  1. 准备: ceph-disk prepare --cluster {cluster-name} --cluster-uuid {uuid} --fs-type {ext4|xfs|btrfs} {data-path} [{journal-path}]
  2. 激活: ceph-disk activate {data-path} [--activate-key {path}]

注: 如果你的 Ceph 节点上没有 /var/lib/ceph/bootstrap-osd/{cluster}.keyring ,那么应该外加 --activate-key参数。

osd的自动启动是udev的规则控制,所以需要给osd用sgdisk打上标签

规则

/usr/lib/udev/rules.d/95-ceph-osd.rules

/usr/lib/udev/rules.d/60-ceph-by-parttypeuuid.rules

ceph hammer 0.94.10手动部署方法Ceph Hammer版(0.94.10)手动部署for CentOS 7.x的更多相关文章

  1. Hadoop 学习笔记 (九) hadoop2.2.0 生产环境部署 HDFS HA部署方法

    step1:将安装包hadoop-2.2.0.tar.gz存放到某一个目录下,并解压 step2:修改解压后的目录中的文件夹/etc/hadoop下的xml配置文件(如果文件不存在,则自己创建) 包括 ...

  2. hadoop入门(3)——hadoop2.0理论基础:安装部署方法

    一.hadoop2.0安装部署流程         1.自动安装部署:Ambari.Minos(小米).Cloudera Manager(收费)         2.使用RPM包安装部署:Apache ...

  3. quartz2.3.0(九)job任务监听器,监听任务执行前、后、取消手动处理方法

    job1任务类 package org.quartz.examples.example9; import java.util.Date; import org.quartz.Job; import o ...

  4. iis支持asp.net4.0的注册命令使用方法及部署网站注意事项

    如果没有按照正常的先装iis后装.net的顺序,可以使用以下命令重新注册一下,这样iis就可以支持asp.net 4.0了   32位的Windows: 1. 运行->cmd,打开窗口时请以管理 ...

  5. 理解 OpenStack + Ceph (7): Ceph 的基本操作和常见故障排除方法

    本系列文章会深入研究 Ceph 以及 Ceph 和 OpenStack 的集成: (1)安装和部署 (2)Ceph RBD 接口和工具 (3)Ceph 物理和逻辑结构 (4)Ceph 的基础数据结构 ...

  6. ubuntu12.04+hadoop2.2.0+zookeeper3.4.5+hbase0.96.2+hive0.13.1伪分布式环境部署

    目录: 一.hadoop2.2.0.zookeeper3.4.5.hbase0.96.2.hive0.13.1都是什么? 二.这些软件在哪里下载? 三.如何安装 1.安装JDK 2.用parallel ...

  7. Effective Java 第三版——10. 重写equals方法时遵守通用约定

    Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...

  8. HHvm建站环境搭建方法:Nginx,Mariadb,hhvm及lnmp/lamp安装部署

    HHVM起源于Facebook公司,是一个开源的PHP虚拟机,使用JIT的编译方式以及其他技术,让PHP代码的执行性能大幅提升.HHVM提升PHP性能的途径,采用的方式就是替代Zend引擎来生成和执行 ...

  9. Harbor HA部署-使用Ceph RADOS后端

    1. 前言 Harbor 1.4.0版本开始提供了HA部署方式,和非HA的主要区别就是把有状态的服务分离出来,使用外部集群,而不是运行在本地的容器上.而无状态的服务则可以部署在多个节点上,通过配置上层 ...

随机推荐

  1. Celery

    在程序的运行过程中,我们经常会碰到一些耗时耗资源的操作,为了避免它们阻塞主程序的运行,我们经常会采用多线程或异步任务.比如,在 Web 开发中,对新用户的注册,我们通常会给他发一封激活邮件,而发邮件是 ...

  2. 第四十四篇--做一个简单的QQ登录界面

    功能:输入用户名和密码,正确,显示登录成功,为空的话,提示用户名和密码不能为空,还有记住密码功能. MainActivity.java package com.aimee.android.play.q ...

  3. JS设置Cookie过期时间

    //JS操作cookies方法! //写cookies function setCookie(name,value) { var Days = 30; var exp = new Date(); ex ...

  4. Tensorflow计算正确率、精确率、召回率

    二分类模型的评价指标 https://www.cnblogs.com/xiaoniu-666/p/10511694.html 参考tf的方法 predictions = tf.argmax(predi ...

  5. jmeter中的参数化

    1.那些场景需要参数化? 1.登陆认证信息 2.一些和时间相关的,违反时间约束的[时间点和当前时间不一致的情况等等] 3.一些受其他字段约束的[例如字段的一些限制条件] 4.一些来自于其他数据源[例如 ...

  6. 文件上传(StringMVC)

    我们经常会使用的一个功能是文件下载,既然有文件下载就会有文件上传,下面我们来看一下文件上传是如何实现的 首先准备好一个页面 jsp <style type="text/css" ...

  7. ztree树应用

    <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ZtreeListVi ...

  8. 堆,set,优先队列

    当我们需要高效的完成以下操作时: 1.插入一个元素 2.取得最小(最大)的数值,并且删除 能够完成这种操作的数据结构叫做优先队列 而能够使用二叉树,完成这种操作的数据结构叫做堆(二叉堆) 堆与优先队列 ...

  9. git本机服务器配置(二):TortoiseGit的安装

    1. 下载TortoiseGit https://tortoisegit.org/ 1.1 下载安装包 下载对应安装包,如果不知道自己该下载哪个,那就下载32位的. 1.2 下载语言包 下载和安装包相 ...

  10. Q - N! HDU - 1042

    使用java还不熟练,错误在于读入.应用in.hasNext() 代码 import java.text.ParseException; import java.text.SimpleDateForm ...