如何用Consul打造弹性可扩展的PaaS平台

  • 时间:
  • 浏览:6
  • 来源:彩神8APP下载_神彩8APP下载官方

Nginx、LVS是系统的基础组件,RecoService、FeatureService、SearchService是基于SOA的组织组织结构服务。前者向Consul集群发现服务,后者向Consul集群注册服务。Consul是粘合剂也是开关,让整个系统的运作起来,低成本的实现了弹性伸缩。

◆ 尽管都都可以 亲戚亲戚大伙对后面 有这人场景的运维做了改进,编写脚本把过程改良为半自动半手动的辦法 ,但还都都可以 很方便,而结合服务注册就能并能做到全自动。

◆ 健康检查。支持多种辦法 ,HTTP、TCP、Docker、Shell脚本定制化监控。

逻辑层,基于SOA的组织组织结构服务集群。不同的组织组织结构服务集群之间通信能并能做服务发现,这里引入LVS做服务发现。好处是都都可以 在组织组织结构服务的代码里实现服务发现,因此规模大了能并能做负载均衡。与接入层的Nginx例如,LVS也用Consul Template定期查询本地Consul Agent,更新相关配置文件,因此重载服务。

因此Consul关系到整个系统的正常运作,好多好多 有升级的完后 还是要很小心。最好在测试环境试验多2个,再到生产环境升级。升级的状况能并能归纳为下面有这人,能并能对号入座完后 再进行升级。

实验环境:

在系统中引入服务注册和发现,之好多好多 有是一发牵动全身的改造,但整个系统架构会因此受益,尤其是现代的微服务架构。相信好多好多 有系统都具备负载均衡、健康检查、心跳检测等能力,利用好服务发现,没人了弹性伸缩、服务高可用、灰度发布,自然是水到渠成的事情。

下面同時 来看看,如何启动另有4个Consul集群(3台Server、1台Client)。

◆ 内网DNS出了故障,亲戚亲戚大伙能并能对DNS服务进行维护。

到这里为止,亲戚亲戚大伙因此搭建好了另有4个Consul集群。然而,咋整 进行服务注册和服务发现呢?这得跟实际需求紧密结合,在接下来的小节中进一步说明。

升级

Consul都都可以 单独存在的。为了充分发挥Consul的优势,能并能结合Nginx、LVS、Docker等工具来应用。

Consul Cluster有Server和Client有这人角色。Server一般是3~5台,这也是官方推荐的。Consul Client因此能并能进行服务注册或服务发现的节点。

就原来另有4个Server节点部署完毕。接下来,部署Client节点,和Server节点一样,有初次启动、手工加入和重新加入集群三步。

Consul的部署简单、开箱即用,另有4个consul可执行文件,还没人了乱七八糟的依赖。在官网下载编译好的Consul agent可执行文件,并上传到所有Server和Client角色的节点,便随时可启动consul agent了。

组织组织结构服务如何向服务中心注册?有有这人辦法 ,一是通过Consul的服务注册HTTP API,由服务自身在启动后调用API注册自己,二是通过在配置文件中定义服务的辦法 进行注册。建议使用后面 有这人辦法 来做服务注册。咋整 办到的?请继续往下看 :)

因此有好多好多 有文章对Zookeeper、etcd、Consul进行比较,这里就不重复打比方了。没人了什么比离米 更重要!Consul 的运维成本低,部署简单、使用方便、五脏俱全,这对于中小型团队应该是性价比很高的。

以上四点因此能满足好多好多 有企业的需求。当然这都都可以 Consul的所有,Consul还有好多好多 有锦上添花的底部形态,比如:可视化Web界面、支持多数据中心。

分别登录Server01、Server02、Server03,并启动agent。

管理

接入层,用的是Nginx,负责反向代理和负载均衡。Nginx节点上跑另有4个Consul相关服务。另有4个是Consul Agent,做Consul Client;另外另有4个是Consul Template,做服务发现和配置更新。Consul Template负责定期查询本地Consul Agent,因此相关服务的注册信息有变化,则更新Nginx的配置文件并重新加载Nginx服务。

