笔者在搭建ceph分布式存储的时候,遇到了不少困难。虽然网上有很多现成的帖子可以参考,但是按照帖子操作,总是不能完成搭建。后来发现大部分搭建过程的帖子不够全面。这里笔者根据自己的搭建过程总结了下,一是与大家分享,二是为自己以后查阅方便。
IP |
角色 |
Hostname |
操作系统 |
192.168.8.84 |
client |
qemu-mc1 |
Centos 6.5 内核升级到3.12.35 |
192.168.8.85 |
mds&monitor&ceph-deploy管理 |
qemu-mc2 |
|
192.168.8.208 |
osd |
remus1 |
|
192.168.8.247 |
osd |
remus2 |
/etc/yum.repos.d/目录下删除其他的源,只保留epel源epel.repo,文件内容如下:
[epel]
name=Extra Packages for Enterprise Linux 6 -$basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
[epel-debuginfo]
name=Extra Packages for Enterprise Linux 6 -$basearch - Debug
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch/debug
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-6&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
gpgcheck=1
[epel-source]
name=Extra Packages for Enterprise Linux 6 -$basearch - Source
#baseurl=http://download.fedoraproject.org/pub/epel/6/SRPMS
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-source-6&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
gpgcheck=1这里也可以自己搭建源,源里边包含ceph所有相关的rpm包。(笔者是用ceph源码编译rpm包,然后手动安装rpm包,再ceph-deploy install。虽然已经安装了rpm,仍然需要这样做一下)
yum install ceph-deploy
在/etc/hosts文件中把四台机器的主机名和ip都添加进去
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.8.84 qemu-mc1
192.168.8.85 qemu-mc2
192.168.8.247 remus2
192.168.8.208 remus1
每个节点都执行下面的命令
yum install -y ntp ntpdate ntp-doc
yum install -y openssh-server
安装ntp的目的是使四台机器系统时间一致,安装openssh-server的目的是能通过ssh访问四台机器。
不需密码进行ssh访问的原理是公私钥机制,我要访问别人,那么就要把我的公钥先发给别人,对方就能通过我的公钥验证我的身份。
具体操作步骤如下:1、在每台服务器上都执行ssh-keygen -t rsa生成密钥对:
#ssh-keygen -t rsa
2、在每台服务器上生成密钥对后,将公钥复制到需要无密码登陆的服务器上:
举例如192.168.8.84,192.168.8.85,192.168.8.208,192.168.8.247这四台服务器需要做相互免密码登陆,在每台服务器生成密钥对后,在每台服务器上执行ssh-copy-id命令,将公钥复制到其它三台服务器上(此处以192.168.8.84为例,用户为root,其它三台步骤相同)
#ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
#ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
#ssh-copy-id -i~/.ssh/id_rsa.pub [email protected]
以上命令,可以自动将公钥添加到名为 authorized_keys 的文件中,在每台服务器都执行完以上步骤后就可以实现多台服务器相互无密码登陆了关闭防火墙:/etc/init.d/iptables stop
/etc/sysconfig/selinux
查看SELinux状态:
1. /usr/sbin/sestatus -v ##如果SELinux status参数为enabled即为开启状态
2. getenforce ##也可以用这个命令检查
关闭SELinux:
1. 临时关闭(不用重启机器):
setenforce0 ##设置SELinux 成为permissive模式
##setenforce 1 设置SELinux 成为enforcing模式
2. 修改配置文件需要重启机器:
修改/etc/selinux/config 文件
将SELINUX=enforcing改为SELINUX=disabled
重启机器即可
在deploy节点上创建配置目录,下面的所有deploy节点上的操作都在该目录进行
mkdir my-cluster
cd my-cluster
在admin node 上用ceph-deploy创建集群,new后面跟的是mds节点的hostname
ceph-deploy new mdsnode
执行成功后该目录下会增加三个文件
修改默认的副本数为2
修改ceph.conf,使osd_pool_default_size的值为2
在deploy上依次执行下面的命令
ceph-deploy mon create-initial
ceph-deploy mon create mdsnode
ceph-deploy gatherkeys mdsnode
执行成功后会出现下面的文件
ssh osdnode1
mkfs.xfs /dev/vg_remus1/lv01
sudo mkdir /var/local/osd0
mount /dev/vg_remus1/lv01 /var/local/osd0
exit
ssh osdnode2
mkfs.xfs /dev/vg_remus2/lv01
sudo mkdir /var/local/osd1
mount /dev/vg_remus2/lv01 /var/local/osd1
exit
ceph-deploy osd prepare osdnode1:/var/local/osd0 osdnode2:/var/local/osd1
ceph-deploy osd activate osdnode1:/var/local/osd0 osdnode2:/var/local/osd1
ceph-deploy admin dataprovider mdsnode osdnode1 osdnode2
sudo chmod +r /etc/ceph/ceph.client.admin.keyring
Ceph-deploy mds create qemu-mc2
Filesystemceph osd pool create cephfs_data 10
ceph osd pool create cephfs_metadata 10
ceph fs new leadorfs cephfs_metadata cephfs_data
/etc/init.d/ceph –a start
mount -t ceph 192.168.8.85:6789://mycephfs/
提示:mount error 22 = Invalid argument
需要指定用户名密码:
mount.ceph 192.168.8.85:6789:/ /mnt -oname=admin,secret=AQCpw/ZUyRZjFxAAf52Z2LpCao1+RCXMCFoYpQ==
如果安装配置出错可以通过以下方式清除,并重新来做:
/var/lib/ceph
/etc/ceph
目录全部清空
然后重新安装ceph rpm包
ceph-deploy purgedata {ceph-node} [{ceph-node}]
ceph-deploy forgetkeys
如果准备osd节点activate的时候报如下错误:
ceph-disk: Error: No cluster conf found in /etc/cephwith fsid a72014d3-7070-45f0-b970-44b216c29839
删除osd0 osd1下的所有文件重新来做即可解决