Prepare Machines for EloqKV Deployment
Run the host setup script from the eloqctl repository on every target host:
curl -fsSL https://raw.githubusercontent.com/eloqdata/eloq_waiter/main/scripts/setup-host.sh | sudo bash
Run that command on every machine that will run EloqKV, log service, DSS, Prometheus, or Grafana.
What the Script Does
The script prepares the machine for eloqctl deployment:
- installs baseline packages such as
openssh-server,sudo,curl,wget,tar,xz, andrsync - creates the
eloquser if it does not already exist - grants passwordless
sudoto theeloquser - enables SSH password authentication and public-key authentication
- configures
AuthorizedKeysFile .ssh/authorized_keys - raises file-descriptor and core-dump limits
- configures
kernel.core_pattern - creates
/var/crashand gives the deployment user access - appends
ulimit -c unlimitedto the deployment user's shell profile
To set the hostname during bootstrap, pass HOSTNAME_VALUE:
curl -fsSL https://raw.githubusercontent.com/eloqdata/eloq_waiter/main/scripts/setup-host.sh | \
sudo HOSTNAME_VALUE=eloq-node-1 bash
To preload an SSH public key during bootstrap, pass SSH_PUBKEY:
curl -fsSL https://raw.githubusercontent.com/eloqdata/eloq_waiter/main/scripts/setup-host.sh | \
sudo SSH_PUBKEY="$(cat ~/.ssh/id_rsa.pub)" bash
What You Still Need To Do
After the script finishes, install the control-machine SSH public key on each target host.
On the control machine:
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub eloq@10.0.0.1
ssh eloq@10.0.0.1
Repeat ssh-copy-id for each target host. When ssh eloq@<host> no longer asks for a password, the host is ready.
Minimal Verification
On each target host, verify the important state:
id eloq
sudo -l -U eloq
sudo systemctl status ssh || sudo systemctl status sshd
sudo cat /etc/security/limits.d/90-eloq.conf
sudo cat /etc/sysctl.d/90-eloq-core.conf
ls -ld /var/crash
On the control machine, verify SSH access:
ssh eloq@10.0.0.1 'sudo -n true && ulimit -n'
Deployment YAML Expectations
After the hosts are ready, make sure the topology YAML is complete before you run eloqctl:
deployment.install_dirshould always be explicit.deployment.enable_wal,deployment.enable_io_uring, anddeployment.enable_tlsshould always be explicit.deployment.cluster_modemust be explicit.deployment.hardwaremust contain every host used bytx_host_ports,standby_host_ports, andvoter_host_ports.hardwareis keyed by host only. If several EloqKV processes run on one machine, define that host once, not once per port.