CentOS7.4下安装ceph

Ceph简介

     Ceph是一种为优秀的性能、可靠性和可扩展性而设计的统一的、分布式文件系统

准备工作

准备3台主机,并且修改主机名(hostnamectl set-hostname xxx 后重启

IP地址                                   主机名(修改后的hostname)

172.16.37.125                       cephnode01(管理节点主机)

172.16.37.128                       cephnode02(osd.0 节点)

172.16.37.123                       cephnode03(osd.1 节点)

解决yum下载巨慢问题,使用国内下载源(注意三台主机都要更改下载源

备份本地yum源

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak

获取阿里yum源配置文件

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

更新cache

扫描二维码关注公众号,回复: 3346203 查看本文章
yum makecache

查看

yum -y update

添加ceph源(注意:不要有空行)

vim /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

配置下载源结束!

回到cephnode01

开始配置

修改cephnode01节点/etc/hosts文件,增加以下内容:

172.16.37.125    cephnode01

172.16.37.128    cephnode02

172.16.37.123    cephnode03

分别这三个节点上存储创建用户且赋予它root权限(本人这里用cephuser,三台主机都要建)

useradd -d /home/cephuser -m cephuser
passwd cephuser#密码最好设一样的

修改cephnode01主机上的~/.ssh/config文件(没有这个文件的话就新建一个)

Host cephnode01
   Hostname cephnode01
   User cephuser
Host cephnode02
   Hostname cephnode02
   User cephuser
Host cephnode03
   Hostname cephnode03
   User cephuser

分别给每台节点的主机添加root权限

首先修改/etc/sudoers文件可写(因为文件原本不可写)
chmod 777 /etc/sudoers

修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示:
## Allow root to run any commands anywhere
root    ALL=(ALL)     ALL
tommy   ALL=(ALL)     NOPASSWD: ALL

再改回原来的设置(一定要改回,因为后面可能会出现bug)
pkexec chmod 0440 /etc/sudoers

修改完毕,现在可以用cephuser帐号登录,然后用命令 su - cephuser,即可获得root权限进行操作。

设置cephnode01主机可以无密码访问其他node

su - cephuser 
sudo ssh-keygen(直接回车,不设密码就好) 
sudo ssh-copy-id cephnode01
sudo ssh-copy-id cephnode02
sudo ssh-copy-id cephnode03

再关闭防火墙
ssh root@cephuser
systemctl stop firewalld
systemctl disable firewalld

这个时候应该就可以免密码登录了
sudo ssh cephnode02    (看是否可以免密码登录成功)

一般情况就可以连接成功了,若有问题,可以试一下重启

安装NTP服务

sudo yum install -y ntp ntpdate ntp-doc
sudo ntpdate 0.us.pool.ntp.org
sudo hwclock --systohc
sudo systemctl enable ntpd.service
sudo systemctl start ntpd.service

禁用selinux

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

准备磁盘

note:测试时使用的磁盘不要太小,否则后面添加磁盘时会报错,建议磁盘大小为20G及以上。

检查磁盘
sudo fdisk -l /dev/
格式化磁盘
sudo parted -s /dev/sdc mklabel gpt mkpart primary xfs 0% 100%
sudo mkfs.xfs /dev/sdc -f
 
查看磁盘格式
sudo blkid -o value -s TYPE /dev/sdc

部署阶段

安装ceph-deploy

sudo yum update -y && sudo yum install ceph-deploy -y

创建cluster目录

mkdir cluster
cd cluster/

创建集群

sudo ceph-deploy new cephnode01 cephnode02 cephnode03

修改ceph.conf文件

//在生成的ceph.conf中加入(写入[global] 段下)
osd pool default size = 2
//如果你有多个网卡,可以把 public network 写入 Ceph 配置文件的 [global] 段下
#public network = {ip-address}/{netmask}

搭建集群

//安装ceph
sudo ceph-deploy install cephnode01 cephnode02 cephnode03
 
//配置初始 monitor(s)、并收集所有密钥
# ceph-deploy mon create-initial

新建osd

//添加两个 OSD ,登录到 Ceph 节点、并给 OSD 守护进程创建一个目录。
#ssh cephnode02
#sudo mkdir /var/local/osd0
#exit
 
#ssh cephnode03
#sudo mkdir /var/local/osd1
#exit
 
//然后,从管理节点执行 ceph-deploy 来准备 OSD 
#sudo ceph-deploy osd prepare cephnode02:/var/local/osd0 cephnode03:/var/local/osd1
 
//最后,激活 OSD 
#sudo ceph-deploy osd activate cephnode02:/var/local/osd0 cephnode03:/var/local/osd1
 
//确保你对 ceph.client.admin.keyring 有正确的操作权限。
#sudo chmod +r /etc/ceph/ceph.client.admin.keyring
 
//检查集群的健康状况
#ceph health等 peering 完成后,集群应该达到 active + clean 状态。

报错解决

ceph用户没有权限
**执行激活osd盘时出现 **

ceph-deploy osd activate node2:/var/local/osd0 node3:/var/local/osd1
[node3][WARNIN] ceph_disk.main.Error: Error: ['ceph-osd', '--cluster', 'ceph', '--mkfs', '--mkkey', '-i', '1', '--monmap', '/var/local/osd1/activate.monmap', '--osd-data', '/var/local/osd1', '--osd-journal', '/var/local/osd1/journal', '--osd-uuid', 'ee9c4a6c-e2b5-46cd-9e91-fd5d6f36fd57', '--keyring', '/var/local/osd1/keyring', '--setuser', 'ceph', '--setgroup', 'ceph'] failed : 2016-08-31 16:38:58.909449 7f48adbb7800 -1 filestore(/var/local/osd1) mkfs: write_version_stamp() failed: (13) Permission denied
[node3][WARNIN] 2016-08-31 16:38:58.909475 7f48adbb7800 -1 OSD::mkfs: ObjectStore::mkfs failed with error -13
[node3][WARNIN] 2016-08-31 16:38:58.909529 7f48adbb7800 -1  ** ERROR: error creating empty object store in /var/local/osd1: (13) Permission denied
[node3][WARNIN]
[node3][ERROR ] RuntimeError: command returned non-zero exit status: 1
[ceph_deploy][ERROR ] RuntimeError: Failed to execute command: /usr/sbin/ceph-disk -v activate --mark-init systemd --mount /var/local/osd1

解决方法

分别再cephnode02 cephnode03下面执行
chown ceph:ceph  /var/local/osd0
chown ceph:ceph  /var/local/osd1

创建成功ceph健康状况良好

RuntimeError: bootstrap-rgw keyring not found; run 'gatherkeys'

root@admin ceph]# ceph-deploy rgw create node2
[ceph_deploy.conf][DEBUG ] found configuration file at: /root/.cephdeploy.conf
[ceph_deploy.cli][INFO  ] Invoked (1.5.34): /usr/bin/ceph-deploy rgw create node2
[ceph_deploy.cli][INFO  ] ceph-deploy options:
[ceph_deploy.cli][INFO  ]  username                      : None
[ceph_deploy.cli][INFO  ]  verbose                       : False
[ceph_deploy.cli][INFO  ]  rgw                           : [('node2', 'rgw.node2')]
[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 0x24aed88>
[ceph_deploy.cli][INFO  ]  cluster                       : ceph
[ceph_deploy.cli][INFO  ]  func                          : <function rgw at 0x241da28>
[ceph_deploy.cli][INFO  ]  ceph_conf                     : None
[ceph_deploy.cli][INFO  ]  default_release               : False
[ceph_deploy.rgw][DEBUG ] Deploying rgw, cluster ceph hosts node2:rgw.node2
[ceph_deploy][ERROR ] RuntimeError: bootstrap-rgw keyring not found; run 'gatherkeys'

执行如下命令解决

ceph-deploy gatherkeys node2

猜你喜欢

转载自blog.csdn.net/qq_41004007/article/details/81355248