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
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-******(直接回车,不设密码就好)
sudo ssh-copy-id cephnode01
sudo ssh-copy-id cephnode02
sudo ssh-copy-id cephnode03
再关闭防火墙
ssh [email protected]
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'
[email protected] 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