ZStack拥抱分布式存储Ceph
Ceph中国社区 > 技术文档 > ZStack拥抱分布式存储Ceph
Ceph China 小编 2016-05-08 0 Comments
ZStack 0.9 RC版本去年发布,集成两大功能:分布式存储Ceph和负载均衡。目前为止ZStack已经支持了四大存储类型:包括NAS,DAS,SAN和分布式存储。负载均衡也是公、私有云项目里的重要配置功能。功能简介:
1.分布式存储Ceph
使用分布式存储Ceph的用户可以添加已有的Ceph存储为ZStack的主存储和备份存储。对于ZStack一个Zone内的Clusters将可以共享共同Ceph作为主存储和备份存储。根据不同的需求,用户可以把Ceph预先配置在计算节点上,或者使用独立存储节点搭建Ceph。在添加Ceph存储的时候,用户只需要提供Mon的Urls即可。用户使用Ceph,可以解决存储高可靠性,存储扩展,以及对对象存储等相关问题。
2.负载均衡
负载均衡是自ZStack虚拟路由器发布以来增加的一个网络服务。用户可以启动多个云主机并把他们加入到一组负载均衡 Listener中。通过用户指定的算法(RoundRobin,LeastConn,Source),负载均衡 Listener会把收到的网络包转发给不同的云主机处理,从而提高网络处理能力并提供高可靠的网络服务。此外,ZStack负载均衡器还具有监测用于负载均衡的云主机健康状态的能力。
下面主要说下Zstack支持Ceph分布式存储的功能
从0.9版本开始,ZStack正式支持Ceph作为主存储和备份存储的设备。为了最大化的利用Ceph存储的高级能力, 在一个Zone内,用户需要使用一个Ceph Cluster同时作为主存储和备份存储。这样做的好处是, 避免了用户在创建新的云主机、备份Volume等操作时,主存储和备份存储之间不必要的数据拷贝, 所有的数据操作都是通过COW(copy on write)来实现的。 ZStack和Ceph之间的交互是通过部署在Ceph Mon服务器上的Agent来完成的。用户可以动态的添加或删除Ceph的Mon服务器。
Ceph 备份存储
Ceph 备份存储只能和Ceph主存储配合使用
使用Ceph的一个主要的好处是因为Ceph支持COW,所以在ZStack中,如果使用了Ceph的备份存储,那么主存储也必须是同一个Ceph。 由于Ceph备份存储和主存储都使用相同的Ceph cluster,所以用户不能把一个Ceph的备份存储挂载到多个ZStack的Zones上。 最好的使用方法是每一个Zone使用独立的Ceph cluster作为同一套主存储和备份存储。 换句话说,当ZStack的Zone仅仅挂载了Ceph作为备份存储的时候,你不能再使用NFS、本地存储以及ISCSI作为该Zone的主存储。 当一个Zone同时挂载Ceph备份存储和SFTP备份存储的时候,可以混用多种主存储类型。但是需要特别注意的是, 如果云主机的镜像文件只存在于Ceph备份存储的时候,该云主机只能在Ceph主存储上创建成功。 假设创建云主机时选择的L3网络所在的Cluster上没有挂载Ceph主存储,但是该云主机的镜像文件只存在在Ceph备份存储 上,那么创建云主机将会发生找不到合适主存储的失败。
从UI添加Ceph备份存储
- 选择类型 ‘Ceph’
- 输入Ceph mon server的 IP/hostname
- 输入Ceph mon server的 SSH 用户名
- 输入Ceph mon server的 SSH 密码
- 点击 ‘Add’
- 重复步骤 3 ~ 5 来添加其他的Ceph Mon服务器
- 点击 ‘Next’
通过CLI添加Ceph备份存储
你可以使用 AddCephBackupStorage 来添加 Ceph 备份存储. 例如:
>>>AddCephBackupStorage name=ceph monUrls=root:密码@192.168.0.123,root:password@192.168.0.124,root:password@192.168.0.125
monUrls是一个字符串列表,每一个Mon服务器的信息通过逗号来分割,每一个Mon服务器的信息遵从如下的格式:
1 | ssh_用户名:ssh_密码@mon_server_ip:[ssh_port][/?monPort=ceph_mon_port] |
ssh_用户名,ssh_密码,mon_server_ip是必须的内容,而ssh_port和ceph_mon_port是选填的。ceph_mon_port是Ceph Mon服务器的端口,默认值为6789. 一个完整的monUrl的例子是:root:password@192.168.0.123:22/?monPort=6789.
指定 pool
AddCephBackupStorage有一个特别的参数poolName。通过它,用户可以指定一个存在的Ceph Pool。 当用户指定一个pool的名字的时候,ZStack会使用这个pool。当这个pool不存在的时候,ZStack将会报告一个添加失败的错误。 当用户不指定特别的pool名字的时候,ZStack会自动创建一个新的pool。 你可以利用这个功能预先创建一个合适的pool。
动态添加Mon服务器
在添加了Ceph备份存储后,用户还可以给该备份存储添加新的Ceph Mon服务器:
>>>AddMonToCephBackupStorage uuid=d914841733fa499c9dc6d63ea339469d monUrls=root:password@192.168.0.123,root:password@192.168.0.124,root:password@192.168.0.125
动态删除Mon服务器
你还可以使用 RemoveMonFromCephBackupStorage 来删除一个Ceph Mon服务器。
>>>RemoveMonFromCephBackupStorage uuid=d914841733fa499c9dc6d63ea339469d monHostnames=192.168.0.123,192.168.0.124
monHostnames是一个通过逗号分割的字符串列表,里面是Mon的IP地址。
查询Ceph备份存储
使用QueryCephBackupStorage可以查询所有Ceph备份存储的详情:
Ceph主存储
Ceph主存储既可以和Ceph备份存储协同工作,也可以使用SFTP备份存储。
通过UI添加
- 选择类型 ‘Ceph’
- 输入Ceph mon server的IP/hostname
- 输入Ceph mon server的SSH 用户名
- 输入Ceph mon server的SSH 密码
- 点击 ‘Add’
- 重复步骤 3 ~ 5 来添加其他的Ceph Mon服务器
- 点击 ‘Next’
Add through CLI
你可以使用 AddCephPrimaryStorage 来添加一个 Ceph 主存储。 例如::
>>>AddCephPrimaryStorage name=ceph zoneUuid=d914841733fa499c9dc6d63ea339469d monUrls=root:password@192.168.0.123,root:password@192.168.0.124,root:password@192.168.0.125
monUrls是一个字符串列表,每一个Mon服务器的信息通过逗号来分割,每一个Mon服务器的信息遵从如下的格式:
1 | ssh_用户名:ssh_密码@mon_server_ip:[ssh_port][/?monPort=ceph_mon_port] |
ssh_用户名,ssh_密码,mon_server_ip是必须的内容,而ssh_port和ceph_mon_port是选填的。ceph_mon_port是Ceph Mon服务器的端口,默认值为6789. 一个完整的monUrl的例子是:root:password@192.168.0.123:22/?monPort=6789.
指定 pool
AddCephPrimaryStorage有三个个特别的参数imageCachePoolName, rootVolumePoolName, dataVolumePoolName。 通过它们,用户可以指定存在的Ceph Pool作为主存储的Pool。 当用户指定pool的名字的时候,ZStack会使用这个pool。当pool不存在的时候,ZStack将会报告一个添加失败的错误。 当用户不指定特别的pool名字的时候,ZStack会自动创建三个新的pool。你可以利用这个功能预先创建合适的pool。在指定Pool的时候,你可以只指定其中的一个或者两个,然后由ZStack来创建其余的Pool。
动态添加Mon服务器
在添加了Ceph主存储后,用户还可以给该主存储添加新的Ceph Mon服务器:
1 | >>>AddMonToCephBackupStorage uuid=d914841733fa499c9dc6d63ea339469d monUrls=root:password@192.168.0.123,root:password@192.168.0.124,root:password@192.168.0.125 |
动态删除Mon服务器
你还可以使用 RemoveMonFromCephPrimaryStorage 来删除一个Ceph Mon服务器。
>>>RemoveMonFromCephPrimaryStorage uuid=d914841733fa499c9dc6d63ea339469d monHostnames=192.168.0.123,192.168.0.124
ThemonHostnamesis a list of IPs of mon servers that you want to remove.
查询Ceph主存储
你可以使用QueryCephPrimaryStorage来查询所有的Ceph主存储的详细信息: 关于Zstack
ZStack 是全新的开源 IaaS 软件,它的诞生是为了解决困绕 IaaS 软件的几大难题:复杂度、稳定性、可伸缩性和灵活性。作为这个领域的新项目,ZStack 从前辈身上学习到了很多经验,并且针对各种云的问题重头设计了整套架构。
ZStack 已经提供了大部分IaaS的基本功能,包括:虚拟机管理,存储卷管理,存储卷快照,各种网络服务(DHCP、DNS、SNAT、EIP、PortForward以及Security Group)。请访问官网网站以获取完整的功能列表:http://zstack.org/documentation/features-matrix.html ZStack非常容易安装。在快速安装说明(http://zstack.org/installation/)里,记录了如何通过两条命令,5分钟时间,完成在一台Linux机器上部署单机演示环境。或者阅读多控制节点安装手册(http://zstack.org/installation/multi-node.html),在30分钟内搭建一个可以负责管理成百上千台服务器的服务集群。