3

在 k8s 以外的分布式环境中使用 Dapr - 张善友

 2 years ago
source link: https://www.cnblogs.com/shanyou/p/15999630.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

在 k8s 以外的分布式环境中使用 Dapr

在Dapr 文档和实践案例中多是推荐采用k8s, 其实我目前也是在k8s 上操作的,有公有云TKE,AKS,还有私有云的Rancher ,它并没有传闻中的那么难,而且我认为它非常容易上手。不过,我还是有很多人不愿意使用k8s 。那么在虚拟机场景下如何使用Dapr呢? 当然也有虚拟机部署的案例,比如2021年第一届DaprConf 上分享的Dapr case study: Man Group:https://blog.dapr.io/posts/2021/10/05/join-us-for-daprcon-october-19th-20th-2021/ 

如果我们脱离K8s 的 虚拟机环境下会碰到什么问题?

  1. 你需要安装 Docker 来运行 Dapr
  2. 使用Invoke API进行名称解析时无法在其他服务器上找到 Dapr 应用程序

除了这两个问题,应该没有什么其他问题,因为根据 Dapr 的配置文件,它使用了外部服务器或者服务。

我们先来看一下第一个问题,在没有 Docker 的情况下使用 Dapr ,官方文档里已经给我们了答案:入门指南: 不使用 Docker 在自托管模式下运行 Dapr

Dapr CLI 提供了使用 slim init 初始化 Dapr 的选项,而无需默认创建依赖于 Docker 的开发环境。 要使用 slim init 初始化 Dapr ,请在安装 Dapr CLI 后使用以下命令:

dapr init –slim

在此模式下安装了两个不同的二进制文件 daprd 和 placement。在此模式下,不会为状态管理或发布/订阅安装任何默认组件,例如Redis 和 Zipkin 不会安装,但是如果需要的话会单独设置,所以没有问题。

那么第二个问题是 名称解析 ,我们还是来看一下官方文档里的 使用 服务调用概述-mDNS 轮询负载均衡:https://docs.dapr.io/zh-hans/developing-applications/building-blocks/service-invocation/service-invocation-overview/,Dapr 使用 mDNS 协议提供轮询负载均衡的服务调用请求,例如用于本地或多个联网的物理机器。但是mDNS只能在可以使用多播的环境中使用,这在云环境下通常是不可用的,在云环境下还有一个选择,官方文档里有 :详细介绍了关于 HashiCorp Consul 服务发现组件的信息,它既可以用于虚拟机也可以用于k8s 环境下,文章开头提到的案例就是用Consul 。

说到这里,如果你是在用Azure,在Azure上有 Managed HashiCorp Cosul ServiceAzure,简称HCS, 客户可以通过Azure Marketplace将 HCS直接配置到他们的 Azure 环境中,而 HashiCorp 则负责服务的维护和运营。使用 HCS 允许用户在云、混合和本地场景中使用各种环境(包括虚拟机和 Kubernetes)。所以我尝试了一下,但是我使用的账号用不了,需要额外付费:

AWS 上也有,具体可以看  Consul on Amazon ECS 0.3 Adds Extended Configuration

上面这两个问题我们都解决了,总结一下:

  • Docker 对于 Dapr 来说并不是必需的。
  • 如果你的环境支持使用多播,则可以使用 mDNS 在多台服务器上运行 Dapr。
  • 虚拟机环境下推荐使用Consul 作为名称解析服务。

针对这个问题 陈一狮同学很早就写了一篇文章, Dapr + .NET Core实战(十四)虚拟机集群部署 mDNS + Consul 。他还特别录制一个系列的视频课程放在腾讯课堂里。

我们再回到开篇时提到的那个使用Consul 部署的案例 ,他们开发了一个 Dapr 的轻量级生命周期管理组件:https://github.com/man-group/dapr-sidekick-dotnet,Sample 目录下有Consul的演示示例:https://github.com/man-group/dapr-sidekick-dotnet/tree/main/samples/AspNetCore,也可以看视频:https://www.bilibili.com/video/BV1br4y167u6?share_source=copy_web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK