Deployment guide

Apache Dubbo

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.

This SecureAnyCloud 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 sits behind an nginx reverse proxy on TCP 80.

What you get:

  • 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
  • A unique root administrator password generated on the first boot of every VM and stored in a root-only file
  • zookeeper.service, dubbo-admin.service and nginx.service as enabled, active systemd units
  • 24/7 SecureAnyCloud support

Prerequisites

You need an active Azure subscription, an SSH key pair, and a VNet with a subnet in the target region.

Standard_B2ms (2 vCPU / 8 GiB RAM) is a good starting size, because the ZooKeeper and Dubbo Admin JVMs run together.

Configure the network security group (NSG) to allow inbound 22/tcp from your management network and 80/tcp from the operators who reach the console. Put TLS in front of port 80 before you expose it publicly (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 SecureAnyCloud, and select Create.

On the Basics tab, 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 select Review + create and Create.

Step 2 - Deploy from the Azure CLI

az vm image terms accept --urn sac1647283583153:apache-dubbo-ubuntu-24-04:default:latest
az vm create \
  --resource-group your-rg \
  --name dubbo-admin \
  --image sac1647283583153: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

Every VM generates its own root administrator password on first boot and writes it 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:

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 start automatically: the ZooKeeper registry, the Dubbo Admin application and the nginx reverse proxy. Confirm that 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:

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.

You can also call the Dubbo Admin login API 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 password in angle brackets with the real value. The round trip looks like this:

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.

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.

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.

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. The disk is 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 you enable 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 standard systemd tooling:

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

Manage the ZooKeeper registry the same way through zookeeper.service. Ubuntu unattended-upgrades delivers operating-system security updates and stays enabled on the image.

Support

This image is maintained by SecureAnyCloud with 24/7 support. Contact sales@secureanycloud.com for assistance with deployment, configuration or maintenance.

Deploy on Azure

Launch Apache Dubbo Admin on Ubuntu 24.04 LTS on Azure with 24/7 support from SecureAnyCloud.

View this image

Need Help?

Our support team is available 24/7.

sales@secureanycloud.com

Deploy on Azure