Snapshot of verae-nats-cluster (maximized NS1 NATS study)
This commit is contained in:
commit
9df03b7c19
121 changed files with 6583 additions and 0 deletions
102
scripts/maximize-ns1-study.sh
Executable file
102
scripts/maximize-ns1-study.sh
Executable 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"
|
||||
Loading…
Add table
Add a link
Reference in a new issue