Ad
Developer Tools Azure

Apache Dubbo Admin on Ubuntu 24.04 on Azure User Guide

| Product: Apache Dubbo Admin on Ubuntu 24.04 LTS on Azure

Overview

Apache Dubbo is a high-performance RPC and microservice framework. Dubbo Admin is its web console and control plane: it reads service registrations, routing rules, dynamic configuration and metadata from a registry and presents them in a browser dashboard for governing a Dubbo service mesh. The cloudimg image installs Dubbo Admin 0.6.0 as a Spring Boot application that serves both the Vue web UI and the REST API, backed by a local Apache ZooKeeper 3.9 registry. Dubbo Admin binds to 127.0.0.1:38080 and is fronted by an nginx reverse proxy on TCP 80. A unique administrator password is generated on the first boot of every VM. Backed by 24/7 cloudimg support.

What is included:

  • Apache Dubbo Admin 0.6.0 (Spring Boot application serving the Vue web console and the REST API)
  • A local Apache ZooKeeper 3.9 registry acting as the registry, config-center and metadata-report
  • OpenJDK (JDK 17 to build the image, JDK 11 as the Dubbo Admin runtime)
  • A dedicated Azure data disk at /var/lib/dubbo holding the ZooKeeper data and the Dubbo Admin runtime config, separate from the OS disk and re-provisioned with every VM
  • nginx reverse proxy on :80 plus an unauthenticated /health endpoint for load-balancer probes
  • Per-VM root admin password generated at first boot, in a root-only file
  • zookeeper.service, dubbo-admin.service and nginx.service as systemd units, enabled and active
  • 24/7 cloudimg support

Prerequisites

An active Azure subscription, an SSH key pair, and a VNet plus subnet in the target region. Standard_B2ms (2 vCPU / 8 GiB RAM) is a good starting point because the ZooKeeper and Dubbo Admin JVMs run together. NSG inbound: allow 22/tcp from your management network and 80/tcp from the operators who reach the console (front port 80 with TLS for public exposure - see Enabling HTTPS).

Step 1 - Deploy from the Azure Marketplace

Sign in to the Azure Portal, choose Create a resource, search the Marketplace for Apache Dubbo Admin by cloudimg, and select Create. On Basics pick your subscription, resource group, region and size; under Administrator account choose SSH public key and paste your key; under Inbound port rules allow SSH (22) and HTTP (80). Review the dedicated data disk on the Disks tab, then Review + create then Create.

Step 2 - Deploy from the Azure CLI

az vm create \
  --resource-group your-rg \
  --name dubbo-admin \
  --image cloudimg:apache-dubbo-ubuntu-24-04:default:latest \
  --size Standard_B2ms \
  --admin-username azureuser \
  --generate-ssh-keys \
  --public-ip-sku Standard

Then open port 80 to the networks that need the console:

az vm open-port --resource-group <your-rg> --name dubbo-admin --port 80 --source-ip-prefix <your-mgmt-cidr>

Step 3 - Retrieve the per-VM admin password

A unique root administrator password is generated on the first boot of every VM and written to a root-only file. SSH in and read it:

ssh azureuser@<public-ip>
sudo cat /root/dubbo-credentials.txt

The file lists the console URL, the username (root) and the per-VM password:

Dubbo Admin per-VM credentials file

Keep this password safe - it is the administrator login for the Dubbo Admin console.

Step 4 - Confirm the services are running

The image ships three systemd units that come up automatically: the ZooKeeper registry, the Dubbo Admin application and the nginx reverse proxy. Confirm they are active and that the health endpoint answers:

systemctl is-active zookeeper.service dubbo-admin.service nginx.service
curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1/health

A healthy appliance reports every unit active and returns 200 from /health:

Dubbo Admin services active and health check passing

Step 5 - Sign in to the web console

Browse to http://<your-vm-public-ip>/ and sign in with the username root and the per-VM password from Step 3.

Dubbo Admin sign-in page

The Dubbo Admin login API can also be exercised from the shell. The console authenticates with GET /api/dev/user/login and returns a signed JWT on success; a wrong password is rejected with HTTP 401. To try it yourself, read the password from /root/dubbo-credentials.txt and call the endpoint, for example curl --get --data-urlencode 'userName=root' --data-urlencode 'password=<your-per-VM-password>' http://127.0.0.1/api/dev/user/login (replace the placeholder with the real value). The round-trip looks like this:

Dubbo Admin login API round-trip - wrong password rejected, correct password returns a token

Step 6 - Browse registered services

The Search service name screen lists every service registered in the local ZooKeeper registry. Enter * and click Search to list everything, or type a service name to filter. Each row shows the service interface, group, version, owning application and registry source.

Dubbo Admin service list showing registered services

Click DETAIL on any service to inspect its providers, consumers and metadata - the bound host and port, configured timeout, serialization, weight and the method signatures the provider exposes.

Dubbo Admin service detail with providers and metadata

Step 7 - Manage routing and configuration rules

Under Service Governance the console manages the rules Dubbo enforces at runtime: Condition Rule and Tag Rule routing, Mesh Rule, Black White List access control, Dynamic Config, Weight Adjust and Load Balance. Click CREATE on the Condition Rule page to author a routing rule in the embedded YAML editor, scoped to a service interface, version and group.

Dubbo Admin routing rule editor under Service Governance

Rules you create here are written into the local ZooKeeper config-center and applied to the Dubbo services that read from it.

Persistence - the dedicated data disk

The ZooKeeper transaction log and snapshots, plus the Dubbo Admin runtime configuration, live on a dedicated Azure data disk mounted at /var/lib/dubbo, separate from the OS disk:

df -h /var/lib/dubbo
ls /var/lib/dubbo

Because the registry state lives on its own disk, it survives OS-disk operations and can be resized independently. The disk is captured into the image and re-provisioned on every VM.

Enabling HTTPS

The image serves plain HTTP on port 80. For any non-trivial deployment, terminate TLS in nginx with your own domain and certificate. Install certbot and request a certificate for your domain:

sudo snap install --classic certbot && sudo certbot --nginx -d <your-domain>

certbot edits the nginx site to listen on 443 with your certificate and sets up automatic renewal. After enabling TLS, restrict port 80 in the NSG to the certbot HTTP-01 challenge or redirect it to 443.

Maintenance

Restart the stack or follow the logs with the standard systemd tooling:

sudo systemctl restart dubbo-admin.service
sudo journalctl -u dubbo-admin.service -n 50 --no-pager

The ZooKeeper registry is managed the same way through zookeeper.service. Operating-system security updates are delivered through Ubuntu unattended-upgrades, which remains enabled on the image.

Support

This image is maintained by cloudimg with 24/7 support. Contact support@cloudimg.co.uk for assistance with deployment, configuration or maintenance.