跳到主要内容

Server(server-zd)

查看 Markdown

server-zd 是 Dex Server。它保存每个 Flow 的状态,并把 Step 和 RPC 交给 Worker。它唯一的运行时依赖是对象存储,例如 Amazon S3 或兼容 S3 的存储。

工作方式​

server-zd 先把每次写入提交到对象存储,再确认这次写入。它在本地保存一份 store 作为缓存。重启之后,节点从对象存储重建这份缓存。

一个集群由一个 active 进程服务。它在对象存储中持有一个 lease,因此第二个进程不能同时写入。你可以运行 standby 进程,在 active 进程停止时接管。

与其他组件的关系​

  • Worker 和 Client 连接 server 的 API 端口。Worker 主动建立出站 stream,server 从不主动调用它们。
  • Dex Web 作为单独的进程运行,通过同一个 API 读取 Flow。
  • dexcli 调用同一个 API。dexcli dev 还会在你的机器上启动 server-zd。
  • server-zd 为每个 Flow type 保存一份 Flow Definition Graph。Worker 或 dexcli 发布它。每份 graph 都记录了自己的生成时间。生成时间更晚的 graph 替换较早的,与上传顺序无关。Dex Web 读取它来画出 Flow。
  • server-zd 可以把选定的 Attribute 写入 PostgreSQL,见在 Flow 之后保留数据。

运行​

本地开发时运行 dexcli dev。它启动使用内嵌对象存储的 server-zd,同时启动 Dex Web。

生产环境用一个 YAML 配置文件运行 dex-server-zd serve。每个版本都发布二进制文件和容器镜像。在 Kubernetes 上,把它作为 StatefulSet 运行。

dex-server-zd serve --config /etc/dex-server-zd/config.yaml

要在本地磁盘上运行一个不依赖外部对象存储的生产节点,运行 dex-server-zd local。它把内嵌的对象存储放在数据目录中,没有 standby。

参考​

英文的 Server 参考 介绍配置、Kubernetes、高可用、对象存储、身份验证、Worker 分发、搜索、Attribute Store 同步、指标和升级。