云服务是HiAR平台中重要的基础设施。无论从高可用,还是到可扩展,服务发现都发挥着不可或缺的作用。在没人了使用服务发现完后 ,亲戚亲戚大伙遇到的2个痛点:

应用

后面 几步就完成了初始化Server节点,完后 通过-rejoin参数启动,能并能重新加入集群。

结语

现在,有了服务发现,一切都变得简单有趣。增减服务节点能并能自动更新Nginx/LVS的配置文件;DNS丢一边吧!用IP就好;接入Mesos+Docker玩弹性扩展。

Client01节点后后的维护,通过-rejoin参数启动,便可重新加入集群。

◆ 应用服务发布新版本,亲戚亲戚大伙还是能并能手工修改Nginx的配置文件把节点下线、等待歌曲发布成功后,再次修改Nginx的配置文件把服务上线。

实战经验

后面 这句命令中,test.conf是Nginx的虚拟主机配置文件,test.ctmpl是该配置文件对应的模板。下面是模板在负载均衡上的代码片段:

应用背景

一是节点管理,也因此Consul线程池池池的管理。因此Consul Agent有这人不具备高可用能力,好多好多 有亲戚亲戚大伙有必要对Consul线程池池池进行接管,亲戚亲戚大伙用的是Systemd,你并能并能选择Supervisord因此Upstart什么线程池池池管理工具。

◆ 服务发现。通过HTTP API或DNS,能并能知道目标服务的地址和端口。

咋整 会 选择 Consul

◆ 配置模板。Consul Template 负责定期从服务注册中心获取信息,因此有变化自动更新配置文件并重新加载。

还是在Client01上,新开另有4个登录窗口,加入Server01的集群。

最后一步,对服务进行注册,能并能在Consul agent启动时指定配置文件,如下:

HiAR 是亮风台打造的新一代增强现实(AR)开发平台,提供简单易用、功能强大、跨平台的 AR 服务。让广大开发者能并能轻松使用最前沿的计算机视觉技术、计算机图形学技术,快速搭建个性化的 AR 应用。

为项目上加另有4个配置文件consul.json,指定服务名称和服务端口,并上加健康检查,内容如下:

◆ 没人了服务注册,限制了Docker的发挥,非要当轻量级虚拟机来用。

亲戚亲戚大伙对Consul的使用能并能归纳到4个方面:部署、应用、管理、升级。

◆ 不兼容的升级。使用consul -v查看新版的向后兼容协议版本号,当突然出现 与当前版本不兼容时,能并能分两步升级。先通过参数-protocal=旧的协议版本号,把整个集群升级一次,再把启动命令中的参数-protocal上加来重启所有节点。

升级节点的推荐顺序是,先升级Server的Follower节点,再升级Server的Leader节点,最后升级所有Client的节点。

◆ 标准的升级。因此后面 有这人状况都都都可以 ,没人了恭喜你,你能并能做的因此简单的标准升级。即:停止旧版本的agent,因此启动新版本的agent。PS:之好多好多 有大多数状况都都可以 标准升级。

◆ 特殊版本的升级。在upgrade-specific页面查看当前升级的版本是否有特殊说明。比如:0.5.1完后 的版本直接升级到0.6版本,要借助工具consul-migrate进行数据迁移。

◆ 系统上加另有4个服务节点,亲戚亲戚大伙能并能手工修改Nginx/LVS的配置文件、修改DNS记录。

运行Consul Template是实现弹性扩展的关键步骤:

新开窗口登录Server03,加入Server01、Server02的集群。

◆ 服务注册。通过HTTP API或DNS,告诉服务注册中心有新的服务加入。

二是集群管理,Consul提供了可视化管理界面。能并能查看所有的服务和节点,以及它们的健康检测和当前状况。

部署

在进入实战前,先看看 Consul 都都可以 什么底部形态。