云架构师进阶攻略(2)

栏目: 服务器 · 发布时间: 7年前

云架构师进阶攻略(2) 勿忘初心 昨天 10:36

此文已由作者刘超授权网易云社区发布。

欢迎访问 网易云社区 ,了解更多网易技术产品运营经验。

八、基于OpenStack了解云平台

当有了虚拟机,并且虚拟机能够上网了之后,接下来就是搭建云平台的时候了。

云是基于计算,网络,存储虚拟化技术的,云和虚拟化的主要区别在于,管理员的管理模式不同,用户的使用模式也不同。

虚拟化平台没有多层次的丰富的租户管理,没有灵活quota配额的限制,没有灵活的QoS的限制,多采用虚拟网络和物理网络打平的桥接模式,虚拟机直接使用机房网络,没有虚拟子网VPC的概念,虚拟网络的管理和隔离不能和租户隔离完全映射起来。对于存储也是,公司采购了统一的存储,也不能和租户的隔离完全映射起来。

使用虚拟化平台的特点是,对于这个平台的操作完全由运维部门统一管理,而不能将权限下放给业务部门自己进行操作。因为一旦允许不同的部门自己操作,大家都用机房网络,在没有统一管控的情况下,很容易网段冲突了。如果业务部门向申请虚拟机,需要通过工单向运维部门统一的申请。当然这个运维部门很适应这种方式,因为原来物理机就是这样管理的。

但是公有云,例如aws就没办法这样,租户千千万万,只能他们自己操作。在私有云里面,随着服务化甚至微服务化的进行,服务数目越来越多,迭代速度越来越快,业务部门需要更加频繁的创建和消耗虚拟机,如果还是由运维部统一审批,统一操作,会使得运维部门压力非常大,而且极大限制了迭代速度,因而要引入 租户管理,运维部灵活配置每个租户的配额quota和QoS,在这个配额里面,业务部门随时可以按照自己的需要,创建和删除虚拟机,无需知会运维部门。每个部门都可以创建自己的虚拟网络VPC,不同租户的VPC之前完全隔离,所以网段可以冲突,每个业务部门自己规划自己的网络架构,只有少数的机器需要被外网或者机房访问的时候,需要少数的机房IP,这个也是和租户映射起来的,可以分配给业务部门机房网IP的个数范围内,自由的使用。这样每个部门自主操作,迭代速度就能够加快了。

云平台中的开源软件的代表是OpenStack,建议大家研究OpenStack的设计机制,是在云里面通用的,了解了OpenStack,对于公有云,容器云,都能发现相似的概念和机制。

沿着OpenStack创建虚拟机的过程,我总结了100个知识点,写下了下面的文章。

OpenStack虚拟机创建的50个步骤和100个知识点

用OpenStack界面轻松创建虚拟机的你,看得懂虚拟机启动的这24个参数么?

觉得OpenStack的网络复杂?其实你家里就有同样一个网络

当发现你的OpenStack虚拟机网络有问题,不妨先试一下这16个步骤

手动用KVM模拟OpenStack Cinder挂载iSCSI卷

不仅 Docker 会使用Control Group,KVM也会使用Cgroup来控制资源分配

通过我们研究OpenStack,我们会发现很多非常好的云平台设计模式。

第一:基于PKI Token的认证模式

如果我们要实现一个Restful API,希望有个统一的认证中心的话,Keystone的三角形工作模式是常用的。

当我们要访问一个资源,通过用户名密码或者AK/SK登录之后,如果认证通过,接下来对于资源的访问,不应该总带着用户名密码,而是登录的时候形成一个Token,然后访问资源的时候带着Token,服务端通过Token去认证中心进行验证即可。

云架构师进阶攻略(2)

如果每次验证都去认证中心,效率比较差,后来就有了PKI Token,也即Token解密出来是一个有详细租户信息的字符串,这样本地就可以进行认证和鉴权。

云架构师进阶攻略(2) 



第二:基于Role Based Access Control的鉴权模式

对于权限控制,我们学会比较通用的Role Based Access Control的权限控制模式, 形成“用户-角色-权限”的授权模型。在这种模型中,用户与角色之间,角色与权限之间,一般者是多对多的关系,可以非常灵活的控制权限。

云架构师进阶攻略(2)

第三:基于Quota的配额管理

可以通过设置计算,网络,存储的quota,设置某个租户自己可以自主操作的资源量。

第四:基于预选和优选两阶段的Scheduler机制

当需要从一个资源池里面,选择一个节点,使用这个节点上的资源的时候,一个通用的Scheduler机制是:

·      首先进行预选,也即通过Filter,将不满足条件的过滤掉。

·      然后进行优选,也即对于过滤后,满足条件的候选人,通过计算权重,选择其中最优的。

云架构师进阶攻略(2)

第五:基于独立虚拟子网的网络模式

为了每个租户可以独立操作,因而虚拟网络应该是独立于物理网络的,这样不同的租户可以进行独立的网络规划而互不影响,也不影响物理网络,当需要跨租户访问,或者要访问物理网络的时候,需要通过路由器。

云架构师进阶攻略(2)

第六:基于Copy on Write的镜像机制

有时候我们在虚拟机里面做了一些操作以后,希望能够把这个时候的镜像保存下来,好随时恢复到这个时间点,一个最最简单的方法就是完全复制一份,但是由于镜像太大了,这样效率很差。因而采取Copy on write的机制,当打镜像的时刻,并没有新的存储消耗,而是当写入新的东西的时候,将原来的数据找一个地方复制保存下来,这就是Copy on Write。

