《云计算与虚拟化技术丛书 Service Mesh实战》—3.2.4部署Linkerd

举报
华章计算机 发表于 2019/06/06 12:04:45 2019/06/06
【摘要】 本书摘自《云计算与虚拟化技术丛书 Service Mesh实战:基于Linkerd和Kubernetes的微服务实践》一文中的第3章,第3.2.4节,作者是杨彰显。

3.2.4 部署Linkerd

       通常来说,开发人员除了开发本身业务逻辑外,还需要实现如下一个或者多个特性以确保应用的高可用性。

       可见性(visiblity):运行时指标、分布式跟踪。

       可管理性(manageablity):服务发现、运行时动态路由。

       健壮性(resilience):超时重试、请求最后期限、熔断机制。

       安全性(security):服务间访问控制、TLS加密通信。

       像我们在第1章所述,如果从应用层完全实现这些特性,需要考虑多方面需求,如支持多协议、多语言等,所以这并不容易,而Service Mesh工具如Linkerd使得无需从应用层逐一实现这些特性,应用层只需关注业务逻辑,所有这些特性由Service Mesh工具实现,从应用层剥离出来以独立单元运行。针对提供的示例应用,我们可以在它们之间增加Service Mesh层,即Linkerd,然后服务间通信由Linkerd实现,以此在无需更改服务代码的情况下实现上述特性。增加Service Mesh层后示例应用间的调用逻辑如图3-3所示,除了服务与数据库之间的通信,其他服务间通信均通过Linkerd实现。

image.png

image.png

图3-3 基于Linkerd的服务间通信流

       后续章节将围绕Linkerd配置及相应架构设计等内容讲解,以此通过Linkerd实现服务间通信。然后我们需要在演示环境中每台机器上部署Linkerd,它将服务所有运行在机器上的所有服务。首先,准备运行Linkerd需要的配置文件linkerd.yml,实际上,示例环境中每台虚拟机的/vagrant目录已包括预先配置好的配置文件linkerd.yml,通过该配置文件即可以Docker容器方式启动Linkerd,当前只要保证Linkerd正常启动即可,对linkerd.yml的具体内容,后续会详细解释相应配置的具体含义,此时大家无需关注其具体含义。

       Linkerd配置信息如:

admin:

  port: 9990

  ip: 0.0.0.0


namers:

- kind: io.l5d.consul

  prefix: /io.l5d.consul

  host: 127.0.0.1

  port: 8500

  includeTag: false

  setHost: false

  useHealthCheck: true


routers:

- protocol: http

  label: outgoing

  dtab: |

    /consul => /#/io.l5d.consul/dc1;

    /host   => /consul;

    /svc    => /$/io.buoyant.http.subdomainOfPfx/service.consul/host;

  interpreter:

    kind: default

    transformers:

    - kind: io.l5d.port

      port: 4141

  httpAccessLog: /tmp/access_outgoing.log

  servers:

  - port: 4140

    ip: 0.0.0.0


- protocol: http

  label: incoming

  dtab: |

   /consul => /#/io.l5d.consul/dc1;

   /host   => /consul;

   /svc    => /$/io.buoyant.http.subdomainOfPfx/service.consul/host;

  interpreter:

    kind: default

    transformers:

    - kind: io.l5d.localhost

  servers:

  - port: 4141

    ip: 0.0.0.0


telemetry:

- kind: io.l5d.recentRequests

  sampleRate: 0.01


usage:

  enabled: false

       然后在每台机器上执行如下命令启动Linkerd进程:

# docker run -d --name Linkerd --network host -v /vagrant/linkerd.yml:/linkerd.yml buoyantio/linkerd:1.3.6 /linkerd.yml

       为了简单起见,Linkerd容器以host网络模式运行。启动完成后执行Linkerd健康检测确保Linkerd正常启动:

# curl -s localhost:9990/admin/ping

pong

        若返回pong表示Linkerd已正常启动。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。