Ceph学习之路(三)Ceph luminous版本部署

1、配置ceph.repo并安装批量管理工具ceph-deploy

[[email protected] ~]# vim /etc/yum.repos.d/ceph.repo
[ceph]
name=Ceph packages for $basearch
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/$basearch
enabled=1
gpgcheck=1
priority=1
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc

[ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/noarch
enabled=1
gpgcheck=1
priority=1
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc

[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/SRPMS
enabled=0
gpgcheck=1
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
[[email protected]-node1 ~]# yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
[[email protected] ~]# yum makecache
[[email protected]-node1 ~]# yum update -y
[[email protected]-node1 ~]# yum install -y ceph-deploy
```

2、ceph的节点部署

(1)安装NTP 在所有 Ceph 节点上安装 NTP 服务(特别是 Ceph Monitor 节点),以免因时钟漂移导致故障

[[email protected] ~]# yum install -y ntp ntpdate ntp-doc
[[email protected]-node2 ~]# yum install -y ntp ntpdate ntp-doc
[[email protected]-node3 ~]# yum install -y ntp ntpdate ntp-doc

[[email protected]-node1 ~]# ntpdate ntp1.aliyun.com
31 Jul 03:43:04 ntpdate[973]: adjust time server 120.25.115.20 offset 0.001528 sec
[[email protected]-node1 ~]# hwclock
Tue 31 Jul 2018 03:44:55 AM EDT  -0.302897 seconds
[[email protected]-node1 ~]# crontab -e
*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com

确保在各 Ceph 节点上启动了 NTP 服务,并且要使用同一个 NTP 服务器

(2)安装SSH服务器并添加hosts解析

默认有ssh,可以省略
[[email protected]-node1 ~]# yum install openssh-server
[[email protected]-node2 ~]# yum install openssh-server
[[email protected]-node3 ~]# yum install openssh-server

确保所有 Ceph 节点上的 SSH 服务器都在运行。

[[email protected]-node1 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.56.11 ceph-node1
192.168.56.12 ceph-node2
192.168.56.13 ceph-node3

(3)允许无密码SSH登录

[email protected] ~]# ssh-keygen
[email protected]-node1 ~]# ssh-copy-id  [email protected]node1
[email protected]-node1 ~]# ssh-copy-id  [email protected]node2
[email protected]-node1 ~]# ssh-copy-id  [email protected]

推荐使用方式: 
修改 ceph-deploy 管理节点上的 ~/.ssh/config 文件,这样 ceph-deploy 就能用你所建的用户名登录 Ceph 节点了,而无需每次执行 ceph-deploy 都要指定 –username {username} 。这样做同时也简化了 ssh 和 scp 的用法。把 {username} 替换成你创建的用户名。

[[email protected] ~]# cat .ssh/config
Host node1
   Hostname ceph-node1
   User root
Host node2
   Hostname ceph-node2
   User root
Host node3
   Hostname ceph-node3
   User root
[[email protected]-node1 ~]# chmod 600 .ssh/config
[[email protected]-node1 ~]# systemctl restart sshd

(4)关闭Selinux

在 CentOS 和 RHEL 上, SELinux 默认为 Enforcing 开启状态。为简化安装,我们建议把 SELinux 设置为 Permissive 或者完全禁用,也就是在加固系统配置前先确保集群的安装、配置没问题。用下列命令把 SELinux 设置为 Permissive :

[[email protected] ~]# setenforce 0
[[email protected]-node2 ~]# setenforce 0
[[email protected]-node3 ~]# setenforce 0

要使 SELinux 配置永久生效(如果它的确是问题根源),需修改其配置文件 /etc/selinux/config 。

(5)关闭防火墙

[[email protected] ~]# systemctl stop firewalld.service
[[email protected]-node2 ~]# systemctl stop firewalld.service
[[email protected]-node3 ~]# systemctl stop firewalld.service
[[email protected]-node1 ~]# systemctl disable firewalld.service
[[email protected]-node2 ~]# systemctl disable firewalld.service
[[email protected]-node3 ~]# systemctl disable firewalld.service

(6)安装epel源和启用优先级

[[email protected] ~]# yum install -y epel-release
[[email protected]-node2 ~]# yum install -y epel-release
[[email protected]-node3 ~]# yum install -y epel-release
[[email protected]-node1 ~]# yum install -y yum-plugin-priorities
[[email protected]-node2 ~]# yum install -y yum-plugin-priorities
[[email protected]-node3 ~]# yum install -y yum-plugin-priorities

3、创建集群

创建一个 Ceph 存储集群,它有一个 Monitor 和两个 OSD 守护进程。一旦集群达到 active + clean 状态,再扩展它:增加第三个 OSD 、增加元数据服务器和两个 Ceph Monitors。在管理节点上创建一个目录,用于保存 ceph-deploy 生成的配置文件和密钥对。

(1)创建ceph工作目录并配置ceph.conf

[[email protected] ~]# mkdir /etc/ceph && cd /etc/ceph
[[email protected]-node1 ceph]# ceph-deploy new ceph-node1 #配置监控节点

ceph-deploynew子命令能够部署一个默认名称为ceph的新集群,并且它能生成集群配置文件和密钥文件。列出当前工作目录,你会看到ceph.confceph.mon.keyring文件。

[[email protected]node1 ceph]# vim ceph.conf
public network =192.168.56.0/24
[[email protected]-node1 ceph]# ll
total 20
-rw-r--r-- 1 root root   253 Jul 31 21:36 ceph.conf   #ceph的配置文件
-rw-r--r-- 1 root root 12261 Jul 31 21:36 ceph-deploy-ceph.log  #monitor的日志文件
-rw------- 1 root root    73 Jul 31 21:36 ceph.mon.keyring  #monitor的密钥环文件

遇到的问题:
[[email protected]-node1 ceph]# ceph-deploy new ceph-node1
Traceback (most recent call last):
  File "/usr/bin/ceph-deploy", line 18, in <module>
    from ceph_deploy.cli import main
  File "/usr/lib/python2.7/site-packages/ceph_deploy/cli.py", line 1, in <module>
    import pkg_resources
ImportError: No module named pkg_resources
解决方案:
[[email protected]-node1 ceph]# yum install -y python-setuptools

(2)管理节点和osd节点都需要安装ceph 集群

[[email protected] ceph]# ceph-deploy install ceph-node1 ceph-node2 ceph-node3

ceph-deploy工具包首先会安装Ceph luminous版本所有依赖包。命令成功完成后,检查所有节点上Ceph的版本和健康状态,如下所示:

[[email protected] ceph]# ceph --version
ceph version 12.2.7 (3ec878d1e53e1aeb47a9f619c49d9e7c0aa384d5) luminous (stable)
[[email protected]-node2 ~]#  ceph --version
ceph version 12.2.7 (3ec878d1e53e1aeb47a9f619c49d9e7c0aa384d5) luminous (stable)
[[email protected]-node3 ~]#  ceph --version
ceph version 12.2.7 (3ec878d1e53e1aeb47a9f619c49d9e7c0aa384d5) luminous (stable)

(3)配置MON初始化

ceph-node1上创建第一个Ceph monitor

[[email protected] ceph]# ceph-deploy mon create-initial        #配置初始 monitor(s)、并收集所有密钥
[[email protected]-node1 ceph]# ll      #完成上述操作后,当前目录里应该会出现这些密钥环
total 92
-rw------- 1 root root   113 Jul 31 21:48 ceph.bootstrap-mds.keyring
-rw------- 1 root root   113 Jul 31 21:48 ceph.bootstrap-mgr.keyring
-rw------- 1 root root   113 Jul 31 21:48 ceph.bootstrap-osd.keyring
-rw------- 1 root root   113 Jul 31 21:48 ceph.bootstrap-rgw.keyring
-rw------- 1 root root   151 Jul 31 21:48 ceph.client.admin.keyring

注意:只有在安装 Hammer 或更高版时才会创建 bootstrap-rgw 密钥环。

注意:如果此步失败并输出类似于如下信息 “Unable to find /etc/ceph/ceph.client.admin.keyring”,请确认ceph.conf中为monitor指定的IP是 Public IP,而不是 Private IP。查看集群的状态信息:

[[email protected] ceph]# ceph -s
  cluster:
    id:     c6165f5b-ada0-4035-9bab-1916b28ec92a
    health: HEALTH_OK

  services:
    mon: 1 daemons, quorum ceph-node1
    mgr: no daemons active
    osd: 0 osds: 0 up, 0 in

  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0 bytes
    usage:   0 kB used, 0 kB / 0 kB avail
    pgs:     

(5)开启监控模块

查看集群支持的模块

[[email protected]node1 ceph]# ceph mgr dump
[[email protected]-node1 ceph]# ceph mgr module enable dashboard   #启用dashboard模块

/etc/ceph/ceph.conf中添加

[mgr]
mgr modules = dashboard

设置dashboardip和端口

[[email protected] ceph]# ceph config-key put mgr/dashboard/server_addr 192.168.56.11
set mgr/dashboard/server_addr
[[email protected]-node1 ceph]# ceph config-key put mgr/dashboard/server_port 7000
set mgr/dashboard/server_port
[[email protected]-node1 ceph]# netstat -tulnp |grep 7000
tcp6       0      0 :::7000                 :::*                    LISTEN      13353/ceph-mgr 

访问:http://192.168.56.11:7000/

(5)在ceph-node1上创建OSD

[[email protected] ceph]# ceph-deploy disk zap ceph-node1 /dev/sdb

[[email protected]-node1 ceph]# ceph-deploy disk list ceph-node1    #列出ceph-node1上所有的可用磁盘
......
[ceph-node1][INFO  ] Running command: fdisk -l
[ceph-node1][INFO  ] Disk /dev/sdb: 1073 MB, 1073741824 bytes, 2097152 sectors
[ceph-node1][INFO  ] Disk /dev/sdc: 1073 MB, 1073741824 bytes, 2097152 sectors
[ceph-node1][INFO  ] Disk /dev/sdd: 1073 MB, 1073741824 bytes, 2097152 sectors
[ceph-node1][INFO  ] Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors

从输出中,慎重选择若干磁盘来创建Ceph OSD(除操作系统分区以外),并将它们分别命名为sdb、sdc和sdd。disk zap子命令会删除现有分区表和磁盘内容。运行此命令之前,确保你选择了正确的磁盘名称: 
osd create子命令首先会准备磁盘,即默认地先用xfs文件系统格式化磁盘,然后会激活磁盘的第一、二个分区,分别作为数据分区和日志分区:

[[email protected] ceph]# ceph-deploy mgr create node1  #部署管理器守护程序,仅仅使用此版本
[ceph_deploy.conf][DEBUG ] found configuration file at: /root/.cephdeploy.conf
[ceph_deploy.cli][INFO  ] Invoked (2.0.1): /usr/bin/ceph-deploy mgr create node1
[ceph_deploy.cli][INFO  ] ceph-deploy options:
[ceph_deploy.cli][INFO  ]  username                      : None
[ceph_deploy.cli][INFO  ]  verbose                       : False
[ceph_deploy.cli][INFO  ]  mgr                           : [(‘node1‘, ‘node1‘)]
[ceph_deploy.cli][INFO  ]  overwrite_conf                : False
[ceph_deploy.cli][INFO  ]  subcommand                    : create
[ceph_deploy.cli][INFO  ]  quiet                         : False
[ceph_deploy.cli][INFO  ]  cd_conf                       : <ceph_deploy.conf.cephdeploy.Conf instance at 0xe1e5a8>
[ceph_deploy.cli][INFO  ]  cluster                       : ceph
[ceph_deploy.cli][INFO  ]  func                          : <function mgr at 0xda5f50>
[ceph_deploy.cli][INFO  ]  ceph_conf                     : None
[ceph_deploy.cli][INFO  ]  default_release               : False
[ceph_deploy.mgr][DEBUG ] Deploying mgr, cluster ceph hosts node1:node1
[node1][DEBUG ] connected to host: node1
[node1][DEBUG ] detect platform information from remote host
[node1][DEBUG ] detect machine type
[ceph_deploy.mgr][INFO  ] Distro info: CentOS Linux 7.4.1708 Core
[ceph_deploy.mgr][DEBUG ] remote host will use systemd
[ceph_deploy.mgr][DEBUG ] deploying mgr bootstrap to node1
[node1][DEBUG ] write cluster configuration to /etc/ceph/{cluster}.conf
[node1][WARNIN] mgr keyring does not exist yet, creating one
[node1][DEBUG ] create a keyring file
[node1][DEBUG ] create path recursively if it doesn‘t exist
[node1][INFO  ] Running command: ceph --cluster ceph --name client.bootstrap-mgr --keyring /var/lib/ceph/bootstrap-mgr/ceph.keyring auth get-or-create mgr.node1 mon allow profile mgr osd allow * mds allow * -o /var/lib/ceph/mgr/ceph-node1/keyring
[node1][INFO  ] Running command: systemctl enable ceph-[email protected]
[node1][WARNIN] Created symlink from /etc/systemd/system/ceph-mgr.target.wants/[email protected] to /usr/lib/systemd/system/ceph-[email protected]
[node1][INFO  ] Running command: systemctl start ceph-[email protected]
[node1][INFO  ] Running command: systemctl enable ceph.target

(5)创建OSD

添加三个OSD。出于这些说明的目的,我们假设您在每个节点中都有一个未使用的磁盘/dev/sdb。 确保设备当前未使用且不包含任何重要数据。 
语法格式:ceph-deploy osd create --data {device} {ceph-node}

[[email protected] ceph]# ceph-deploy osd create --data /dev/sdb node1
[[email protected]-node1 ceph]# ceph-deploy osd create --data /dev/sdc node1
[[email protected]-node1 ceph]# ceph-deploy osd create --data /dev/sdd node1

原文地址:https://www.cnblogs.com/linuxk/p/9419423.html

时间: 2024-10-06 11:10:36

Ceph学习之路(三)Ceph luminous版本部署的相关文章

Ceph学习之路 之Ceph的工作原理及流程

一.元数据和元数据管理 (1)元数据 在学习Ceph之前,需要了解元数据的概念.元数据又称为中介数据.中继数据,为描述数据的数据.主要描述数据属性的信息,用来支持如指示存储位置.历史数据.资源查找.文件记录等功能.通俗地说,就 是用于描述一个文件的特征的系统数据,比如访问权限.文件拥有者以及文件数据库的分布信息(inode)等等.在集群文件系统中,分布信息包括文件在磁盘上的位置以 及磁盘在集群中的位置.用户需要操作一个文件就必须首先得到它的元数据,才能定位到文件的位置并且得到文件的内容或相关属性

Jquery学习之路(三) 实现弹出层插件

弹出层的应用还是比较多的,登陆,一些同页面的操作,别人的总归是别人的,自己的才是自己的,所以一直以来想写个弹出层插件.不多废话,直接开始吧! 不想看可以在这里直接下载源码xsPop.zip 1:遮罩层 要弹出层,先要用一个遮罩层挡在下面的页面,此遮罩层是全屏的,页面滚动也要有,所以设置 position: fixed;还要有透明效果,下面是我定义的遮罩层css,取名mask .mask { position: fixed; width: 100%; height: 100%; backgroun

Redis——学习之路三(初识redis config配置)

我们先看看config 默认情况下系统是怎么配置的.在命令行中输入 config get *(如图) 默认情况下有61配置信息,每一个命令占两行,第一行为配置名称信息,第二行为配置的具体信息. 我们就从上到下来理解一下这些配置信息中的某些配置: 1.dbfilename是本地持久化存储数据库文件名,默认为dump.rdb.我可以在安装目录文件夹下找到这个文件. 2.requirepass是密码,即连接服务器的密码,默认为空.下面我来设置一个密码然后用带密码的命令连接一遍. 3.msterauth

JAVA学习之路三 编程英文汇总学习

JAVA学习中的每个章节中都有许多英文,不断熟悉工作英语也是提高编程能力很重要的一块,对于IT行业,英语才是通用语. 记在<JAVA语言程序设计>学习的第一章英文学习之后 .class file(.class文件)                       javac command(javac命令)          .java file(.java文件)            java Development Toolkit(JDK,java开发工具包)          assembl

linux学习之路三------指令篇

为什么要学习Linux命令? 1.Linux的图形界面虽然使用简单.直观,但是会占用大量系统资源,降低运行效率,增加安全的隐患. 2.学习和工作中,应尽可能使用Linux系统的命令运行界面,通过命令来完成操作. 3.要熟练掌握Linux操作系统,就必须熟练运用Linux下的各种命令,因此介绍Linux命令的基本功能和使用. 命令的使用方式,在Linux系统中打开终端的方式有以下两种: 一种是在桌面上依次单击"主程序→系统工具→终端"可打开如下图的终端窗口: 另一种是在Linux桌面上单

rabbitmq学习之路(三)

今天继续学习rabbitmq 了解一下AMQP的一些基本概念 交换机: Direct exchange(直连交换机) Fanout exchange(扇型交换机) Topic exchange(主题交换机) Headers exchange(头交换机) 交换机有两个状态 持久和暂存,区别就是持久话的交换机在消息代理也就是broker重启后依旧存在 队列: 队列需要被声明之后才能使用,如果声明时,该队列不存在,就会新建,如果已经存在,且属性无变化,则没有关系,不影响,若属性有变化,则报错 队列和交

Spring学习之路三——第一个Spring程序(体会IoC)

体会IoC:Spring通过一种称作控制反转(IoC)的技术促进了松耦合.当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象.你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它. 步骤如下: 1.建立web功能 2.导入jar包 3.配置applicationContext.xml 4.创建类 5.测试 具体代码如下 UserDao.java 1 package cn.itcast

Java学习之路(三):Java中的数组

数组的概述和定义的格式 数组的作用: 用来存储同种数据类型的多个值 数组的基本概念: 数组是存储同一种数据类型多个元素的集合.就相当于一个容器. 注意:数组既可以存储基本数据类型,也可以存储引用数据类型. 数组的定义格式: 数据类型[] 数组名 = new 数据类型[指定数组的长度] 数组的初始化 概念: 就是为数组开辟连续的内存空间,并且为每个数的元素赋值 如何初始化: 动态初始化:指定长度,有系统给出初始化值  int[] arr = new int[5] 静态初始化:给出初始化的值 格式:

【python3的学习之路三】字符串和编码

字符串编码 由于计算机是美国人发明的,因此,最早只有127个字符被编码到计算机里,也就是大小写英文字母.数字和一些符号,这个编码表被称为ASCII编码,比如大写字母A的编码是65,小写字母z的编码是122. 但是要处理中文显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去. 但是全世界有上百种语言,各国有各国的标准就,会不可避免地出现冲突,结果就是,在多语言混合的文本中,显示出来会有乱码.因此,Unicode应运而生.Uni