• Dubbo—Admin 整体架构与安装步骤


    ​回顾 Dubbo 服务治理体系的总体架构,Admin 是服务治理控制面中的一个核心组件,负责微服务集群的服务治理、可视化展示等。

    Admin 部署架构

    总体上来说,Admin 部署架构分为以下几个部分:

    • Admin 主进程,包括服务发现元数据管理、可视化控制台、安全认证策略管控、其他定制化服务治理能力等组件。
    • 强依赖组件,包括 Mysql 数据库、注册/配置/元数据中心(可以是 Kubernetes、Nacos、Zookeeper 等)
    • 可选依赖组件,包括 Prometheus、Grafana、Zipkin 等

    安装 Admin

    Dubboctl 安装

    Download

    当前Dubboctl未正式发行,可按以下方式进行尝试。 拉取Dubbo Admin并编译Dubboctl

    1. git clone https://github.com/apache/dubbo-admin.git
    2. cd dubbo-admin/cmd/dubboctl
    3. go build -o dubboctl .

    将 dubboctl 放入可执行路径

    ln -s dubbo-admin/cmd/dubboctl/dubboctl /usr/local/bin/dubboctl
    
    Install

    安装过程会依次:

    1. 将用户自定义的配置profile以及set参数覆盖于默认profile,得到最终的profile
    1. # default profile
    2. apiVersion: dubbo.apache.org/v1alpha1
    3. kind: DubboOperator
    4. metadata:
    5. namespace: dubbo-system
    6. spec:
    7. profile: default
    8. namespace: dubbo-system
    9. componentsMeta:
    10. admin:
    11. enabled: true
    12. grafana:
    13. enabled: true
    14. repoURL: https://grafana.github.io/helm-charts
    15. version: 6.52.4
    16. nacos:
    17. enabled: true
    18. zookeeper:
    19. enabled: true
    20. repoURL: https://charts.bitnami.com/bitnami
    21. version: 11.1.6
    22. prometheus:
    23. enabled: true
    24. repoURL: https://prometheus-community.github.io/helm-charts
    25. version: 20.0.2
    26. skywalking:
    27. enabled: true
    28. repoURL: https://apache.jfrog.io/artifactory/skywalking-helm
    29. version: 4.3.0
    30. zipkin:
    31. enabled: true
    32. repoURL: https://openzipkin.github.io/zipkin
    33. version: 0.3.0

    建议使用自定义profile进行配置,在componentsMeta中开启或关闭组件,在components下配置各组件。其中components下各组件的配置值都是helm chart的values,各组件的具体配置请参考: Grafana: https://github.com/grafana/helm-charts/blob/main/charts/grafana/README.md Zookeeper: https://github.com/bitnami/charts/tree/main/bitnami/zookeeper/#installing-the-chart Prometheus: https://github.com/prometheus-community/helm-charts/tree/main/charts Skywalking: https://github.com/apache/skywalking-kubernetes/blob/master/chart/skywalking/README.md Zipkin: https://github.com/Financial-Times/zipkin-helm

    1. # customization profile
    2. apiVersion: dubbo.apache.org/v1alpha1
    3. kind: DubboOperator
    4. metadata:
    5. namespace: dubbo-system
    6. spec:
    7. profile: default
    8. namespace: dubbo-system
    9. componentsMeta:
    10. admin:
    11. enabled: true
    12. grafana:
    13. enabled: true
    14. version: 6.31.0
    15. prometheus:
    16. enabled: false
    17. components:
    18. admin:
    19. replicas: 3
    20. grafana:
    21. testFramework:
    22. enabled: false
    1. 根据profile拉取所需组件并生成manifest,目前Admin,Nacos已在本地,无需拉取;Grafana,Zookeeper,Prometheus,Skywalking,Zipkin将从官方chart库拉取,具体地址和版本可见上方default profile
    2. 将manifest应用于k8s集群
    1. dubboctl manifest install # 使用默认 manifests 安装
    2. # or
    3. dubboctl manifest generate | kubectl apply -f -
    dubboctl install --set spec.components.admin.replicas=2 # 设置组件的配置
    
    1. dubboctl install --set spec.componentsMeta.admin.enabled=true, spec.componentsMeta.grafana.enabled=false
    2. # 开启或关闭组件
    1. dubboctl install --set spec.componentsMeta.grafana.repoURL=https://grafana.github.io/helm-charts, spec.componentsMeta.grafana.version=6.31.0
    2. # 设置需远程拉取组件的仓库地址与版本

    检查安装效果

    kubectl get pod -n dubbo-system
    
    打开 Admin 控制台
    kubectl port-forward svc/dubbo-admin -n dubbo-system 38080:38080
    

    打开浏览器,访问: http://127.0.0.1:38080/

    Helm 安装

    获取图表

    1. helm repo add https://charts.bitnami.com/bitnami
    2. helm repo add https://prometheus-community.github.io/helm-charts
    3. helm repo add https://grafana.github.io/helm-charts
    4. helm repo add https://apache.jfrog.io/artifactory/skywalking-helm
    5. helm repo add https://openzipkin.github.io/zipkin

    安装 zookeeper

    helm install zookeeper bitnami/zookeeper -n dubbo-system
    

    安装 prometheus

    helm install prometheus prometheus-community/prometheus -n dubbo-system
    

    安装 grafana

    helm install grafana grafana/grafana -n dubbo-system
    

    安装 skywalking

    helm install skywalking skywalking/skywalking -n dubbo-system
    

    安装 zipkin

    helm install zipkin openzipkin/zipkin -n dubbo-system
    

    检查安装状态

    helm ls -n dubbo-system ;kubectl get pods -n dubbo-system --output wide
    

    VM 安装

    Download

    下载 Dubbo Admin 发行版本

    1. curl -L https://dubbo.apache.org/installer.sh | VERSION=0.1.0 sh -
    2. # Admin 要组织好发行版本

    将 dubboctl 放入可执行路径

    ln -s dubbo-admin-0.1.0/bin/dubbo-admin /usr/local/bin/dubbo-admin
    
    Run
    dubbo-admin run -f override-configuration.yml
    

    配置手册 (Configuration)

    配置用于控制 dubbo-admin 的行为

    1. # Environment type. Available values are: "kubernetes" or "universal"
    2. environment: universal # ENV: DUBBO_ENVIRONMENT
    3. # Mode in which Dubbo CP is running. Available values are: "standalone", "global", "zone"
    4. mode: standalone # ENV: DUBBO_MODE
    5. # Resource Store configuration
    6. store:
    7. # Type of Store used in the Control Plane. Available values are: "kubernetes", "postgres" or "memory"
    8. type: memory # ENV: DUBBO_STORE_TYPE
    9. # Kubernetes Store configuration (used when store.type=kubernetes)
    10. kubernetes:
    11. # Namespace where Control Plane is installed to.
    12. systemNamespace: dubbo-system # ENV: DUBBO_STORE_KUBERNETES_SYSTEM_NAMESPACE
    13. # Postgres Store configuration (used when store.type=postgres)
    14. mysql:
    15. # Host of the Postgres DB
    16. host: 127.0.0.1 # ENV: DUBBO_STORE_POSTGRES_HOST
    17. # Port of the Postgres DB
    18. port: 15432 # ENV: DUBBO_STORE_POSTGRES_PORT
    19. # User of the Postgres DB
    20. user: dubbo # ENV: DUBBO_STORE_POSTGRES_USER
    21. # Password of the Postgres DB
    22. password: dubbo # ENV: DUBBO_STORE_POSTGRES_PASSWORD
    23. # Database name of the Postgres DB
    24. dbName: dubbo # ENV: DUBBO_STORE_POSTGRES_DB_NAME
    25. # Connection Timeout to the DB in seconds
    26. connectionTimeout: 5 # ENV: DUBBO_STORE_POSTGRES_CONNECTION_TIMEOUT
    27. # Maximum number of open connections to the database
    28. # `0` value means number of open connections is unlimited
    29. maxOpenConnections: 50 # ENV: DUBBO_STORE_POSTGRES_MAX_OPEN_CONNECTIONS
    30. # Maximum number of connections in the idle connection pool
    31. # <0 value means no idle connections and 0 means default max idle connections
    32. maxIdleConnections: 50 # ENV: DUBBO_STORE_POSTGRES_MAX_IDLE_CONNECTIONS
    33. # TLS settings
    34. tls:
    35. # Mode of TLS connection. Available values are: "disable", "verifyNone", "verifyCa", "verifyFull"
    36. mode: disable # ENV: DUBBO_STORE_POSTGRES_TLS_MODE
    37. # Path to TLS Certificate of the client. Used in verifyCa and verifyFull modes
    38. certPath: # ENV: DUBBO_STORE_POSTGRES_TLS_CERT_PATH
    39. # Path to TLS Key of the client. Used in verifyCa and verifyFull modes
    40. keyPath: # ENV: DUBBO_STORE_POSTGRES_TLS_KEY_PATH
    41. # Path to the root certificate. Used in verifyCa and verifyFull modes.
    42. caPath: # ENV: DUBBO_STORE_POSTGRES_TLS_ROOT_CERT_PATH
    43. # MinReconnectInterval controls the duration to wait before trying to
    44. # re-establish the database connection after connection loss. After each
    45. # consecutive failure this interval is doubled, until MaxReconnectInterval
    46. # is reached. Successfully completing the connection establishment procedure
    47. # resets the interval back to MinReconnectInterval.
    48. minReconnectInterval: "10s" # ENV: DUBBO_STORE_POSTGRES_MIN_RECONNECT_INTERVAL
    49. # MaxReconnectInterval controls the maximum possible duration to wait before trying
    50. # to re-establish the database connection after connection loss.
    51. maxReconnectInterval: "60s" # ENV: DUBBO_STORE_POSTGRES_MAX_RECONNECT_INTERVAL
    52. server:
    53. port: 38080
    54. registry:
    55. address: xxx
    56. metadata-center:
    57. address: xxx
    58. config-center:
    59. address: xxx
    60. external-services:
    61. prometheus:
    62. # Prometheus service name is "metrics" and is in the "telemetry" namespace
    63. # http://prometheus.<dubbo_namespace_name>:9090
    64. url: "http://metrics.telemetry:9090/"
    65. tracing:
    66. # Enabled by default. Kiali will anyway fallback to disabled if
    67. # Jaeger is unreachable.
    68. enabled: true
    69. # Jaeger service name is "tracing" and is in the "telemetry" namespace.
    70. # Make sure the URL you provide corresponds to the non-GRPC enabled endpoint
    71. # if you set "use_grpc" to false.
    72. in_cluster_url: 'http://tracing.telemetry:16685/jaeger'
    73. use_grpc: true
    74. # Public facing URL of Jaeger
    75. url: 'http://my-jaeger-host/jaeger'
    76. grafana:
    77. enabled: true
    78. # Grafana service name is "grafana" and is in the "telemetry" namespace.
    79. in_cluster_url: 'http://grafana.telemetry:3000/'
    80. # Public facing URL of Grafana
    81. url: 'http://my-ingress-host/grafana'
    82. # 更多配置
    打开 Admin 控制台

    打开浏览器,访问: http://127.0.0.1:38080/

  • 相关阅读:
    贪心算法—Problem N
    Docker Cgroups资源控制管理
    Leetcode算法训练日记 | day35
    设计模式之迭代器模式
    【java|golang】1662. 检查两个字符串数组是否相等
    数据结构之二叉搜索树
    mysql基本语句学习(基本)
    Linux 11:网络
    【UDS】ISO14229之0x31服务
    vue jsx 封装Table 表格+Tree 树形控件
  • 原文地址:https://blog.csdn.net/leesinbad/article/details/133741157