CentOS 上部署 Dapr 集群的两种常见方式
- 在 Kubernetes 上以 Helm 方式部署 Dapr(适合生产、可扩展、便于与 K8s 生态集成)。
- 在 虚拟机/物理机 上以自托管方式部署 Dapr(无 K8s 场景,使用 Dapr CLI 初始化,配合 mDNS/Consul 做服务发现)。
前置条件与规划
- 准备 CentOS 7/8 节点若干(建议至少 2 台),配置 静态 IP、主机名 与 /etc/hosts 解析,确保节点间 SSH 互通 与 时间同步(如 chrony/ntpd)。
- 规划组件与端口:Dapr 运行时(daprd)、Placement(Actor 需要)、Dashboard、以及应用的 HTTP 端口/GRPC 端口;如用自托管模式,默认 mDNS 5353/UDP 需放通。
- 资源建议:每节点至少 2 核 CPU / 4GB 内存 / 20GB 磁盘(按实际业务增减)。
- 安全基线:生产环境不建议直接关闭防火墙/SELinux,按需仅放行必要端口与进程上下文。
方案一 Kubernetes 上部署 Dapr(推荐)
- 在 master 节点安装工具
- 安装 Dapr CLI
- 外网环境:
- wget -q https://raw.githubusercontent.com/dapr/cli/master/install/install.sh -O - | /bin/bash
- 验证:dapr -v
- 安装 Helm 3(将 helm 放入 /usr/local/bin),验证:helm version
- 添加仓库并安装 Dapr
- helm repo add dapr https://dapr.github.io/helm-charts/
- helm repo update
- kubectl create namespace dapr-system
- helm install dapr dapr/dapr --namespace dapr-system --wait
- 验证
- helm list -n dapr-system(状态应为 deployed)
- kubectl get pods -n dapr-system(dapr-operator、dapr-sidecar-injector、dapr-placement、dapr-dashboard 等就绪)
- dapr dashboard(本地端口转发后可访问 UI)
- 说明
- 该方式适合在 K8s 中统一管理 Dapr 控制面与数据面组件,后续通过 组件 YAML(如 state、pubsub、bindings)扩展能力。
方案二 虚拟机或物理机自托管部署 Dapr(无 K8s)
- 在所有节点安装 Dapr CLI(与方案一相同),验证:dapr -v
- 初始化 Dapr(每台节点)
- 快速初始化:dapr init(包含本地组件目录、默认配置)
- 无 Docker 或精简模式:dapr init --slim(仅下载 daprd、dashboard、placement 二进制到 ~/.dapr/bin)
- 启动核心服务(Actor 需要)
- 在任一节点启动 Placement:~/.dapr/bin/placement(日志显示 placement 服务端口 50005 与健康检查 8080 监听即正常)
- 验证自托管环境
- dapr --version 与 ~/.dapr 目录结构检查
- 运行示例应用(两台节点分别启动后端与前端),通过 mDNS 实现负载与发现(示例命令见下)
- 组件与配置
- 在 ~/.dapr/components/ 放置组件 YAML,例如 Redis 状态存储:
- statestore.yaml(示例)
- apiVersion: dapr.io/v1alpha1
- kind: Component
- metadata: name: statestore
- spec:
- type: state.redis
- version: v1
- metadata:
- name: redisHost
value: 192.168.43.102:6379
- name: redisPassword
value: “123456”
- name: actorStateStore
value: “true”
- 运行示例(示例命令)
- 后端:dapr run --dapr-http-port 3511 --app-port 5000 --app-id backend /usr/local/src/backend/BackEnd
- 前端:dapr run --dapr-http-port 3501 --app-port 5001 --app-id frontend /usr/local/src/frontend/FrontEnd
- 说明
- 自托管模式依赖 mDNS/Consul 做服务发现,适合 VM 集群 或 边缘 场景,部署与调试简单。
常见问题与运维要点
- 防火墙与端口
- 自托管:放行 5353/UDP(mDNS);Placement 默认 50005/TCP;应用与 daprd 的 HTTP/GRPC 端口按需放行。
- K8s:放行 kubelet、apiserver、以及 dapr 相关 Service 端口(NodePort/LoadBalancer/ClusterIP 按网络策略开放)。
- 时间同步与解析
- 全集群启用 chrony/ntpd,确保 NTP 一致;/etc/hosts 或 DNS 正确解析各节点 主机名。
- 组件与密钥管理
- 状态存储、消息总线等敏感信息使用 Secret 管理(K8s 用 Secret,自托管避免明文密码)。
- 日志与排障
- 自托管查看 placement 日志与 daprd 日志;K8s 使用 kubectl logs -n dapr-system 。
- 升级与回滚
- K8s:helm upgrade/rollback dapr dapr/dapr -n dapr-system;自托管:替换二进制后滚动重启应用与 placement。
名词澄清
- 你提到的 “dopra” 很可能是 “Dapr”(Distributed Application Runtime)的误写。若你指的是其他产品/中间件,请告知具体名称与版本,以便给出对应部署步骤。