CEPH多服务器版搭建.docx
《CEPH多服务器版搭建.docx》由会员分享,可在线阅读,更多相关《CEPH多服务器版搭建.docx(12页珍藏版)》请在冰豆网上搜索。
CEPH多服务器版搭建
CEPH多服务器版搭建
——idealhang
一、CEPH介绍
CEPH系统架构拓扑图如下图所示。
图1CEPH系统架构拓扑图
一套完整的CEPH系统架构可以划分为4种节点:
a.Clients:
客户端(数据用户);
b.MDS:
Metadataservercluster,元数据服务器(缓存和同步分布式元数据);
c.OSD:
Objectstoragecluster,对象存储集群(将数据和元数据作为对象存储,执行其他关键职能);
d.MON:
Clustermonitors,集群监视器(执行监视功能)。
CEPH生态系统的概念如下图所示。
图2CEPH生态系统的概念构架图
客户使用元数据服务器,执行元数据操作(来确定数据位置)。
元数据服务器管理数据位置,以及在何处存储新数据。
值得注意的是,元数据存储在一个存储集群(标为“元数据I/O”)。
实际的文件I/O发生在客户和对象存储集群之间。
这样一来,更高层次的POSIX功能(例如,打开、关闭、重命名)就由元数据服务器管理,不过POSIX功能(例如读和写)则直接由对象存储集群管理。
CEPH的优点:
●可以轻松扩展到数PB容量。
●对多种工作负责的高性能。
●高可靠性。
二、实验环境与准备
2.1设计一个CEPH集群方案
节点
IP
主机名
系统版本
MON
192.168.1.51
mm
CentOS-6.2-x86_64
MDS
192.168.1.51
mm
CentOS-6.2-x86_64
OSD0
192.168.1.52
osd0
CentOS-6.2-x86_64
OSD1
192.168.1.53
osd1
CentOS-6.2-x86_64
Client0
192.168.1.158
client0
ubuntu-12.04-desktop-amd64
Client1
192.168.1.159
client1
CentOS-6.2-x86_64
说明:
实验中一共用到了4台主机:
MON与MDS放在了一台机子上,主机名为mm;两台主机用来做OSD,主机名为osd0和osd1;一台做客户端,因为linux内核在2.6.34以后就集成了CEPH的模块,如果使用Ubuntu做客户端,不做操作就可以直接使用。
而CentOS-6.2-x86_64所用的内核还是2.6.32,如果使用CentOS-6.2-x86_64做客户端,首先要升级内核。
这里采用ubuntu-12.04。
2.2修改IP、主机名和hosts文件
以MON节点为例
#vi/etc/sysconfig/network-scripts/ifcfg-eth0
修改成如下所示:
1DEVICE=eth0
2NM_CONTROLLED=yes
3ONBOOT=yes
4TYPE=Ethernet
5DNS1=192.168.1.242
6NAME="Systemeth0"
7BOOTPROTO=none
8IPADDR=192.168.1.51
9NETMASK=255.255.255.0
10GATEWAY=192.168.1.1
#vi/etc/sysconfig/network
修改成如下所示:
1NETWORKING=yes
2HOSTNAME=mm
#vi/etc/hosts
除了client,其他节点的hosts文件都修改成如下所示
1127.0.0.1localhostlocalhost.localdomainlocalhost4localhost4.localdomain4
2:
:
1localhostlocalhost.localdomainlocalhost6localhost6.localdomain6
3192.168.1.158cient
4192.168.1.51mm
5192.168.1.52osd0
6192.168.1.53osd1
2.3除客户端外,其他节点间无密码ssh登陆
在各节点用ssh-keygen生成密钥,用scp将公钥拷贝到其他节点,期间会要求输入密码。
MON:
#ssh-keygen–d
#
#
#
#scp/root/.ssh/id_dsa.pubroot@osd0:
/root/.ssh/authorized_keys
#scp/root/.ssh/id_dsa.pubroot@osd1:
/root/.ssh/authorized_keys
OSD0:
#ssh-keygen–d
#
#
#
#scp/root/.ssh/id_dsa.pubroot@mm:
/root/.ssh/authorized_keys
#scp/root/.ssh/id_dsa.pubroot@osd1:
/root/.ssh/osd0
0SD1:
#ssh-keygen–d
#
#
#
#scp/root/.ssh/id_dsa.pubroot@mm:
/root/.ssh/osd1
#scp/root/.ssh/id_dsa.pubroot@osd0:
/root/.ssh/osd1
MON:
#cat/root/.ssh/osd1>>/root/.ssh/authorized_keys
OSD0:
#cat/root/.ssh/osd1>>/root/.ssh/authorized_keys
OSD1:
#cat/root/.ssh/osd0>>/root/.ssh/authorized_keys
在三个节点上分别catauthorized_keys,输出含有另外两者的公钥如下图:
MON:
OSD0:
OSD1:
这样以后在任一台主机上就可以用ssh无密码连接其他主机了。
2.4关闭防火墙,禁用selinux
#serviceiptablesstop
#chkconfigiptablesoff
#vi/etc/selinux/config
:
%s/SELINUX=enforcing/SELINUX=disabled/g
重启生效。
2.5下载CEPH
最新版本为:
0.48argonaut(ceph的第一个long-term-support版本)
下载地址:
公司内部地址:
\\192.168.1.250\系统部相关\Tools\CEPH八爪鱼\ceph-0.48argonaut.tar.gz
2.6关闭无关的服务
三、安装CEPH
除了client,其他三种节点上都得安装CEPH。
#tarzxvfceph-o.48argonaut.tar.gz
#cdzxvfceph-o.48argonaut
#./autogen.sh
#./configure--without-tcmalloc--without-libatomic-ops
configure时会提示缺少包,根据提示用yum安装就行。
如果在安装系统时将开发包都选上了,只需装两个包的:
#yuminstalllibuuid*
#yuminstalllibedit*
如果没有全选开发包,还可能缺少其他包,根据提示安装:
#wget
#rpm–ivhepel-release-6.7.noarch.rpm
#yuminstallcryptopp*
#yuminstalllibaio*
#yuminstallexpat-devel*
#yuminstallfuse*
configure通过后
#make
make的时间有点长,虚拟机中单核2G内存用时半小时
#makeinstall
CEPH安装完成。
四、配置CEPH
4.1在除client端以外的其他节点上新建目录
用来存放CEPH的配置文件
#mkdir/etc/ceph
4.2搭建OSD节点
在两台OSD服务器上挂载新硬盘(如果原有硬盘上还有空间的话也可以新建分区),格式化,挂载:
osd0:
#mkdir/mnt/osd0
#fdisk/dev/sdb
#n-->p-->1-->Enter-->Enter-->w
#mkfs.ext4/dev/sdb1
#mount-ouser_xattr/dev/sdb1/mnt/osd0
osd1:
#mkdir/mnt/osd1
#fdisk/dev/sdb
#n-->p-->1-->Enter-->Enter-->w
#mkfs.ext4/dev/sdb1
#mount-ouser_xattr/dev/sdb1/mnt/osd1
如果挂载的硬盘分区格式是ext3或者ext4,一定要加上参数-ouser_xattr。
4.3配置MON节点
新建目录
#mkdir-p/data/mon0
CEPH的源码包中带有三个非常重要的文件,一个是sample.ceph.conf,是配置文件的样例;一个是sample.fetch_conf,是个脚本,作用是在各节点间同步配置文件;还有一个是init-ceph,是启动脚本,用来启动各节点服务。
将他们三个分别拷贝到相应路径
#cpceph-0.48argonaut/src/sample.ceph.conf/etc/ceph/ceph.conf
#cpceph-0.48argonaut/src/sample.fetch_conf/etc/ceph/fetch_conf
#cpceph-0.48argonaut/src/init-ceph/etc/init.d/ceph
修改配置文件
#vi/etc/ceph/ceph.conf
1[mon]
2mondata=/data/mon$id
3[mon.0]
4host=mm
5monaddr=192.168.1.51:
6789
6
7[mds]
8keyring=/etc/ceph/keyring.$name
9[mds.0]
10host=mm
11
12[osd]
13osddata=/mnt/osd$id
14osdjournal=/mnt/osd$id/journal
15osdjournalsize=128;journalsize,inmegabytes
16keyring=/etc/ceph/keyring.$name
17filestorexattruseomap=true
18
19[osd.0]
20host=osd0
21devs=/dev/sdb1
22
23[osd.1]
24host=osd1
25devs=/dev/sdb1
将配置文件拷贝一份到/usr/local/etc/ceph/下
#cp/etc/ceph/ceph.conf/usr/local/etc/ceph/ceph.conf
修改fetch_config,在最后添上一句命令即可。
#vi/etc/ceph/fetch_config
1#!
/bin/sh
2conf="$1"
3
4##fetchceph.conffromsomeremotelocationandsaveitto$conf.
5##
6##makesurethisscriptisexecutable(chmod+xfetch_config)
7
8##
9##examples:
10##
11
12##fromalocallyaccessiblefile
13#cp/path/to/ceph.conf$conf
14
15##fromaURL:
16#wget-q-O$conf
17
18##viascp
19#scp-i/path/to/id_dsauser@host:
/path/to/ceph.conf$conf
20scproot@mm:
/usr/local/etc/ceph/ceph.conf$conf
五、使用CEPH
5.1创建CEPH文件系统
在MON节点执行
#mkcephfs-a-c/etc/ceph/ceph.conf-k/etc/ceph/keyring.admin
5.2启动所有节点服务
在MON节点执行
#/etc/init.d/ceph-astart
查看各节点运行情况,在任一个节点执行
#ceph-s
输出如下所示,说明系统运行正常
5.3在client端挂载
安装下ceph
#apt-getinstallceph
#mount.ceph192.168.1.51:
//mnt
这里的IP是主控节点(MON)的IP
查看挂载情况:
#df-h
输出如下内容:
END