当前位置: 首页 > news >正文

ceph 手工部署集群

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

环境:ubuntu-server 16.04,两台arm服务器 分别为node1和node2,node1和node2分别安装monitor和3个osd,在node1上部署MDS,ceph

一、准备工作

systemctl stop ufw     #禁用防火墙

systemctl disable ufw    #禁止防火墙开机启动

vim /etc/hosts            #修改主机名字(每台服务器都要修改)我的node2节点的文件如下:

root@node2:/var/lib/ceph/osd# cat /etc/hosts
127.0.0.1    localhost
10.33.0.37    node2
10.33.0.13    node1

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

 

vim /etc/hostname      #修改主机名字

二、安装NTP服务并配置NTP服务,确保两个mon节点时间一致。

  .......略

三、部署mon

1)在node1节点上,执行如下

1、uuidgen  #生成唯一的uuid

2、vim /etc/ceph/ceph.conf    #创建ceph.conf文件,我的配置文件如下:

root@bogon:~# cat /etc/ceph/ceph.conf
[global]
fsid = c37ee56f-e925-4c9b-80ba-c4b0625fde93
mon initial members = node1
mon host = 10.33.0.13
public network = 10.33.0.0/16          
cluster network = 192.168.3.0/24
auth cluster required = cephx
auth service required = cephx
auth client required = cephx
osd pool default size = 2              #两个副本

3、ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *' #为监控节点创建管理密钥

4、ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow'   #为ceph amin用户创建管理集群的密钥并赋予访问权限

5、ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring     #添加client.admin key到 ceph.mon.keyring

6、 mkdir -p /var/lib/ceph/mon/ceph-node1    #为node1节点上的mon创建数据目录

7、在node1节点上初始化mon节点,执行下面的命令

    ceph-mon --mkfs -i node1 --keyring /tmp/ceph.mon.keyring

8、为了防止重新被安装创建一个空的done文件

touch /var/lib/ceph/mon/ceph-node1/done

9、创建一个空的初始化文件

touch /var/lib/ceph/mon/ceph-node1/upstart

10、启动ceph进程

(1)ceph-mon -i node1      #用命令方式启动,也可以用脚本方式启动,目前我还没实现脚本方式启动,后续会更新。

(2)脚本方式启动

systemctl enable ceph-mon.target     #使能mon的target

cd /etc/systemd/system/multi-user.target.wants

ln -s /lib/systemd/system/ceph-mon@.service ./ceph-mon@node1.service              #建立启动配置文件

systemctl start ceph-mon@node1.service       #启动node1节点上的mon进程

vim /etc/ceph/ceph.conf       #修改ceph的配置文件添加osd_crush_update_on_start = false选项

vim /lib/systemd/system/ceph-mon@.service   #修改启动配置文件把setusr 修改成想用的用户名

 

11、 mkdir -p /var/lib/ceph/bootstrap-osd/

      ceph auth get-or-create client.bootstrap-osd mon 'allow profile bootstrap-osd'

      ceph auth get client.bootstrap-osd -o /var/lib/ceph/bootstrap-osd/ceph.keyring    # 在node1创建一个boot引导启动osd的key

2)在node2节点上部署第二个mon

1、复制node1节点的/etc/ceph目录到node2