对于Openstack,有一种镜像qcow2就是采取的这样的机制。

云架构师进阶攻略(2)

这样镜像就像分层一样,一层一层的罗上去。

第七:基于namespace和cgroup的隔离和Qos机制

在OpenStack里面,网络节点的路由器是由network namespace来隔离的。

云架构师进阶攻略(2)

KVM的占用的CPU和内存,使用Cgroup来隔离的。

云架构师进阶攻略(2)

网络的QoS使用TC来隔离的。

云架构师进阶攻略(2)

第八:基于iptables的安全机制

有时候,我们希望网络中的节点之间不能相互访问,作为最简单的防火墙,iptables起到了很重要的作用,以后实现ACL机制的,都可以考虑使用iptables。

云架构师进阶攻略(2)

九、基于Mesos和Kubernetes了解容器平台

搭建完毕虚拟化层和云平台层,接下来就是容器层了。

Docker有几个核心技术,一个是镜像,一个是运行时,运行时又分看起来隔离的namespace和用起来隔离的cgroup。

Docker的镜像也是一种Copy on Write的镜像格式,下面的层级是只读的,所有的写入都在最上层。

云架构师进阶攻略(2)

对于运行时,Docker使用的namespace除了network namespace外,还有很多,如下表格所示。

云架构师进阶攻略(2)

Docker对于cgroup的使用是在运行Docker的时候,在路径/sys/fs/cgroup/cpu/docker/下面控制容器运行使用的资源。

可见容器并没有使用更新的技术,而是一种新型的交付方式,也即应用的交付应该是一容器镜像的方式交付,容器一旦启动起来,就不应该进入容器做各种修改,这就是不可改变基础设施。

由于容器的镜像不包含操作系统内核,因而小的多,可以进行跨环境的迁移和弹性伸缩。

我写下了下面的文章,总结了几点容器的正确使用姿势。

容器化的本质?基于镜像的跨环境迁移

有关容器的六大误区和八大正确场景

有了容器之后,接下来就是容器平台的选型,其实swarm, mesos, kubernetes各有优势,也可以在不同的阶段,选择使用不同的容器平台。

Docker, Kubernetes, DCOS 不谈信仰谈技术

容器平台选型的十大模式:Docker、DC/OS、K8S谁与当先?

基于Mesos的DCOS更像是一个数据中心管理平台,而非仅仅容器管理平台,他可以兼容Kubernetes的编排,同时也能跑各种大数据应用。

DC/OS的基本思想——为什么说他是数据中心操作系统

号称了解mesos双层调度的你,先来回答下面这五个问题!

DC/OS的容器功能

DC/OS的网络功能

DC/OS的存储功能

DC/OS的服务发现与负载均衡功能

在容器领域,基于Kubernetes的容器编排已经成为事实标准。

云架构师进阶攻略(2)

基于万节点Kubernetes支撑大规模云应用实践

支撑大规模公有云的Kubernetes改进与优化 (1)

支撑大规模公有云的Kubernetes改进与优化 (2)

支撑大规模公有云的Kubernetes改进与优化 (3)

为支撑高并发应用的 Kubernetes 的性能优化

当我们深入分析Kubernetes管理容器模式的时候,我们也能看到熟悉的面孔。

在Kubernetes里面,租户之间靠namespace进行隔离,这个不是Docker的namespace,而是Kubernetes的概念。

API Server的鉴权,也是基于Role Based Access Control模式。

Kubernetes对于namespace,也有Quota配置,使用ResourceQuota。

云架构师进阶攻略(2)

当Kubernetes想选择一个节点运行pod的时候,选择的过程也是通过预选和优选两个阶段。

·      预选(Filtering)

§  PodFitsResources满足资源

§  PodSelectorMatches符合标签

§  PodFitsHost符合节点名称

·      优选(Weighting)

§  LeastRequestedPriority资源消耗最小

§  BalancedResourceAllocation资源使用最均衡

Kubernetes规定了以下的网络模型定义。

·      所有的容器都可以在不使用NAT的情况下同别的容器通信

·      所有的节点都可以在不使用NAT的情况下同所有的容器通信

·      容器的地址和别人看到的地址一样

也即容器平台应该有自己的私有子网,常用的有Flannel, Calico, Openvswitch都是可以的。

既可以使用Overlay的方式,如图flannel.

云架构师进阶攻略(2)

也可以使用BGP的方式,如图Calico

云架构师进阶攻略(2)



网易 云计算基础服务 深度整合了 IaaS PaaS 及容器技术,提供弹性计算、 DevOps 工具链及微服务基础设施等服务,帮助企业解决 IT 、架构及运维等问题,使企业更聚焦于业务,是新一代的云计算平台, 点击可免费试用

相关阅读:

云架构师进阶攻略(1)

云架构师进阶攻略(3)

免费体验云安全(易盾)内容安全、验证码等服务

更多网易技术、产品、运营经验分享请 点击

分享至:
云架构师进阶攻略(2)
云架构师进阶攻略(2)

以上所述就是小编给大家介绍的《云架构师进阶攻略(2)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Text Processing in Python

Text Processing in Python

David Mertz / Addison-Wesley Professional / 2003-6-12 / USD 54.99

Text Processing in Python describes techniques for manipulation of text using the Python programming language. At the broadest level, text processing is simply taking textual information and doing som......一起来看看 《Text Processing in Python》 这本书的介绍吧!

html转js在线工具
html转js在线工具

html转js在线工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具