Eloq Waiter contains tools for developing and operating EloqData components outside Kubernetes.
The active cluster manager product target is EloqKV. Legacy EloqSQL, MonoSQL, Codis, and MySQL exporter deployment paths have been removed.
Install the latest release:
curl -fsSL https://raw.githubusercontent.com/eloqdata/eloq_waiter/main/install.sh | shInstall a specific release tag:
curl -fsSL https://raw.githubusercontent.com/eloqdata/eloq_waiter/main/install.sh | sh -s -- v1.8.1For local development, build and install the current checkout:
scripts/install-dev.shThis installs ${ELOQCTL_HOME:-$HOME/.eloqctl}/bin/eloqctl and links ${ELOQCTL_HOME:-$HOME/.eloqctl}/config to src/cluster_mgr/config in this repository. For upgrade compatibility, a legacy ${ELOQCTL_HOME:-$HOME/.eloqctl}/bin/cluster_mgr link is also retained.
When the installer detects an existing eloqctl state directory, it also runs
eloqctl upgrade automatically to migrate local cluster metadata.
Before using eloqctl against a fresh machine, bootstrap every target host first:
curl -fsSL https://raw.githubusercontent.com/eloqdata/eloq_waiter/main/scripts/setup-host.sh | sudo bashThen copy the control-machine public key to each target host:
ssh-copy-id -i ~/.ssh/id_rsa.pub eloq@<target-host>The website prerequisite guide explains what the setup script configures and how to verify the machine state.
For deployment field meanings and example YAML shapes, see the EloqKV website docs: Deployment YAML Reference and Deploy High Availability Cluster with MinIO.
Launch an EloqKV cluster from a topology file:
eloqctl launch /path/to/topology.yamlFor a local single-node trial after installation, start from the bundled example:
cp "${ELOQCTL_HOME:-$HOME/.eloqctl}/config/examples/eloqctl_single_node_localhost.yaml" ./eloqkv-local-demo.yaml
eloqctl launch ./eloqkv-local-demo.yaml
eloqctl status eloqkv-local-demo --wait 60This example targets 127.0.0.1, stores files under ${ELOQCTL_HOME:-$HOME/.eloqctl}/demo/eloqkv-local-demo, and assumes the current user can SSH to localhost with the key configured in the YAML file.
Check live status by cluster name. status does not require the YAML file; it uses the local cluster index to find the saved topology and then probes the real hosts:
eloqctl status eloqkv-cluster --wait 60Get a client command:
CLIENT=$(eloqctl -q connect eloqkv-cluster)
eval "$CLIENT" pingPreview and apply supported declarative changes:
eloqctl plan /path/to/topology.yaml
eloqctl apply /path/to/topology.yamlExport the saved launch-compatible topology:
eloqctl export eloqkv-cluster --output eloqkv-cluster.yamlStop and remove a cluster through eloqctl:
eloqctl stop eloqkv-cluster --all --force
eloqctl remove eloqkv-cluster --forceeloqctl separates desired and observed state:
- Desired topology is stored as YAML under
${ELOQCTL_HOME:-$HOME/.eloqctl}/clusters/<cluster>/topology.yamland can be exported witheloqctl export. - SQLite stores only local operational metadata such as the cluster index, locks, operation history, and backup metadata.
- Runtime health is always observed live from the hosts and EloqKV endpoints. SQLite task history is not treated as proof that a service is running.
Install Rust and the system build dependencies first. On Ubuntu:
sudo apt install build-essential pkg-config libssl-dev
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shBuild the eloqctl binary:
cargo build -p cluster_mgr --bin eloqctl
cargo build -p cluster_mgr --bin eloqctl --releaseUseful local commands:
cargo fmt --all -- --check
cargo check -p cluster_mgr --bin eloqctl
scripts/install-dev.sh
scripts/test-before-push.sh
scripts/install-git-hooks.shThe local push gate is scripts/test-before-push.sh. It performs:
- Local dev install of
eloqctl. - Rust formatting check.
cargo check -p cluster_mgr --bin eloqctl.cargo clippy --all-targets --all-features -- -D warnings.
Full Docker E2E coverage runs in GitHub Actions rather than in the local pre-push script.
The gate uses the Rust nightly toolchain specified in rust-toolchain.toml. Ensure the clippy component is installed:
rustup component add clippyInstall the pre-push hook with:
scripts/install-git-hooks.shThe Docker E2E tests keep eloqctl on the host and use Ubuntu containers only as SSH-accessible target nodes. Runtime dependencies are installed by eloqctl run-deps/launch, not baked into the test image.
eloqctlcommands:doc/eloqctl.md- Declarative reconcile model:
doc/declarative_reconcile.md - Idempotency guarantees:
doc/idempotency.md - Backup and dump tools:
doc/backup_and_dump_tools.md - Docker E2E tests:
tests/README.md - Developer helper commands:
doc/devtools_cmd.md