温馨提示×

centos dopra集群部署步骤

小樊
50
2025-12-31 11:13:41
栏目: 智能运维

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)的误写。若你指的是其他产品/中间件,请告知具体名称与版本,以便给出对应部署步骤。

0