|
DoraFramework主要功能介绍:
自动化应用的部署
服务注册与发现
弹性调度容器数量
负载均衡
支持在指定机器上增加或减少实例
支持高可用
应用的版本和升级管理
支持获取实例的状态及日志数据
支持业务级别的监控
支持实例的故障修复
DoraFramework与Marathon调度架构的对比:
DoraFramework调度系统的服务注册与发现使用Consul实现, Consul是用于实现分布式系统的服务发现与配置,支持跨数据中心的内部服务或外部服务的发现, 对外提供DNS接口,而Marathon-lb并不支持跨数据中心的服务发现。
Marathon是通过Marathon-lb所在节点的servicePort服务端口或VHOST来发现服务 ,要求网络模式必须为Bridge。因为Marathon-lb还负责负载均衡的功能,在大型的业务环境下,如果Marathon-lb出现异常,则会影响框架正确的服务发现。
Dora调度系统可以做更精确的弹性调度。因为它不仅支持做资源使用层面的监控,还支持做业务级别的监控,在对实例进行调度时就可以根据实际的业务压力进行调度。
Dora调度系统内的负载均衡组件是通过从Consul中获取到所有的可用实例的地址进行负载分发,并可以根据每个实例的业务负载情况进行更精确的分发。而Marathon-lb并没有业务层的监控数据。
Consul提供系统级和应用级健康检查,可以通过配置文件及HTTP API两种方式来定义健康检查,并支持TCP、HTTP、Script、Docker和Timeto Live(TTL)五种方式做Check。Marathon的默认的Health Checks只检查Mesos中的任务状态,当任务为running时,就被认为是health状态,这样不能做应用级的健康检查。Marathon通过REST API可以查看应用的健康状态, 但只支持TCP、HTTP和Command三种方式。
Dora调度系统提供的监控栈在业务进程运行过程会汇总采集业务运行状况指标,如请求次数,请求延时等信息,业务进程对外暴露一个标准的http监控接口,监控接口的数据产出符合Prometheus监控数据格式。Prometheus通过配置Consul作为服务发现地址,会从Consul中获取需要收集监控数据的业务进程列表,从业务进程暴露的http监控接口pull监控数据。
我们使用Consul做注册中心,实现服务的注册与发现。Consul自带key/value存储,可通过DNS接口做服务发现,且具体健康检查的功能,并支持跨数据中心的服务发现。API Gateway可以通过Consul提供的DNS接口查询到服务所有的可用实例的列表信息,并将请求进行转发。
?
服务的自动注册和撤销
新增微服务实例时,采取的原则是等待实例为运行状态后将实例的访问地址注册到Consul Client的Service Registration,并配置这个服务的健康检查,再将数据同步到 Consul Server的服务注册表中。
对于减少实例时,采取的原则是先将实例从Consul Server的服务注册表中删除,等待冷却时间之后,再从通过调度系统将这个实例销毁。从而完成服务的自动注册和撤销。
服务发现
外在系统想访问服务时,可通过服务名称从Consul Server提供的DNS接口查询到当前服务在Consul Server中注册的所有健康实例的访问地址, 再将请求发送给实例。
我们生产环境的配置管理采用的是Ansible,Ansible默认使用SSH进行远程连接,无需在被管节点上安装附加软件,可以批量系统配置、批量部署、批量运行命令等,非常适合七牛的大规模IT环境。而Playbooks 是一种简单的配置管理系统与多机器部署系统的基础,使用非常简单,且具有可读性,非常适合于复杂应用的部署。我们通过Ansible可以实现数据处理平台的一键式安装和删除,新增和删除节点,还包括对组件版本的升级及回退,以及生产环境的批量配置修改等操作,简化了复杂的运维配置管理工作。
在实践中,选择一台主机做为中控机,安装Ansible,再配置这台中控机与所有远程主机的SSH互信,再在中控机上配置Playbook文件,即可对多台主机进行批量操作。对于简单的操作,可执行如下命令:
$ansible-playbook?main.yml?-i?hosts
在main.yml里编辑所有需要做的操作,在hosts文件里写入所有需求操作的主机IP地址,即可完成对hosts文件里所有主机的批量操作。而对于复杂的操作,则可通过编写Playbook进行配置。roles里存放不同的角色任务,比如Mesos Master上执行的任务和Mesos Agent上执行的任务不同,则可放在不同的roles里,也可以把Mesos、Zookeeper、Consul放的不同的roles里。tasks里则是role里具体执行的任务,handlers则是tasks里触发执行的任务。template则是模板文件,比如我们需要个性Consul的默认配置文件,可以修改后的配置文件放在这个目录下,在执行时用这个文件替换默认的配置文件。
(编辑:安卓应用网_ASP源码网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|