智囊团王荣繁分享:OpenStack 的调优运营经验
Posted 云头条
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了智囊团王荣繁分享:OpenStack 的调优运营经验相关的知识,希望对你有一定的参考价值。
智囊团分享人:王荣繁 宝德科技集团云事业群云技术中心主管,宝德云技术总监。2012年开始接触OpenStack、OpenShift等开源云计算平台,带领团队进行宝德公有云的软硬件架构设计、研发、运维,并负责宝德私有云解决方案的总体设计。
最近Docker在市场活动上的声音比较大,颇有孕育一场IT新变革的势头,不禁让人想起2012年的OpenStack。
OpenStack是目前最活跃的开源社区,也是拥有最多IT巨头支持的开源云计算平台,“智囊团”1群也刚刚闲谈过OpenStack,借着顺风车,今天继续向大家分享一些宝德云在OpenStack上的调优、运营经验,部分内容在OpenStack五周年庆深圳站的Topic上已有分享过。
首先,简单介绍一下宝德在云计算上的发展历程。
宝德1997年成立,2002年在香港上市,是拥有18年历史的国产服务器厂商。
2012年开始研究云计算平台,2013年基于OpenStack Essex提供宝德云1.0,初期主要在集团内部企业进行推广使用及邀请测试。
2014年,在软件定义网络SDN、软件定义存储SDS等方向上大力投入,并基于OpenStack Icehouse发布宝德云2.0。
2015年,基于计算、存储超融合架构及超融合一体机生态圈,整合OpenStack云管理平台与传统硬件解决方案。
今天的分享内容大致分为三个部分:
OpenStack的经典部署及高可用方案
OpenStack云平台各组件工作流程及秒级响应调优措施
提高用户体验的功能细节及运营功能
OpenStack的经典部署及高可用方案
目前,OpenStack在国际、国内均已有非常多的成功落地案例,各类云计算会议上也经常看到圈内朋友展示的Usecase。
OpenStack云管理平台主要由控制节点、计算节点、网络节点组成,核心组件包括:Keystone、Glance、Nova、Cinder、Neutron、Horizon,以及Ceilometer、Trove、Heat等等,存储后端根据用户选型,会有集中式存储或分布式存储。
OpenStack由众多组件组成,各组件的高可用部署方案也会有所差异,下面几张高可用架构部署图来自于社区的Ops Docs。
控制节点上主要运行Keystone、Glance、Cinder、Nova、Neutron、Horizon、数据库以及HA组件,大部分服务可以实现Active-Active方式的HA,多个Glance-API可以使用共享存储,统一保存虚拟机镜像文件。Cinder-Volume可以采用Multiple Storage Backend,在一个服务上同时管理多个存储后端。
计算节点上主要运行Nova、Neutron组件,结合KVM、Xen、VMWare、Hyper-V等不同虚拟化软件,提供计算虚拟化服务,每台计算节点分别承载用户的云主机实例。借助集中式存储或分布式存储,通过热迁移、移植云主机等方式,保障云主机的服务可用性和数据持久性。
网络节点上主要运行Neutron组件,包括DHCP、L3、Metadata、OpenvSwith/LinuxBridge等Agent服务。图中是采用Pacemaker在两台网络节点间实现主备式的HA,切换过程中虚拟机南北向流量会出现短暂的中断。除了主备式外,目前还有DVR、Dragonflow、硬件SDN等分布式路由的方案,减少网络故障造成的影响范围。
这是云平台中三个网络平台:管理网络、VM数据网络、外部网络,以及各类型节点的网络端口配置。在实际生产环境中,往往会将存储节点单独放置于万兆存储网络,以提高虚拟机存储的IO性能。
OpenStack云平台各组件工作流程及秒级响应调优措施
云计算平台的核心任务是保障用户业务的安全、稳定运行,因此系统高可用方案是重中之重。除此之外,从用户体验角度来看,提供一个快速响应、即时申请资源的管理平台,也必不可少。
在OpenStack云平台架构中,云资源的创建、删除、调整、查询等流程错综复杂。
主要会有以下几个关键点影响了工作流程:
Horizon Polling
Image Prepare
Keystone Token
OpenStack APIs
Messaging Queue
Database Performance
Network Spwaning
VM Boot Grub and CloudInit
VM Resize/Migrate
Horizon:大部分OpenStack厂商都会重新定制一套Portal界面,采用WebSocket推送的方式替换社区版本中的轮询方式。比如,宝德云基于Redis、WebSocket、Gevent等,在uWSGI中开启两个实例:一个处理用户的正常HTTP请求,一个处理WebSockt请求。
Image Prepare:
(1)当默认使用本地存储创建新虚拟机时,需要从控制节点Glance下载基础镜像文件到计算节点(如本地已有镜像文件缓存,则可跳过);
(2)虚拟机进行系统盘快照时,需要合并基础镜像和磁盘文件,并上传至Glance。
根据基础镜像文件、用户实际使用磁盘空间的大小,使用本地存储在这个过程中可能会花费大量的时间。
因此,在这上面出现了大量的替代方案:
(1)使用Qcow2格式镜像
(2)SharedStorage:在计算节点上使用共享存储,如NFS\CephFS\GlusterFS
(3)Boot From Volume:从统一存储启动云主机系统
(4)Ceph:由Ceph统一提供Glance、Cinder、Nova存储服务,虚拟机镜像、系统盘、数据盘分别置于Ceph的不同Pool,避免反复的下载、上传、克隆。
Keystone Token:使用mysql存储大量token会增加身份验证的时长,采用Memcached共享控制节点间的Token即可。相比PKI格式,采用UUID格式的Token可以减少身份验证时传输的数据包大小。
OpenStack APIs:各组件间的调用基本使用API方式,每个组件的API响应速度都会影响操作流程。大部分组件的API都可以采用MultiHost\MultiWorkers的部署方式,通过增加节点数、增加工作线程数的方式,可大幅提高并发请求数。
Messaging Queue:大部分组件内部不同进程间是采用消息队列的方式进行通讯,部分组件间的交互也有采用消息队列,如发送Notification信息至Ceilometer。社区中默认的消息队列选项有Qpid、RabbitMQ,在小规模环境下,这两个均可正常服务。然而,随着规模的增大,服务器/客户端模式的消息队列必然出现瓶颈。宝德云采用P2P模式的ZeroMQ、RabbitMQ相互结合的方式,满足在大规模部署场景下的消息发送、响应需求。在云平台不同服务上采用MatchMakerRedis、MatchMakerRing等消息目标映射方式。
Database Performance:在所有数据库信息系统里,数据库性能的优化是一项极其关键的任务。宝德云在OpenStack数据库选择上采用了MySQL集群发行版Percona及非关系型数据库MongoDB。
数据库调优项包括:
innodb_buffer_pool_size、innodb_log_file_size、max_connections、innodb_file_per_table、innodb_flush_log_at_trx_commit、 innodb_flush_method、innodb_log_buffer_size、query_cache_size、log_bin、skip_name_resolve等等。
在文件系统、内存、CPU上也有常见的调优项:
ext4 (or xfs), mount with noatime、Scheduler – use deadline or noop;Swappiness and NUMA;no powersave mode、no ondemand等等。
Network Spwaning:除了VLan/GRE/VxLAN、OVS/LinuxBridge等不同选型外,在Neutron网络服务配置上也有几个可优化项,如采用Namespace、从DHCP获取Metadata、增加DHCP leaseTime、设置dnsmasq_no_ping、调整Kernel ARP Table等等。
8、VM Boot Grub and CloudInit:不同操作系统版本的虚拟机镜像制作时,会有一些提高启动速度的配置。
9、VM Resize/Migrate:有很多方法可以提高云主机更改配置、迁移云主机的速度。比如:allow_resize_to_same_host=None、resize_to_same_host=require
提高用户体验的功能细节及运营功能
在这里不是做产品功能宣传,只是简单分享一下宝德云做过的一些提高用户体验的功能细节及运营功能,公有云的同行们可以相互交流一下经验,共同促进公有云的良性发展。
云平台修改VM密码密钥:通过简单的shell或bat脚本,从Nova获取元数据,当用户密码遗失时特别有用;
修改Hostname:社区中重命名默认只修改Display Name,不修改Hostname;
多虚拟网卡、多安全组规则:基于SDN构建VPC,每个虚拟网络端口都可设置安全组;
上下行带宽:只收取上行费用,下行默认免费30Mbps,花1M带宽的费用,享用30M的数据上传、软件包安装速度;
按需计费、按月计费、预付费、后付费:多种计费方式、多种付费方式
运营功能主要包括:
基于OpenStack各组件Policy策略的销售、代理商权限控制:销售人员、代理商可以查看所属用户资源,但权限必须得到严格控制;
资源配额限制、客户资源管理、客户消费预估、财务管理、工单管理、代金券管理、代理商管理;
今天的分享大致到这里,感谢云头条智囊团,感谢各位!
提问环节:
问:宝德的超融合和awcloud有关系吗?
答:由年intel发起的生态圈,宝德主要作为ODM厂商,云管理平台厂商包括AWCloud,99Cloud,Smartx等,上层会有一系列的SI和ISV。
问:宝德云的主要目标客户和行业是?
答:宝德云包括公有云和私有云,目前公有云的客户主要在于游戏,电子商务和P2P金融等互联网行业,宝德私有云会利用服务器在全国和省市渠道,各行业都有落地案例,比较典型的有政务的江苏国税税务平台,广电行业的安徽广行的”视频看护”云平台。
问:宝德云为私有云公有云都提供哪些售后服务呀?
答:公有云上除了云平台功能的使用支持外,我们的客服还经常被客户要求,做一些简单的中间件安装。私有云分为两类:托管云和企业内部云,比如安徽广行的“视频看护”云平台托管于广电的机房,江苏国税税务云平台部署于南京国税机房内网。
问:私有云只做托管么?
答:除了初期的硬件安装,交换机配置,软件部署外,后期在网络可达的情况下,会提供一年的免费服务支持。如果网络不可达,会让各地的服务器售后团队到达现场支持。
问:私有云的话我们对OpenStack定制化做得多吗?如果定制太多,你和社区的同步是怎么处理?
答:用到的每个OpenStack每个组件都要修改,目前是基于Icehouse,backport社区重要的BugFixed.
问:游戏云使用什么存储?
答:存储方案包括分布式存储,集中式存储。我们测试使用过本地存储的RAID+BBU+1GB Cache,Sheepdog,Nexenta,SolidFire,ScaleIO,GlusterFS,CEPH,SAN等等方案。
问:SDN你们采用什么方案?
目前是采用纯软件的SDN,Vxlan+LinuxBridge。
问:Icehouse好像网络节点不支持HA,看来你们应该是做相当多的定制,Vxlan也是软件实现?
答:是的,我们也测试过Centec,Pica8的软硬件结合方案,私有云客户有相应的需求,都可以做选择。网络节点的HA目前是采用主备方式,除了主备式外,目前还有DVR,Dragonflow,硬件SDN等分布式路由的方案,社区的Neutron功能也还在不断完善。
问:游戏云iops要求还是挺高的吧,晚上又是集中高峰时段,分布式存储压力扛得住吗?
答:分布式存储目前采用双冗余万兆网络,intelS3700SSD,经过一些调优IOPS上有一定的距离。宝德也有全闪存的存储陈列,可以提供Cinder的FC SAN,IP SAN 驱动。
问:L3的网关是落在网络节点上吗?
答:是的,就是虚拟路由器,多套主备式的网络节点,把租户调度到不同的网络节点,比较期待华为以色列团队主导的Dragonflow。在小规模的私有云环境下,也可以选择novanetwork的FlatDHCP+MultiHost.
问:其实私有云真的有很多VPC需求吗?
答:其实并不一定,所以FlatDHCP+MultiHost也是可以满足部分客户的,宝德云1.0就基于nova network,提供比较简单的网络服务,宝德云2.0才使用了Neutron。
问:从宝德云的角度分析,您怎么看公有云和私有云未来的发展趋势?
答:其实,宝德目前是以公带私,以私养公,公有云的价格竞争非常激烈,宝德会更多利用服务器的优势,宝德在公有云上也是一名新兵,毕竟不具备像BAT一样的互联网基因,以AWS为楷模,目前差距还是挺大的,我们只有不断提高研发,运维,运营水平,好在云的市场很大,未来也有很长的路要走,各种技术融合创新 未来的应用场景会更多样。
以上是关于智囊团王荣繁分享:OpenStack 的调优运营经验的主要内容,如果未能解决你的问题,请参考以下文章