高可用OpenStack(Queen版)集群-14.Openstack集成Ceph准备
参考文档:
- Install-guide:https://docs.openstack.org/install-guide/
- OpenStack High Availability Guide:https://docs.openstack.org/ha-guide/index.html
- 理解Pacemaker:http://www.cnblogs.com/sammyliu/p/5025362.html
十八.Openstack集成Ceph准备
Openstack环境中,数据存储可分为临时性存储与永久性存储。
临时性存储:主要由本地文件系统提供,并主要用于nova虚拟机的本地系统与临时数据盘,以及存储glance上传的系统镜像;
永久性存储:主要由cinder提供的块存储与swift提供的对象存储构成,以cinder提供的块存储应用最为广泛,块存储通常以云盘的形式挂载到虚拟机中使用。
Openstack中需要进行数据存储的三大项目主要是nova项目(虚拟机镜像文件),glance项目(共用模版镜像)与cinder项目(块存储)。
下图为cinder,glance与nova访问ceph集群的逻辑图:
- ceph与openstack集成主要用到ceph的rbd服务,ceph底层为rados存储集群,ceph通过librados库实现对底层rados的访问;
- openstack各项目客户端调用librbd,再由librbd调用librados访问底层rados;
- 实际使用中,nova需要使用libvirtdriver驱动以通过libvirt与qemu调用librbd;cinder与glance可直接调用librbd;
- 写入ceph集群的数据被条带切分成多个object,object通过hash函数映射到pg(构成pg容器池pool),然后pg通过几圈crush算法近似均匀地映射到物理存储设备osd(osd是基于文件系统的物理存储设备,如xfs,ext4等)。
1. 创建pool
# Ceph默认使用pool的形式存储数据,pool是对若干pg进行组织管理的逻辑划分,pg里的对象被映射到不同的osd,因此pool分布到整个集群里。
# 可以将不同的数据存入1个pool,但如此操作不便于客户端数据区分管理,因此一般是为每个客户端分别创建pool。
# 为cinder,nova,glance分别创建pool,命名为:volumes,vms,images
# 创建pool,需要覆盖默认的pg num,官方文档对pg num的数量有如下建议:http://docs.ceph.com/docs/master/rados/operations/placement-groups/;
# 同时综合考量全部pool的pg num总和的上限:pg num * 副本数量 < mon_max_pg_per_osd(默认200) * num_in_osds(osd总进程数);
# pool创建在monitor节点操作,以controller01节点为例;
# 这里volumes池是永久性存储,vms是实例临时后端存储,images是镜像存储
[root@controller01 ~]# su - cephde
[cephde@controller01 ~]$ sudo ceph osd pool create volumes 256
[cephde@controller01 ~]$ sudo ceph osd pool create vms 256
[cephde@controller01 ~]$ sudo ceph osd pool create images 256
# 查看状态
[cephde@controller01 ~]$ sudo ceph pg stat
[cephde@controller01 ~]$ sudo ceph osd lspools
2. 安装Ceph客户端
# glance-api服务所在节点需要安装python-rbd;
# 这里glance-api服务运行在3个控制节点,以controller01节点为例
[root@controller01 ~]# yum install python-rbd -y # cinder-volume与nova-compute服务所在节点需要安装ceph-common;
# 这里cinder-volume与nova-compute服务运行在3个计算(存储)节点,以compute01节点为例
[root@compute01 ~]# yum install ceph-common -y
3. 授权设置
1)创建用户
# ceph默认启用cephx authentication(见ceph.conf),需要为nova/cinder与glance客户端创建新的用户并授权;
# 可在管理节点上分别为运行cinder-volume与glance-api服务的节点创建client.glance与client.cinder用户并设置权限;
# 针对pool设置权限,pool名对应创建的pool
[root@controller01 ~]# ceph auth get-or-create client.cinder mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes, allow rwx pool=vms, allow rx pool=images'
[root@controller01 ~]# ceph auth get-or-create client.glance mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=images'
2)推送client.glance秘钥
# 将创建client.glance用户生成的秘钥推送到运行glance-api服务的节点
[root@controller01 ~]# ceph auth get-or-create client.glance | tee /etc/ceph/ceph.client.glance.keyring
[root@controller01 ~]# ceph auth get-or-create client.glance | ssh root@controller02 tee /etc/ceph/ceph.client.glance.keyring
[root@controller01 ~]# ceph auth get-or-create client.glance | ssh root@controller03 tee /etc/ceph/ceph.client.glance.keyring # 同时修改秘钥文件的属主与用户组
[root@controller01 ~]# chown glance:glance /etc/ceph/ceph.client.glance.keyring
[root@controller01 ~]# ssh root@controller02 chown glance:glance /etc/ceph/ceph.client.glance.keyring
[root@controller01 ~]# ssh root@controller03 chown glance:glance /etc/ceph/ceph.client.glance.keyring
3)推送client.cinder秘钥(nova-volume)
# 将创建client.cinder用户生成的秘钥推送到运行cinder-volume服务的节点
[root@controller01 ~]# ceph auth get-or-create client.cinder | ssh root@compute01 tee /etc/ceph/ceph.client.cinder.keyring
[root@controller01 ~]# ceph auth get-or-create client.cinder | ssh root@compute02 tee /etc/ceph/ceph.client.cinder.keyring
[root@controller01 ~]# ceph auth get-or-create client.cinder | ssh root@compute03 tee /etc/ceph/ceph.client.cinder.keyring # 同时修改秘钥文件的属主与用户组
[root@controller01 ~]# ssh root@compute01 chown cinder:cinder /etc/ceph/ceph.client.cinder.keyring
[root@controller01 ~]# ssh root@compute02 chown cinder:cinder /etc/ceph/ceph.client.cinder.keyring
[root@controller01 ~]# ssh root@compute03 chown cinder:cinder /etc/ceph/ceph.client.cinder.keyring
4)推送client.cinder秘钥(nova-compute)
这里nova-compute服务与nova-volume服务运行在相同节点,不必重复操作。
5)libvirt秘钥
nova-compute所在节点需要将client.cinder用户的秘钥文件存储到libvirt中;当基于ceph后端的cinder卷被attach到虚拟机实例时,libvirt需要用到该秘钥以访问ceph集群; # 在管理节点向计算(存储)节点推送client.cinder秘钥文件,生成的文件是临时性的,将秘钥添加到libvirt后可删除
[root@controller01 ~]# ceph auth get-key client.cinder | ssh root@compute01 tee /etc/ceph/client.cinder.key
[root@controller01 ~]# ceph auth get-key client.cinder | ssh root@compute02 tee /etc/ceph/client.cinder.key
[root@controller01 ~]# ceph auth get-key client.cinder | ssh root@compute03 tee /etc/ceph/client.cinder.key # 在计算(存储)节点将秘钥加入libvirt,以compute01节点为例;
# 首先生成1个uuid,全部计算(存储)节点可共用此uuid(其他节点不用操作此步);
# uuid后续配置nova.conf文件时也会用到,请保持一致
[root@compute01 ~]# uuidgen
# 添加秘钥
[root@compute01 ~]# cd /etc/ceph
[root@compute01 ceph]# touch secret.xml
[root@compute01 ceph]# vim secret.xml
<secret ephemeral='no' private='no'>
<uuid>10744136-583f-4a9c-ae30-9bfb3515526b</uuid>
<usage type='ceph'>
<name>client.cinder secret</name>
</usage>
</secret> [root@compute01 ceph]# virsh secret-define --file secret.xml
[root@compute01 ceph]# virsh secret-set-value --secret 10744136-583f-4a9c-ae30-9bfb3515526b --base64 $(cat /etc/ceph/client.cinder.key)
高可用OpenStack(Queen版)集群-14.Openstack集成Ceph准备的更多相关文章
- Corosync+Pacemaker+DRBD+MySQL 实现高可用(HA)的MySQL集群
大纲一.前言二.环境准备三.Corosync 安装与配置四.Pacemaker 安装与配置五.DRBD 安装与配置六.MySQL 安装与配置七.crmsh 资源管理 推荐阅读: Linux 高可用(H ...
- 高可用,完全分布式Hadoop集群HDFS和MapReduce安装配置指南
原文:http://my.oschina.net/wstone/blog/365010#OSC_h3_13 (WJW)高可用,完全分布式Hadoop集群HDFS和MapReduce安装配置指南 [X] ...
- 16套java架构师,高并发,高可用,高性能,集群,大型分布式电商项目实战视频教程
16套Java架构师,集群,高可用,高可扩展,高性能,高并发,性能优化,设计模式,数据结构,虚拟机,微服务架构,日志分析,工作流,Jvm,Dubbo ,Spring boot,Spring cloud ...
- 高可用OpenStack(Queen版)集群-16.Nova集成Ceph
参考文档: Install-guide:https://docs.openstack.org/install-guide/ OpenStack High Availability Guide:http ...
- 分布式架构高可用架构篇_03-redis3集群的安装高可用测试
参考文档 Redis 官方集群指南:http://redis.io/topics/cluster-tutorial Redis 官方集群规范:http://redis.io/topics/cluste ...
- Linux 高可用(HA)集群之keepalived详解
http://freeloda.blog.51cto.com/2033581/1280962 大纲 一.前言 二.Keepalived 详解 三.环境准备 四.LVS+Keepalived 实现高可用 ...
- JMS之——ActiveMQ 高可用与负载均衡集群安装、配置(ZooKeeper + LevelDB + Static discovery)
一.说明 从 ActiveMQ 5.9 开始, ActiveMQ 的集群实现方式取消了传统的 Master-Slave 方式,增加了基于ZooKeeper + LevelDB 的 Master-Sla ...
- 【线上测试之后的应用】基于MySQL+MHA+Haproxy构建高可用负载均衡数据库集群(详解)
这里我们先介绍一下MHA是什么,其次就是它的应用与测试,同时为了大家呈现了数据备份案例,最后总结了使用情况以及注意事项和解决办法 一.MHA 概述 MHA(Master High Availabili ...
- 通过LVS+Keepalived搭建高可用的负载均衡集群系统
1. 安装LVS软件 (1)安装前准备操作系统:统一采用Centos6.5版本,地址规划如下: 服务器名 IP地址 网关 虚拟设备名 虚拟ip Director Server 192.168 ...
随机推荐
- 20165318 2017-2018-2 《Java程序设计》第六周学习总结
20165318 2017-2018-2 <Java程序设计>第六周学习总结 教材内容学习总结 第八章 常用实用类 1.String类 String类用来处理字符序列,在java.lang ...
- 10、Android--技巧
10.1.全局获取Context的技巧 在实践中有很多的地方都可以使用到Context 弹出Toast的时候需要,启动活动的时候需要.发送广播的时候需要. 操作数据库的时候需要.使用通知的时候需要.. ...
- Jenkins + GitLab 通过 Webhook 自动触发构建爬坑记录
前言 在局域网搭建了一个Jenkins服务,用于自动构建和发布,在调通了构建程序之后,想使用内网的GitLab的Webhook功能触发代码推送事件,然后进行自动构建.后来发现在GitLab上做测试 ...
- P1131 [ZJOI2007]时态同步
题目描述 小Q在电子工艺实习课上学习焊接电路板.一块电路板由若干个元件组成,我们不妨称之为节点,并将其用数字1,2,3….进行标号.电路板的各个节点由若干不相交的导线相连接,且对于电路板的任何两个节点 ...
- Linux下如何查看分区文件系统类型
1,fdisk -l fdisk -l 只能列出硬盘的分区表.容量大小以及分区类型,但看不到文件系统类型. 2,df -h df 命令是用来查看文件系统磁盘空间使用量的.但df 命令只会列出已挂载的文 ...
- Linux下onvif客户端获取ipc摄像头 GetServices:获取媒体地址(有的h265摄像头必须要这个接口)
GetServices:获取媒体地址(有些h265的摄像头必须用到这个接口,得到获取能力时没获取到的另一个媒体地址) 鉴权:但是在使用这个接口之前是需要鉴权的.ONVIF协议规定,部分接口需要鉴权,部 ...
- HTML:5meta标签
<h2>一些常用的移动端的meta属性设置</h2><!DOCTYPE html> <!-- 使用 HTML5 doctype,不区分大小写 --> & ...
- HBase基础概念
定义 非关系型分布式列式数据库,支持大数据量查询(百万,上亿行) 概要 数据存储:HDFS 数据计算:MapReduce/Spark 服务协调:Zookeeper 特征 列式存储(列只有一种类型byt ...
- 一个yum源for centos6.x
rpm -Uvh http://www.city-fan.org/ftp/contrib/yum-repo/city-fan.org-release-1-12.rhel6.noarch.rpm
- WebLogic远程命令执行
靶机说明 目标ip:172.16.53.28(window 2003) 本靶机所针对的序列化漏洞系列以及常见安全问题如下: 弱口令登陆控制台部署war包webshell CVE-2018-2893 C ...