Snapshot of verae-nats-cluster (optimal NATS config study)

This commit is contained in:
George Lambert 2026-09-12 02:06:10 -04:00
commit 8639ca27ee
184 changed files with 10626 additions and 0 deletions

102
scripts/maximize-ns1-study.sh Executable file
View file

@ -0,0 +1,102 @@
#!/usr/bin/env bash
# Maximize nats LXC resources + RAM-disk JetStream, run the NS1 study, then
# put product streams back on ZFS. Cores/RAM/max_mem stay raised.
# Must run on NS1.GEORGELAMBERT.ORG.
set -euo pipefail
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
export PATH="/usr/sbin:/usr/bin:/bin:/usr/local/bin:$PATH"
HOST="$(hostname -f 2>/dev/null || hostname)"
case "$HOST" in
NS1.GEORGELAMBERT.ORG|NS1|ns1.georgelambert.org|ns1) ;;
*)
echo "refusing: maximize-ns1-study.sh must run on NS1, got '$HOST'" >&2
exit 1
;;
esac
CORES="${CORES:-8}"
MEMORY="${MEMORY:-16384}"
TMPFS_SIZE="${TMPFS_SIZE:-8G}"
NATS_VMS=(511 512 513)
ALL_VMS=(510 511 512 513)
apply_resources() {
local v
for v in "${ALL_VMS[@]}"; do
echo "pct set $v --cores $CORES --memory $MEMORY"
sudo pct set "$v" --cores "$CORES" --memory "$MEMORY"
done
}
patch_max_mem() {
local v
for v in "${NATS_VMS[@]}"; do
sudo pct exec "$v" -- sed -i -E 's/max_mem:[[:space:]]*[0-9]+[MmGg]/max_mem: 8G/' /etc/nats/nats.conf
sudo pct exec "$v" -- grep -n max_mem /etc/nats/nats.conf
done
}
mount_tmpfs() {
local v
for v in "${NATS_VMS[@]}"; do
sudo pct exec "$v" -- bash -lc "
set -e
systemctl stop nats-server
mkdir -p /var/lib/nats/jetstream
if ! mountpoint -q /var/lib/nats/jetstream; then
mount -t tmpfs -o size=${TMPFS_SIZE} nats-js /var/lib/nats/jetstream
fi
chown nats:nats /var/lib/nats/jetstream
chmod 755 /var/lib/nats/jetstream
systemctl start nats-server
mount | grep jetstream
"
done
}
unmount_tmpfs() {
local v
for v in "${NATS_VMS[@]}"; do
sudo pct exec "$v" -- bash -lc '
set -e
systemctl stop nats-server || true
if mountpoint -q /var/lib/nats/jetstream; then
umount /var/lib/nats/jetstream
fi
mkdir -p /var/lib/nats/jetstream
chown nats:nats /var/lib/nats/jetstream
systemctl start nats-server
'
done
}
wait_cluster() {
local n=0
until sudo pct exec 511 -- curl -fsS --max-time 2 http://127.0.0.1:8222/varz >/dev/null 2>&1; do
n=$((n + 1))
[[ $n -lt 30 ]] || { echo "nats-a varz not up" >&2; return 1; }
sleep 1
done
sleep 2
}
restore_durable() {
echo "restoring ZFS JetStream (product streams)"
unmount_tmpfs
wait_cluster
bash "$ROOT/scripts/ensure-streams.sh" || true
}
apply_resources
patch_max_mem
mount_tmpfs
wait_cluster
trap restore_durable EXIT
export JS_EXTRA_MEMORY=1
export COMPARE_DIR="${COMPARE_DIR:-$ROOT/results/20260912T051237Z}"
# recorded in host-before by appending after dump starts — study script reads pct config live
bash "$ROOT/scripts/study-on-ns1.sh"
echo "maximize study finished; trap will restore ZFS jetstream"