Ceph环境搭建【CentOS】
从某种程度上该文章是 ceph.com 快速安装文档的翻译,在跑不通的情况下我会以自己的方法进行处理。本文的所有内容均在 CentOS 环境下运行。
架构
建议配置一个ceph-deploy
admin节点和三个Ceph Storage Cluster节点来探索ceph。如下图所示:
使用 VMware WorkStation 来创建4个虚拟机,使用是CentOS 7作为安装镜像,安装过程不赘述了。分别将主机名命名为admin-node, node1, node2, node3, 如果安装时未设置hostname,可以参照CentOS 7修改主机名【hostnamectl】来配置。
为了方便主机间使用hostname进行通信,对每台机器的hosts进行配置,编辑/etc/hosts,在末尾添加:
上述操作后,各主机之间就可以通过hostname进行通信了。可以使用ping操作进行验证。如ping node1
。
注,上述IP应该根据自己虚拟机的IP地址进行更改。另外如果虚机使用的是无线,应该把网路链接设置为NAT模式,若使用的有线网卡则两种模式都可以。
CEPH DEPLOY SETUP
在admin-node上添加Ceph安装库,然后安装ceph-deploy
注:在后面的操作中会出现[ceph_deploy][ERROR ] RuntimeError: NoSectionError: No section: ‘Ceph’这样的错误提示,可以将ceph.repo改名为ceph-deploy.repo来解决这个问题,我是在 adventures-with-ceph-storage-part-5-install-ceph-in-the-lab 中看到评论里边有人这样做(搜Ben Town),尝试了一下真的OK。
CEPH NODE SETUP
admin-node必须对Ceph节点有免输密码(password-less)的SSH权限。当ceph-deploy使用一个用户登陆进入一个Ceph节点,该用户必须拥有sudo权限。
安装NTP
防止时间漂移,提供时钟同步,在所有node节点上输入:
#sudo yum install ntp ntpdate ntpp-doc
安装SSH SERVER
CentOS默认是安装过openssh-server的,如果没有安装,输入:
创建一个Ceph Deploy User
ceph-deploy
必须登录进入一个Ceph节点并拥有免输密码的sudo权限。虽然并不建议使用root,但由于只是做实验,并不是生产环境,我还是用了root,如果不想使用root,参照 create-a-ceph-deploy-user 来设置用户并更改其权限。
PASSWORD-LESS SSH
由于ceph-deploy
不会提示输入密码,所以必须在admin-node上生成SSH keys并分发到每个Ceph节点上。
防火墙设置
Ceph Monitors通过6789端口通信,Ceph OSDs通过6800:7300端口范围进行通信。 在使用firewall的RHEL7中,使用如下命令打开Monitor(node1)的6789端口以及OSDs(node2, node3)的6800:7300端口:
TTY
在Ceph nodes上将Defaults requiretty
设置为Defaults:ceph requiretty
,使用sudo visudo定位并更改。
SELINUX
sudo setenfore 0
还需要安装一些包,yum-plugin-priorites
, epel-release
,在各节点使用yum安装就可以
Create A Cluster
1 之后的命令只需要在admin-node上运行就可以了
2 如果在任何时刻出错了并且想重新来一遍,应该先运行如下命令:
3 创建cluster:
4 编辑ceph.conf,在[global] section下添加一行
osd pool default size 2
默认的replicas为3,改为2可以使ceph仅有两个OSD的情况下达到active+clean
的状态。
5 安装Ceph:
6 添加初始monitor并收集keys
7 添加两个OSDs
8 使用ceph-deploy将configure file和admin key拷贝到admin节点和Ceph节点上
9 确保对ceph.client.admin.keyring有正确的权限
至此,这个四个节点的Ceph环境就搭好了。 检查cluster的健康及cluster状态:
补充: 如果在实验过程中所有机器都关机了,那么重启之后Ceph存储默认不启动的,如果ceph status显示集群错误,需要做的工作: