【Dubbo3終極特性】「流量治理體系」一文教你如何搭建Dubbo3的控制檯服務Dubbo-Admin
theme: smartblue
Dubbo Admin
Dubbo Admin 是一個控制檯,為 Dubbo 叢集提供更好視覺化服務。Admin 支援 Dubbo3 並很好的相容 2.7.x、2.6.x 和 2.5.x。
Dubbo Admin的部署方式
接下來我們主要會介紹有四種Dubbo Admin部署到生產環境的方式
- 基於 Helm 執行 Admin
- 基於 Kubernetes 執行 Admin
- 基於 Docker 執行 Admin
- 基於原始碼打包執行 Admin
基於 Helm 執行 Admin
通過 Helm執行Admin有兩種方式,它們起到相同的效果,因此可以選擇以下任意一種。
基於 Chart 原始檔執行 Admin
下載 chart 原始檔
克隆 Dubbo Admin倉庫原始碼:
$ git clone http://github.com/apache/dubbo-admin.git
從倉庫根目錄切換到以下目錄 deploy/helm/dubbo-admin
$ cd dubbo-admin/deploy/helm/dubbo-admin
安裝 helm chart
$ helm install dubbo-admin .
如果你想定製 Admin 的啟動引數,以便讓 Admin 連線到真實的生產環境註冊中心或配置中心,可以通過以下 -f helm
引數指定自定義配置檔案:
properties.xml
properties
properties: |
admin.registry.address=zookeeper://30.221.144.85:2181
admin.config-center=zookeeper://30.221.144.85:2181
admin.metadata-report.address=zookeeper://30.221.144.85:2181
zookeeper://30.221.144.85:2181 是可以在 Kubernetes 叢集內被訪問到的真實地址。
properties
$ helm install dubbo-admin -f properties.yaml .
properties欄位指定的內容將會覆蓋 Admin 映象中application.properties 指定的預設配置,除了properties之外,還可以定製 Admin helm chart 定義的其他屬性,這裡是可供使用的完整引數。
application.properties的配置資訊
```properties server.port=38080 dubbo.protocol.port=30880 dubbo.application.qos-port=32222
centers in dubbo2.7, if you want to add parameters, please add them to the url
admin.registry.address=zookeeper://127.0.0.1:2181 admin.config-center=zookeeper://127.0.0.1:2181 admin.metadata-report.address=zookeeper://127.0.0.1:2181
nacos config, add parameters to url like username=nacos&password=nacos
admin.registry.address=nacos://127.0.0.1:8848?group=DEFAULT_GROUP&namespace=public
admin.config-center=nacos://127.0.0.1:8848?group=dubbo
admin.metadata-report.address=nacos://127.0.0.1:8848?group=dubbo
group (Deprecated it is recommended to use URL to add parameters,will be removed in the future)
admin.registry.group=dubbo
admin.config-center.group=dubbo
admin.metadata-report.group=dubbo
namespace used by nacos. (Deprecated it is recommended to use URL to add parameters,will be removed in the future)
admin.registry.namespace=public
admin.config-center.namespace=public
admin.metadata-report.namespace=public
admin.root.user.name=root admin.root.user.password=root
session timeout, default is one hour
admin.check.sessionTimeoutMilli=3600000
apollo config
admin.config-center = apollo://localhost:8070?token=e16e5cd903fd0c97a116c873b448544b9d086de9&app.id=test&env=dev&cluster=default&namespace=dubbo
(Deprecated it is recommended to use URL to add parameters,will be removed in the future)
admin.apollo.token=e16e5cd903fd0c97a116c873b448544b9d086de9
admin.apollo.appId=test
admin.apollo.env=dev
admin.apollo.cluster=default
admin.apollo.namespace=dubbo
compress
server.compression.enabled=true server.compression.mime-types=text/css,text/javascript,application/javascript server.compression.min-response-size=10240
token timeout, default is one hour
admin.check.tokenTimeoutMilli=3600000
Jwt signingKey
admin.check.signSecret=86295dd0c4ef69a1036b0b0c15158d77
dubbo config
dubbo.application.name=dubbo-admin dubbo.registry.address=${admin.registry.address}
mysql
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/dubbo-admin?characterEncoding=utf8&connectTimeout=1000&socketTimeout=10000&autoReconnect=true
spring.datasource.username=root
spring.datasource.password=mysql
h2
spring.datasource.url=jdbc:h2:mem:~/dubbo-admin;MODE=MYSQL; spring.datasource.username=sa spring.datasource.password=
id generate type
mybatis-plus.global-config.db-config.id-type=none
dubbo.application.logger=slf4j ```
訪問 Admin
Dubbo Admin現在應該已經成功安裝,執行以下命令獲得訪問地址:
$ kubectl --namespace default port-forward service/dubbo-admin 38080:38080
或者,你可以參考執行 helm 安裝後給出的提示命令,類似如下:
export POD_NAME=$(kubectl get pods --namespace default -l "app.kubernetes.io/name=dubbo-admin,app.kubernetes.io/instance=dubbo-admin" -o jsonpath="{.items[0].metadata.name}")
export CONTAINER_PORT=$(kubectl get pod --namespace default $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
echo "Visit http://127.0.0.1:38080 to use your application"
kubectl --namespace default port-forward $POD_NAME 38080:$CONTAINER_PORT
開啟瀏覽器並訪問 http://127.0.0.1:38080,預設的 username 和 password 是 root。
基於 Chart 倉庫執行 Admin
新增 helm chart 倉庫 (暫時不可用)
$ helm repo add dubbo-charts http://dubbo.apache.org/dubbo-charts
$ helm repo update
安裝 helm chart
$ helm install dubbo-admin dubbo-charts/dubbo-admin
基於 Chart 原始檔執行 Admin 中相應環節瞭解如何定製安裝引數
$ helm install dubbo-admin -f properties.yaml dubbo-charts/dubbo-admin
訪問 Dubbo Admin
Dubbo Admin 現在應該已經成功安裝,執行以下命令獲得訪問地址:
$ kubectl --namespace default port-forward service/dubbo-admin 38080:38080
開啟瀏覽器並訪問 http://127.0.0.1:38080,預設的 username 和 password 是 root
使用 Kubernetes 執行
克隆 Dubbo Admin倉庫原始碼:
$ git clone http://github.com/apache/dubbo-admin.git
切換到 deploy/k8s 目錄可以看到Admin kubernetes資原始檔
$ cd /dubbo-admin/deploy/k8s
部署 Dubbo Admin
首先,請參照application.properties修改configmap.yml 中的引數配置,只定義要覆蓋引數即可,如下圖所示。
application.properties: |
admin.registry.address=zookeeper://127.0.0.1:2181
admin.config-center=zookeeper://127.0.0.1:2181
admin.metadata-report.address=zookeeper://127.0.0.1:2181
- 修改admin.registry.address
- 修改admin.config-center
- 修改admin.metadata-report.address
執行以下命令:
$ kubectl apply -f ./
訪問 Admin
$ kubectl port-forward service dubbo-admin 38080:38080
開啟瀏覽器並訪問 http://localhost:38080, 預設 username 和 password 是 root。
使用 Docker 執行
預先定義的 Admin 映象託管在:
http://hub.docker.com/repository/docker/apache/dubbo-admin
可以直接執行映象來部署 Admin,並通過繫結宿主機上的 application.properties 檔案定製映象預設引數,如註冊中心、配置中心地址等。
$ docker run -it --rm -v /the/host/path/containing/properties:/config -p 38080:38080 apache/dubbo-admin
將 /the/host/path/containing/properties 替換為宿主機上包含 application.properties 檔案的實際路徑(必須是一個有效目錄的絕對路徑)。
開啟瀏覽器並訪問 http://localhost:38080, 預設 username 和 password 是 root
通過原始碼打包執行
下載程式碼: git clone http://github.com/apache/dubbo-admin.git
在 dubbo-admin-server/src/main/resources/application.properties中指定註冊中心地址
構建
mvn clean package -Dmaven.test.skip=true
啟動
mvn --projects dubbo-admin-server spring-boot:run 或者
cd dubbo-admin-distribution/target; java -jar dubbo-admin-${project.version}.jar
訪問 http://localhost:38080
核心重點配置
application.properties配置項說明
admin.config-center
推薦使用,配置中心地址,比如:admin.config-center="zookeeper://127.0.0.1:2181"
需要在配置中心中,配置註冊中心和元資料中心地址配置格式如下:
zookeeper:
path: /dubbo/config/dubbo/dubbo.properties
content:
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.metadata-report.address=zookeeper://127.0.0.1:2181
admin.registry.address
不推薦使用,老版本的配置中心地址,比如:
admin.registry.address="zookeeper://127.0.0.1:2181"
如使用該配置,Dubbo Admin會將其作為註冊中心和配置中心使用,元資料中心將無法使用,會影響服務測試等功能。
- 【世界盃黑技術資訊】「技術探索系列」一文解讀一下“卡達世界盃”的先進技術之半自動越位技術SAOT 比賽用球Al Rihla
- 【JVM故障問題排查心得】「記憶體診斷系列」Xmx和Xms的大小是小於Docker容器以及Pod的大小的,為啥還是會出現OOMKilled?
- 【Dubbo3終極特性】「流量治理體系」一文教你如何搭建Dubbo3的控制檯服務Dubbo-Admin
- 精華推薦 | 【JVM深層系列】「GC底層調優專題」一文帶你徹底加強夯實底層原理之GC垃圾回收技術的分析指南(GC原理透析)
- 【深入淺出SpringCloud原理及實戰】「SpringCloud-Alibaba系列」微服務模式搭建系統基礎架構實戰指南及版本規劃踩坑分析