一、环境准备
安装redhat7.3虚拟机四台
在四台装好的虚拟机上分别加一块100G的硬盘。如图所示:
3.在每个节点上配置主机名
4.集群配置信息如下
admin-node | node1 | node2 | node3 |
192.168.42.110 | 192.168.42.111 | 192.168.42.112 | 192.168.42.113 |
deploy、osd*1 | mon*1、osd*1、 rgw*1、mds*1 | mon*1、osd*1 | mon*1、osd*1 |
5.各节点配置yum源
#需要在每个主机上执行以下指令
yum clean all rm -rf /etc/yum.repos.d/*.repo 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 sed -i ‘/aliyuncs/d‘ /etc/yum.repos.d/CentOS-Base.repo sed -i ‘/aliyuncs/d‘ /etc/yum.repos.d/epel.repo sed -i ‘s/$releasever/7/g‘ /etc/yum.repos.d/CentOS-Base.repo
6.各节点增加ceph的源
vim /etc/yum.repos.d/ceph.repo [ceph] name=ceph baseurl=http://mirrors.163.com/ceph/rpm-jewel/el7/x86_64/ gpgcheck=0 [ceph-noarch] name=cephnoarch baseurl=http://mirrors.163.com/ceph/rpm-jewel/el7/noarch/ gpgcheck=0
7.双机互信
#在admin-node上操作
ssh-keygen -t dsa -f ~/.ssh/id_dsa -N "" mv /root/.ssh/{id_dsa.pub,authorized_keys} scp -r /root/.ssh/ {node1,node2,node3}:/root
8.关闭各节点selinux&firewalld
sed -i ‘s/SELINUX=.*/SELINUX=disabled/‘ /etc/selinux/config setenforce 0 systemctl stop firewalld systemctl disable firewalld
9.同步各个节点时间:
yum -y install rdate rdate -s time-a.nist.gov echo rdate -s time-a.nist.gov >> /etc/rc.d/rc.local chmod +x /etc/rc.d/rc.local
二、开始部署
1.环境清理!
如果之前部署失败了,不必删除ceph客户端,或者重新搭建虚拟机,只需要在每个节点上执行如下指令即可将环境清理至刚安装完ceph客户端时的状态!强烈建议在旧集群上搭建之前清理干净环境,否则会发生各种异常情况。
ps aux|grep ceph |awk ‘{print $2}‘|xargs kill -9 ps -ef|grep ceph umount /var/lib/ceph/osd/* rm -rf /var/lib/ceph/osd/* rm -rf /var/lib/ceph/mon/* rm -rf /var/lib/ceph/mds/* rm -rf /var/lib/ceph/bootstrap-mds/* rm -rf /var/lib/ceph/bootstrap-osd/* rm -rf /var/lib/ceph/bootstrap-rgw/* rm -rf /var/lib/ceph/tmp/* rm -rf /etc/ceph/* rm -rf /var/run/ceph/*
2.在各节点安装ceph客户端:
yum install ceph ceph-radosgw rdate -y
3.在部署节点(admin-node)安装ceph-deploy,下文的部署节点统一指admin-node:
yum -y install ceph-deploy ceph-deploy --version 1.5.38 ceph -v ceph version 10.2.9 (2ee413f77150c0f375ff6f10edd6c8f9c7d060d0)
4.用 ceph-deploy 从管理节点建立一个 Ceph 存储集群,该集群包含三个节点
5.在部署节点创建部署目录并开始部署:
cd mkdir cluster cd cluster/ ceph-deploy new node1
#ceph-deploy 会把文件输出到当前目录,所以请确保在此目录下执行 ceph-deploy 。
#在当前目录下用 ls 和 cat 检查 ceph-deploy 的输出,应该有一个 Ceph 配置文件、一个 monitor 密钥环和一个日志文件。
6.把 Ceph 配置文件里的默认副本数从 3 改成 2 ,这样只有两个 OSD 也可以达到 active + clean 状态。把下面这行加入 [global] 段:
vim ceph.conf osd pool default size = 2
7.如果你有多个网卡,可以把 public network 写入 Ceph 配置文件的 [global] 段下。
vim ceph.conf public network = 192.168.42.0/24
8.安装 Ceph
ceph-deploy install admin-node node1 node2 node3
#ceph-deploy 将在各节点安装 Ceph 。 注:如果你执行过 ceph-deploy purge ,你必须重新执行这一步来安装 Ceph 。
9.配置初始 monitor(s)、并收集所有密钥:
ceph-deploy mon create-initial
完成上述操作后,当前目录里应该会出现这些密钥环:
{cluster-name}.client.admin.keyring
{cluster-name}.bootstrap-osd.keyring
{cluster-name}.bootstrap-mds.keyring
{cluster-name}.bootstrap-rgw.keyring
10.查看各节点的硬盘详情
ceph-deploy disk list admin-node ceph-deploy disk list node1 ceph-deploy disk list node2 ceph-deploy disk list node3
11.管理节点执行 ceph-deploy 来准备 OSD,在node2,node3上主备OSD
ceph-deploy osd prepare node2:sdb:/dev/sdb ceph-deploy osd prepare node3:sdb:/dev/sdb
12.最后,激活 node2,node3上的OSD 。
ceph-deploy osd activate node2:/dev/sdb1:/dev/sdb2 ceph-deploy osd activate node3:/dev/sdb1:/dev/sdb2
13.用 ceph-deploy 把配置文件和 admin 密钥拷贝到管理节点和 Ceph 节点,这样你每次执行 Ceph 命令行时就无需指定 monitor 地址和 ceph.client.admin.keyring 了。
ceph-deploy admin admin-node node1 node2 node3
14.确保你对 ceph.client.admin.keyring 有正确的操作权限。
chmod +r /etc/ceph/ceph.client.admin.keyring
15.检查集群的健康状况
#显示health HEALTH_OK 则为ok
#等 peering 完成后,集群应该达到 active + clean 状态。
三、扩展集群(扩容)
#一个基本的集群启动并开始运行后,下一步就是扩展集群。在 node1 上添加一个 OSD 守护进程和一个元数据服务器。然后分别在 node2 和 node3 上添加 Ceph Monitor ,以形成 Monitors 的法定人数。
在node1,admin-node上添加OSD
ceph-deploy osd prepare node1:sdb:/dev/sdb
ceph-deploy osd activate admin-node:/dev/sdb1:/dev/sdb2
2.最后,激活 OSD
ceph-deploy osd activate node1:/dev/sdb1:/dev/sdb2 ceph-deploy osd activate admin-node:/dev/sdb1:/dev/sdb2
#一旦你新加了 OSD , Ceph 集群就开始重均衡,把归置组迁移到新 OSD 。可以用下面的 ceph 命令观察此过程
ceph -w
#你应该能看到归置组状态从 active + clean 变为 active ,还有一些降级的对象;迁移完成后又会回到 active + clean 状态( Control-C 退出)。
3.添加元数据服务器
#至少需要一个元数据服务器才能使用 CephFS ,执行下列命令创建元数据服务器
ceph-deploy mds create node1
注意:当前生产环境下的 Ceph 只能运行一个元数据服务器。你可以配置多个,但现在官网还不会为多个元数据服务器的集群提供商业支持。
#要使用 Ceph 的 Ceph 对象网关组件,必须部署 RGW 例程。用下列方法创建新 RGW 例程
ceph-deploy rgw create node1
#一个集群可以在不同节点添加rgw
#要删除创建的rgw只需要停止radosgw服务,删除rgw数据,即删除rgw相关pool即可删除
5.RGW 例程默认会监听 7480 端口,可以更改该节点 ceph.conf 内与 RGW 相关的配置,如下:
vim /root/my-cluster/ceph.conf [client] rgw frontends = civetweb port=80
#如果你使用的是ipv6地址的那么执行如下操作即可
vim /root/my-cluster/ceph.conf [client] rgw frontends = civetweb port=[::]:80
6.添加 MONITORS
#Ceph 存储集群需要至少一个 Monitor 才能运行。为达到高可用,典型的 Ceph 存储集群会运行多个 Monitors,这样在单个 Monitor 失败时不会影响 Ceph 存储集群的可用性。Ceph 使用 PASOX 算法,此算法要求有多半 monitors(即 1 、 2:3 、 3:4 、 3:5 、 4:6 等 )形成法定人数。
新增两个监视器到 Ceph 集群。
ceph-deploy mon add node2 node3
#新增 Monitor 后,Ceph 会自动开始同步并形成法定人数。你可以用下面的命令检查法定人数状态:
ceph quorum_status --format json-pretty
#注意:当你的 Ceph 集群运行着多个 monitor 时,各 monitor 主机上都应该配置 NTP ,而且要确保这些 monitor 位于 NTP 服务的同一级。
7.存入/检出对象数据
#要把对象存入 Ceph 存储集群,客户端必须做到:
指定对象名
指定存储池
#Ceph 客户端检出最新集群运行图,用 CRUSH 算法计算出如何把对象映射到归置组,然后动态地计算如何把归置组分配到 OSD 。要定位对象,只需要对象名和存储池名字即可,例如:
ceph osd map {poolname} {object-name}
四、查看ceph集群部署详情
1.查看部署详情
ceph -s
2.通过ceph osd tree 查看OSD详情
3.mon&osd启动方式
#monitor start/stop/restart
#ceph-1为各个monitor所在节点的主机名。 systemctl start ceph-mon@node1.service systemctl restart ceph-mon@node1.service systemctl stop ceph-mon@node1.service #OSD start/stop/restart #0为该节点的OSD的id,可以通过`ceph osd tree`查看 systemctl start/stop/restart ceph-osd@0.service
#至此 一个ceph集群已经部署成功
创作不易,如有引用,请注明出处 谢谢
本文出自 “宋城西栅” 博客,请务必保留此出处http://limaomao.blog.51cto.com/12623570/1963991
基于redhat7.3 ceph对象存储集群搭建+owncloud S3接口整合生产实践
原文地址:http://limaomao.blog.51cto.com/12623570/1963991