CEPH做openstack存储.docx
《CEPH做openstack存储.docx》由会员分享,可在线阅读,更多相关《CEPH做openstack存储.docx(9页珍藏版)》请在冰豆网上搜索。
CEPH做openstack存储
采用CEPH实现Openstack统一存储
Ceph作为LinuxPB级分布式文件系统,因其灵活智能可配置,在软件定义存储的大潮中,越来越受到IaaS方案提供商的注意。
我们知道OpenStack中围绕虚拟机主要的存储需求来自于nova中的disk,glance中的image,cinder中的虚拟硬盘,本文中,我们将全部采用ceph作为这些存储的后端,摆脱现有部署中各搞一套的现状。
本文主要是对Ceph使用的总结,因个人环境不同,可能存在各种环境与包依赖等问题。
集成逻辑图如下。
CEPH底层为RADOS块设备,提供访问RADOS的是librados库,librad的调用就是基于librados,Nova只要是通过libvirt->qemu来调用librbd,所以我们知道暂时只有libvirtDriver支持,Cinder与Glance直接调用librbd。
CEPH存储集群中的层次结构也可见上图,主要是先文件条带化为obj,obj通过hash函数映射到PG(上图中Pool就是PG的容器),PG通过CRUSH算法均匀映射到OSD,OSD基于文件系统,比如xfs,ext4等等。
本文中将只使用三个osd(官方推荐是至少两个,一个无法应对故障),三个监视器(主要负责接受数据上报,提供clustermap,至少要三个,一个不好容灾,奇数个可确保PAXOS算法能确定一批监视器里哪个版本的集群运行图是最新的),只放了一个mds, 这样的搭配基本是测试环境下最小的配置了,ceph很强调它的扩展性,所以越多越好,越能体现其优势
本文使用的系统环境:
redhat6.5四台机器规划如下:
1.mds 192.168.122.149 装一个mds 一个mon, 一个osd
2.osd 192.168.122.169 装一个mon, 一个osd
3.mon 192.168.122.41 装 一个mon, 一个osd
4.client 192.168.122.104 上安装openstack all-in-one,管理节点
三台机器组成ceph存储集群,hostname分别为mds,osd,mon,下文将都是使用这些短的hostname代表节点,其中在这三台机器上都部署monitor和对象存储osd,在mds上部署metadata服务器mds,另外一台机器作为openstackall-in-one环境节点hostname:
client
采用ceph-deploy来部署安装ceph,这个类似与我们部署openstack用的chef。
非常方便。
第一步:
在管理节点上修改/etc/hosts,ceph-deploy后面的节点参数必须使用hostname,为了能够解析hostname,需要配置/etc/hosts,为下面粘贴部分的后四行。
1.[root@client ceph ]# cat /etc/hosts
2.127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
3.:
:
1 localhost localhost.localdomain localhost6 localhost6.localdomain6
4.192.168.122.149 mds
5.192.168.122.169 osd
6.192.168.122.41 mon
7.192.168.122.104 client
第二步:
配置管理节点无密码访问其他节点,这个是方便我们使用ceph-deploy部署安装ceph
1.[root@client install]# ssh-keygen
2.[root@client install]# ssh-copy-id mds
3.[root@client install]# ssh-copy-id ods
4.[root@client install]# ssh-copy-id mon
第三步:
在client上添加yum源文件ceph.repo使用最新版本firefly,本地环境是redhat6.5,所以baseurl中用rhel6,本机为64位系统,后面的目录也使用的x86_64,如下
1.[root@client~]# cat /etc/yum.repos.d/ceph.repo
2.[Ceph]
3.name=Cephpackages for $basearch
4.gpgkey=
5.enabled=1
6.baseurl=
7.priority=1
8.gpgcheck=1
9.type=rpm-md
10.[ceph-source]
11.name=Cephsource packages
12.gpgkey=
13.enabled=1
14.baseurl=
15.priority=1
16.gpgcheck=1
17.type=rpm-md
18.[Ceph-noarch]
19.name=Cephnoarch packages
20.gpgkey=
21.enabled=1
22.baseurl=
23.priority=1
24.gpgcheck=1
25.type=rpm-md
第四步:
安装ceph
1.[root@client~]# yum -y install ceph-deploy
本文使用ceph-deploy来做部署,这时最好建个目录,存放一些生成文件,避免在其他目录中与已有文件交杂在一起
1.[root@client ~]# mkdir ceph
2.[root@client ~]# cd ceph
建立一个集群包含mdsosdmon
1.[root@client ceph]# ceph-deploy new mds mon osd # 必须使用hostname
安装ceph在三个节点上。
1.[root@client ceph]# ceph-deploy install mds mon osd
安装monitor
1.[root@client ceph]# ceph-deploy mon create mds mon osd
收集keyring文件,Note:
做这个时候,这个如果mdsmonosd上防火墙开着,会收集不到,建议关掉,不然就要通过iptables设置相关rule,报的错是:
[ceph_deploy.gatherkeys][WARNIN]Unabletofind/var/lib/ceph/bootstrap-mds/ceph.keyring
1.[root@client ceph]# ceph-deploy gatherkeys mds #用其中一个节点即可
2.[root@client ceph]# ls
3.ceph.bootstrap-mds.keyring ceph.bootstrap-osd.keyring ceph.client.admin.keyring ceph.conf ceph.log ceph.mon.keyring
4.建立osd,默认是基于xfs文件系统,并激活。
1.[root@client ceph]# ceph-deploy osd prepare mds:
/opt/ceph mds:
/opt/cephmon:
/opt/ceph
2.[root@client ceph]# ceph-deploy osd activate mds:
/opt/ceph mds:
/opt/cephmon:
/opt/ceph
创建metadata服务器
1.[root@client ceph]# ceph-deploy mds create mds
这里插一段[如果只做ceph与openstack集成,请无视它]
*如果到此位止,我们仅想把这个文件系统mount到client端,我们需要安装ceph-fuse
1.[root@client ceph]# yum -y install ceph-fuse
2.[root@client ceph]#
3.[root@client ceph]# ceph-fuse -m 192.168.122.169:
6789 /mnt/ceph
4.ceph-fuse[24569]:
starting ceph client
5.ceph-fuse[24569]:
starting fuse
6.[root@client ceph]# df
7.Filesystem 1K-blocks Used Available Use%Mounted on
8./dev/mapper/vg_client-lv_root 18069936 2791420 14360604 17% /
9.tmpfs 812188 4 812184 1%/dev/shm
10./dev/vda1 495844 34541 435703 8% /boot
11./etc/swift/data/drives/images/swift.img 1038336 32976 1005360 4% /etc/swift/data/drives/sdb1
12.ceph-fuse 54304768 25591808 28712960 48%/mnt/ceph #这一行
第五步:
整合到nova,glance和cinder的使用上
1.[root@client ceph]# yum install ceph
2.[root@client ceph]# rados mkpool volumes
3.[root@client ceph]# rados mkpool images
4.[root@client ceph]# ceph osd pool set volumes size 3
5.[root@client ceph]# ceph osd pool set images size 3
6.[root@client ceph]# ceph osd lspools
7.0data,1 metadata,2 rbd,4 volumes,5 images,
keyring
1.[root@client ceph]# ceph auth get-or-create client.volumes mon 'allow r' osd 'allow c