OpenStack超融合部署架构
一.前言
1. 什么是超融合
三种常见的蔬菜:土豆、茄子、青椒放在一起可以烹调出永远的经典味道—“地三鲜”。
而三大IT基础设施组件:计算、存储、网络在一起也能被烹调出“超融合架构”这一概念。但是,计算、存储、网络要如何才能愉快地统一?传统IT架构如何才能变得更加弹性和可扩展?而长期以来困扰传统IT架构的扩容难题完美的解决方案在哪里?
超融合的“超”是指“虚拟化”
想要深度剖析“超融合”生态圈,首先必须清楚“超融合”这一概念的来源。超融合架构虽然有一个“超”(Hyper)字,但也并不是什么神秘的概念, 业界普遍认为,计算与存储一体(而非使用共享存储,如传统SAN)的融合系统,通过分布式存储软件技术整合为统一的存储池(如VMware的VSAN), 才可以被称为“超融合系统”。
事实上,这一概念最早源于存储初创厂商将Google、Facebook等互联网厂商采用的计算存储融合的架构用于企业应用环境(通常采用服务器虚 拟化技术,但传统融合系统也是如此),为企业客户提供一种将存储做到计算服务器中的融合产品。“因此,超融合架构最核心的改变是存储,而这一概念的最初推 动者也都是来自于互联网背景的存储初创厂商。
下面是传统IT架构和基于云计算背景的超融合架构,如下图所示:
当今,放眼世界。云计算领域最火的架构是什么?无疑,是“超融合”。
国外有Mirantis、VMware、SMARTX等领导厂商先后进入超融合领域,国内也有99Cloud、Unitedstack等云公司,使用“超融合”架构。一时间,国内超融合生态圈厂商众多,颇有些混乱和看不清楚的感觉。
那他们又是怎么做的呢?下面且听道来:
2.环境
在 <= 10台物理服务器(Host)、500台虚拟机(VM)情况下,通常使用超融合部署架构,即:
计算存储超融合(8台Host):计算节点和存储节点放在同一个物理节点上,通过存储资源池,做副本和冗余方式实现镜像的高可用,针对某些特定需求的VM,做VM的HA。
网络控制超融合(2台Host):在这种环境下,网络模式选择VLAN,网络节点和控制节点服务放在同一个物理节点上,同时提供网络和控制服务,通过HAproxy、Corsync等实现心跳检测和高可用。
目前,实现增大链路带宽,解决交换网络中因带宽引起的网络瓶颈、高可用;以及提高服务器网卡数据传输效率。通常我们可以用如下一些常见办法:
1)服务器网卡做绑定
2)交换机做链路聚合(端口聚合)
3)使用STP(生成树协议)
3)其他
二.网络控制规划
如下图所示:
目前只有两种节点,一种是计算存储节点,另一种是网络控制节点,由于网络节点做了HA的高可用,所以任何一个计算节点宕机,只会影响其上面承载的虚 拟机,不会影响其他节点,如果是一个可以预知的宕机,你可以先将其上的虚拟机迁移到其他机器,这样就可以将对服务的影响降到最低。
另外,控制节点是主备模式,并且采用冷备的方式,但是数据库保持实时同步。因为这种私有云的架构对控制节点的依赖非常小,控制节点宕机,在不重启计算节点的OpenVswitch-Aagent的情况下,几乎不会影响虚拟机的正常运行。
在网络的架构上,虚拟机网络通过网桥,采用Trunk模式,直接连接到交换机,具有较好的性能和极高的稳定性。管理网络是OpenStack各个组 件通信的网络,包括镜像分发,虚拟机迁移等都是走这个网络。存储网络是虚拟机访问共享存储GlusterFS或Ceph的网络(超融合架构中,存储网络一 般不独立使用)。
由于在超融合计算存储——网络控制架构中,使用的是基于VLAN的Neutron模式。所以淘汰了L3-Agent,L3-Agent主要有两方面作用,即:
一是Floating ip:通过Linux Network namespace提供Fixed ip到Float ip的NAT转换(由iptables来实现),从而实现上外网的功能。
二是qrouter:在不同内部子网中转发数据包;通过指定内部网关做NAT。每一个子网对应router上的一个端口,这个端口的ip就是内网子网的网关。
由于VLAN数据包直接经过IP网络,出外网,并不需要L3的虚拟路由器。同时也是为了摒弃L3-Agent的稳定性和性能问题、L3的复杂性问 题。需要停用L3-Agent,虚拟机首先连接到br-int,,br-int连接到br-em3上,通过Trunk就可以达到外部网络,这样的架构解决 了两个问题:第一,能够保证网络的性能和稳定性,第二,能实现和内网其他机器无缝互通。
基于此,我们的规划如下面所示:
1.网络规划(VLAN)
在物理服务器3张网卡情况下,一般网络规划是:
eth0:外部网络、业务网络(floating ip)
eth1:数据网络(private ip)
eth2:管理网络、存储网络
Neutron,采用VLAN
IPMI网络:172.16.99.0/24(VLAN 99)
数据网络:172.16.100.0/24(VLAN 100)
外部网络/业务网络/管理网络:
172.16.101.0/24(VLAN 101) 172.16.102.0/24(VLAN 102) 172.16.103.0/24(VLAN 103)
物理交换机创建相应的vlan,网段对应于vlan id。
2.VLAN注意事项
vlan模式下,不同租户使用的IP地址不能重复。
由于vlan标签的标志位是12bit,所以vlan号的范围是1-4096,也就是系统中最多只能有4096个租户,不适用于公有云(Nicira NVP作为Neutron的插件解决了这个问题)
3.网络类型
集成OpenStack时需要考虑的几种网络,这种架构和环境下,我们使用VLAN。
在一个现有的数据中心网络中集成OpenStack时,有四种网络必须考虑到。这些网络分别是:
管理网络:部署OpenStack环境时,各种服务的配置文件均会使用这个网卡上的IP。
用于OpenStack组件之间的内部通信。这个网络上的IP地址应该仅仅在数据中心内是可达的。
数据网络:用来连通各个节点上的br-tun网桥,构造通信平面,这个通信层可以构建隧道[GRE],也可以构建L3通信协议层[VXLAN]。同时它也负责连通租户虚拟网络内的网络设备,使虚拟机之间进行网络通信。
Public/API网络:一般用在控制节点和网络节点上,需要和外部通信。
存储网络(可选)
由于这里是中小等私有云环境,可不考虑单独使用存储网络,也没有单独的存储节点。
网络存储技术有很多种,其中存储区域网络(SAN)是将服务器连接到光纤通道上与存储设备互联,用于存储数据流量通常情况下都比较大的情况。
存储网络的技术主要包括NAS、SAN和RAIDS以及iSCSI,下面分别予以介绍。
NAS (网络连接式存储)是通过以太网将存储节点上的文件系统作为计算节点的一个网络访问元素来使用,存储节点的文件系统可以是NFS和 CIFS。
SAN 则是将NAS 中的以太网换成了光纤(Fiber Channel)网络,让计算节点看来是本地的一个存储系统一样,因为光纤带宽较高,这里需要提及的一个标准是FCoE(Fiber Channel over Ethernet),是通过增强的10Gbps 以太网技术在支持FCoE 的交换机的环境下,使用隧道协议允许将光纤通道的信息封装到以太网信息内,将本来运行于光纤通道的交互信息和数据信息通过以太网来传输,融合LAN 和SAN 的数据类型,减少线缆设备及耗电、网络收敛便于管理,但是这种技术毕竟是一种新技术,为了保证FCoE 在以太网中不丢包引入了DCB(Data CenterBridging)的概念,目前尚不成熟。
RAIDS 是将一系列物理磁盘作为一个存储单元,数据可以在这个单元里复制和分发,并且用其冗余和高可靠性能对计算节点的错误做到容忍。
iSCSI 并不能算是一种存储网络类型,只是一种基于IP 技术的接口标准,由IBM 公司研究开发的,包括一套指令集,可以与以太网技术或光纤网络进行融合,比如SAN 就是使用了iSCSI 技术和光纤网络,达到硬件成本低、扩展性强、操作容易和高性能的优势。
另外,OpenStack 存储里需要提及的技术是Ceph(http://ceph.com/),这是一种大容量、通过负载实现高性能和高性能的分布式文件系统,也是OpenStack 里寄予厚望的开源存储解决方案,UnitedStack 的生产环境里采用了Ceph 技术。
通过VLAN来连接分散在不同物理机中不同的租户网络实际上和nova-network的VLANManager在想法上是一脉相承的,都是为每一个租户网络分配一个物理交换机上的VLAN,在连接所有节点的同时通过不同的VLAN保证了租户网络的隔离性。
4.fixed-ip和floating-ip区别
OpenStack 对炔康耐绻芾碛fixed-ip以及floating-ip两个概念,Fixed-IP是由VM绑定,VM自创建后便不会改变,然而Floating-IP是可以随时bind给一个VM或释放的,依照OpenStack的文件表示,Floating-IP是属于Public IP,一个VM在取得Floating-IP之前是]有对外的连接功能的,Fixed-IPt是Private IP,VM之间可以用此Private-IP来互相通信,每个project会启动一个dnsmasq来配置虚拟机的fixed ip。再借由路由器的NAT功能,实现上外网。
5. 网络控制节点的高可用
OpenStack High Availability(高可用)
目前并没有官方声明OpenStack支持虚拟机级别的高可用性,这个特性在Folsom版本被提出,但是后续又被放弃了。目前OpenStack有一个孵化项目Evacuate, 其作用是为OpenStack提供虚拟机级别高可用支持。
网络控制节点由于在整个环境中,提供着非常重要的各种服务,因此,实现HA,便及其重要。通常来说,实现各项服务的HA,有如下几种:
- Mysql:Galear
- RabbitMQ、OpenStack Service:Corosync + Pacemaker
- Horizon VIP:keepalive
三.计算存储规划
1.磁盘规划
注意,这里的值,是我们假设的,需要你按照自己的实际条件来设定。
1.1 控制网络节点分区
1.2 计算存储节点分区
2. 操作系统分区
2.1 控制/网络节点
2.2计算/存储节点
备注
云硬盘(Cinder)和Glance共用一个glance volume,如上述规划。
SSD硬盘(RAID 0):用于系统盘
SATA大容量硬盘(RAID 5):用于存储镜像、虚拟机文件、云硬盘和其他存储等。
3.实例和镜像存储规划
计算节点之间使用glusterfs分布式文件系统做集群,提供共享存储资源池,副本数为2。用于存储云硬盘、镜像文件、虚拟机文件、以及备份数据等。
4. 计算资源规划
在计算方面除了CPU需要支持虚拟化技术之外,其通常是1个物理CPU虚拟化16个VCPU(1:16)。
底层的Hypervisor,使用成熟稳定,社区推荐的KVM。
四.思考
1.怎样实现虚拟机(VM)如数据库般的高可用性、实时无缝迁移。针对云环境中某些特殊的VM,或许我们可以做VM级别的HA。
2.部署OpenStack环境相对较易,如何有效实施后期的运维、管理。
3.如何让OpenStack实现企业最大的期望目标。
参考资料:
1.http://docs.openstack.org/high-availability-guide/content/ch_preface.html
2.http://www.openstack.cn/?p=3663