scp /etc/ceph/* node2:/etc/ceph/

2、在node2节点上新建一个/var/lib/ceph/bootstrap-osd/目录

mkdir /var/lib/ceph/bootstrap-osd/

3、复制node1节点上的/var/lib/ceph/bootstrap-osd/ceph.keyring文件到node2

scp /var/lib/ceph/bootstrap-osd/ceph.keyring node2:/var/lib/ceph/bootstrap-osd/

4、复制node1节点上的/tmp/ceph.mon.keyring

scp /tmp/ceph.mon.keyring node2:/tmp/

5、在node2节点上建立一个/var/lib/ceph/mon/ceph-node2目录

mkdir -p /var/lib/ceph/mon/ceph-node2

6、在node2节点上初始化mon节点,执行下面的命令

ceph-mon --mkfs -i node2  --keyring /tmp/ceph.mon.keyring

7、为了防止重新被安装创建一个空的done文件

touch /var/lib/ceph/mon/ceph-node2/done

8、创建一个空的初始化文件

touch /var/lib/ceph/mon/ceph-node2/upstart

9、启动ceph进程

ceph-mon -i node2

10、查看集群状态

ceph -s    #现在由于没有osd集群状态是不可用的

四、添加osd节点

在node1节点添加3个osd,在node2节点添加3个osd

1)node1节点

1、创建一个OSD,生成一个osd number

ceph osd create 

输出0

2、为osd节点创建一个osd目录

mkdir -p /var/lib/ceph/osd/ceph-0

3、格式化已准备好的osd硬盘(格式化为xfs格式)

mkfs.xfs -f /dev/sdb

4、挂在目录

mount -o user_xattr /dev/sdb /var/lib/ceph/osd/ceph-0

把挂载信息写入分区表

5、初始化osd数据目录

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

6、注册osd的认证密钥

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

7、为此osd节点创建一个crush map

ceph osd crush add-bucket node1 host

8、把node1 bucket 移到 root bucket下

ceph osd crush move node1 root=default

9、给node1 bucket 增加一个设备

ceph osd crush add osd.0 1.0 host=node1

10、在node1节点中创建启动文件

touch /var/lib/ceph/osd/ceph-0/upstart
11、启动osd进程

(1)命令行方式启动

ceph-osd -i 0     #命令方式启动

(2)脚本方式启动

systemctl enable ceph-osd.target         #使能ceph-osd.target

cd /etc/systemd/system/multi-user.target.wants

ln -s /lib/systemd/system/ceph-osd@.service ./ceph-osd@0.service        #创建启动配置文件

systemctl start ceph-osd@0.service         #启动osd.0进程

vim /etc/ceph/ceph.conf       #修改ceph的配置文件添加osd_crush_update_on_start = false选项

vim /lib/systemd/system/ceph-mon@.service   #修改启动配置文件把setusr 修改成想用的用户名

11、在node1节点上依次执行上面的启动另外两个osd进程

note:由于在node1节点上创建第一个osd进程的时候,已经在crushmap中创建了node1 bucket 并移到了root bucket下所以在创建另外两个osd进程的时候不需要执行7、8步骤。

2)node2节点

1、在node2节点已经有ceph.conf和ceph.client.admin.keyring 文件所以不需要从node1节点拷贝。

2、创建一个OSD,生成一个osd number

ceph osd create

输出 1

3、为osd节点创建一个osd目录

mkdir -p /var/lib/ceph/osd/ceph-1

4、格式化已准备好的osd硬盘(格式化为xfs格式 )

mkfs.xfs -f /dev/sdb

5、 挂在目录

mount -o user_xattr /dev/sdb /var/lib/ceph/osd/ceph-1

把上面的挂载信息写入分区表

6、 初始化osd数据目录

ceph-osd -i 1 --mkfs --mkkey

7、 注册osd的认证密钥

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

8、为此osd节点创建一个crush map

ceph osd crush add-bucket node2 host

9、把node2 bucket 移到root bucket下

ceph osd crush move node2 root=default

10、在node2 bucket下添加osd设备

ceph osd crush add osd.1 1.0 host=node2

11、 创建一个初始化目录

touch /var/lib/ceph/osd/ceph-1/upstart

12、 启动osd进程

ceph-osd -i 1

13、在node2节点按照以上方法启动其余两个osd进程。

note:参照node1节点上的操作

五、添加mds服务

目前官网推荐jewel版的ceph集群中只部署一个active mds进程,以下只部署一个mds进程

1、为mds元数据服务器创建一个目录

mkdir -p /var/lib/ceph/mds/ceph-node1

2、 为bootstrap-mds客户端创建一个密钥

mkdir -p /var/lib/ceph/mds/bootstrap-mds

ceph-authtool --create-keyring /var/lib/ceph/bootstrap-mds/ceph.keyring --gen-key -n client.bootstrap-mds

3、 在ceph auth库中创建bootstrap-mds客户端,赋予权限添加之前创建的密钥

ceph auth add client.bootstrap-mds mon 'allow profile bootstrap-mds' -i /var/lib/ceph/bootstrap-mds/ceph.keyring

4、在root家目录里创建ceph.bootstrap-mds.keyring文件

touch /root/ceph.bootstrap-mds.keyring

5、把keyring /var/lib/ceph/bootstrap-mds/ceph.keyring里的密钥导入家目录下的ceph.bootstrap-mds.keyring文件里

ceph-authtool --import-keyring /var/lib/ceph/bootstrap-mds/ceph.keyring /root/ceph.bootstrap-mds.keyring

6、在ceph auth库中创建mds.node1用户,并赋予权限和创建密钥,密钥保存在/var/lib/ceph/mds/ceph-node1/keyring文件里

ceph --cluster ceph --name client.bootstrap-mds --keyring /var/lib/ceph/bootstrap-mds/ceph.keyring auth get-or-create mds.node1 osd 'allow rwx' mds 'allow' mon 'allow profile mds' -o /var/lib/ceph/mds/ceph-node1/keyring

7、为mds创建一个初始化文件用于启动使用(此文件为空文件)

touch /var/lib/ceph/mds/ceph-node1/upstart

8、为了防止重新被安装创建一个空的done文件

touch /var/lib/ceph/mds/ceph-node1/done

9、启动mds进程

ceph-mds -i node1   #命令方式启动mds进程

 

至此ceph一个简单的ceph集群部署完成

参考:http://boris05.blog.51cto.com/1073705/1439874

转载于:https://my.oschina.net/u/2326998/blog/805779

相关文章:

  • 转载:align
  • codewars020: The Clockwise Spiral 数字顺时针螺旋矩阵
  • Servlet引擎Jetty之入门1
  • PHP SPL中提供了SplFileInfo和SplFileObject两个类来处理文件操作。
  • pg_dump实例详解(备份postgresql和greenplum数据库)
  • GATK使用说明(一)
  • linux应用之apache的源码安装(centos)
  • linux sudo 命令
  • 客户端Socket
  • 一张图看懂开源许可协议,开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别...
  • 画风清奇!盘点各编程语言中有趣的开源项目!
  • 前端学HTTP之报文首部
  • 【干货分享】流程DEMO-制度发文和干部任免
  • [充电]多线程无锁编程--原子计数操作:__sync_fetch_and_add等12个操作
  • Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define ...
  • Google 是如何开发 Web 框架的
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • Android单元测试 - 几个重要问题
  • canvas 五子棋游戏
  • CSS实用技巧干货
  • Github访问慢解决办法
  • JDK 6和JDK 7中的substring()方法
  • nginx 负载服务器优化
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • python 学习笔记 - Queue Pipes,进程间通讯
  • Redash本地开发环境搭建
  • spring-boot List转Page
  • vagrant 添加本地 box 安装 laravel homestead
  • vue数据传递--我有特殊的实现技巧
  • Vue学习第二天
  • 解决iview多表头动态更改列元素发生的错误
  • 看域名解析域名安全对SEO的影响
  • 区块链共识机制优缺点对比都是什么
  • 使用agvtool更改app version/build
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • 转载:[译] 内容加速黑科技趣谈
  • Semaphore
  • Spring第一个helloWorld
  • 移动端高清、多屏适配方案
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • ​Spring Boot 分片上传文件
  • #mysql 8.0 踩坑日记
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (JS基础)String 类型
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (二)pulsar安装在独立的docker中,python测试
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (九)信息融合方式简介
  • (算法二)滑动窗口
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (小白学Java)Java简介和基本配置
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径