fix widespread naming errors across all docs — array_started, fallback, FALLBACK_
array_start.sh → array_started.sh (bulk rename — actual file has always been array_started.sh; docs consistently used the wrong name across 9 files) failover.sh → fallback.sh (bulk rename — script is Fallback/fallback.sh; docs used the old name throughout) FAILOVER_HOST2_RUNS_FOR_HOST1_TIER1 → FALLBACK_HOST2_COVERS_HOST1_TIER1 (README.md — wrong variable name, actual vars use FALLBACK_ prefix and COVERS_ not RUNS_FOR_) docker_watchdog.sh attribution: "started by array_started.sh" → "called every minute by watchdog_orchestrator.sh" (docker_watchdog is not in ARRAY_START_SCRIPTS) server_reboot.sh shutdown sequence: step 7 "rc.docker stop" → calls array_stopping.sh (user_scripts, fallback, rsync, mover, docker_container_stop) Rsync manual ARRAY_START_SCRIPTS list: removed stability_watchdog and docker_watchdog (now in watchdog_orchestrator); failover → fallback
This commit is contained in:
@@ -70,7 +70,7 @@ break silently.
|
||||
Dispatcharr # shared Live TV scheduler
|
||||
```
|
||||
|
||||
When `failover.sh` on HOST2 reads `FAILOVER_HOST2_RUNS_FOR_HOST1_TIER1=(..."Emby"...)`,
|
||||
When `fallback.sh` on HOST2 reads `FALLBACK_HOST2_COVERS_HOST1_TIER1=(..."Emby"...)`,
|
||||
it looks for a container called exactly `Emby` and starts it. HOST2 must have a
|
||||
container called `Emby` — not `Emby-Gmer4Lfe`, not `Emby-HOST1`, just `Emby` — with
|
||||
its volume mounts pointing at the mirrored share paths. This is what makes one
|
||||
@@ -107,7 +107,7 @@ the suffix makes the owner unambiguous. Scripts targeting `Emby` and scripts tar
|
||||
# The entire ecosystem uses container names as identifiers.
|
||||
# docker_watchdog.sh: WATCHDOG_REQUIRED_CONTAINERS=("NginxProxyManager" "Authelia")
|
||||
# → looks for exactly "NginxProxyManager" on the running server
|
||||
# failover.sh: FAILOVER_HOST2_RUNS_FOR_HOST1_TIER1=("Emby" "VaultWarden")
|
||||
# fallback.sh: FALLBACK_HOST2_COVERS_HOST1_TIER1=("Emby" "VaultWarden")
|
||||
# → looks for exactly "Emby" and "VaultWarden" on HOST2
|
||||
# docker_daily_restart.sh: DAILY_RESTART_CONTAINERS=("Dispatcharr" "Authelia")
|
||||
# → looks for exactly those names in docker ps
|
||||
@@ -365,7 +365,7 @@ This is not standby. This is mutual coverage between peers.
|
||||
# Things conventional failover provides that this does NOT:
|
||||
# Zero RPO (recovery point objective) — there is ~15min of potential staleness
|
||||
# Synchronous state replication — changes don't reach HOST2 instantly
|
||||
# Automatic failure detection in seconds — failover.sh checks every 2 minutes
|
||||
# Automatic failure detection in seconds — fallback.sh checks every 2 minutes
|
||||
# Transparent IP migration — DNS TTL means up to 1 minute of routing to old IP
|
||||
#
|
||||
# What you get instead:
|
||||
@@ -380,7 +380,7 @@ This is not standby. This is mutual coverage between peers.
|
||||
|
||||
## ━━━ HOW FAILOVER ACTUALLY WORKS ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
|
||||
`failover.sh` runs on both servers as a continuous background process. Every 2 minutes
|
||||
`fallback.sh` runs on both servers as a continuous background process. Every 2 minutes
|
||||
it pings two things: the other server's Tailscale IP, and `8.8.8.8`. The combination
|
||||
of those two answers determines the current state.
|
||||
|
||||
@@ -465,7 +465,7 @@ Failover coverage:
|
||||
Monitoring:
|
||||
Both servers resource/docker/system/ resource/docker/system/
|
||||
stability_watchdog.sh stability_watchdog.sh
|
||||
failover.sh failover.sh
|
||||
fallback.sh fallback.sh
|
||||
Sunday morning coffee report Sunday morning coffee report
|
||||
```
|
||||
|
||||
@@ -558,13 +558,13 @@ Arbiter runs only orchestrators — never individual scripts directly.
|
||||
|
||||
```
|
||||
At Startup of Array:
|
||||
array_start.sh launches all startup scripts in order
|
||||
array_started.sh launches all startup scripts in order
|
||||
→ inotify_tuning.sh raise kernel limits before containers start
|
||||
→ docker_syslog_filter.sh suppress veth noise before containers create interfaces
|
||||
→ php_fpm_max_children.sh WebGUI tuning before first request
|
||||
→ ramdisk_setup.sh create ramdisk before Emby starts
|
||||
→ docker_network_connect.sh connect containers to extra networks
|
||||
→ failover.sh continuous — mutual failover state machine
|
||||
→ fallback.sh continuous — mutual failover state machine
|
||||
|
||||
Every minute:
|
||||
watchdog_orchestrator.sh fires each watchdog in sequence
|
||||
@@ -619,7 +619,7 @@ Throughout the day (every minute via watchdog_orchestrator.sh):
|
||||
stability_watchdog.sh watching: RAM, CPU temp, rootfs, kernel, daemon
|
||||
|
||||
Throughout the day:
|
||||
failover.sh watching: remote server, internet connectivity
|
||||
fallback.sh watching: remote server, internet connectivity
|
||||
transcode_management.sh managing: ramdisk ↔ SSD, session cleanup (every 3min)
|
||||
critical_sync_maintenance.sh keeping: auth stack + Emby current (every 15min)
|
||||
|
||||
@@ -671,7 +671,7 @@ Problem: Docker daemon hung
|
||||
→ If still hung: immediate reboot (no strikes needed — daemon can't be managed)
|
||||
|
||||
Problem: HOST1 loses power
|
||||
→ failover.sh on HOST2 detects at next 2-minute check
|
||||
→ fallback.sh on HOST2 detects at next 2-minute check
|
||||
→ Tier 1 starts immediately: DDNS, Emby, VaultWarden, Live TV
|
||||
→ Household barely notices. Live TV may buffer for < 2 minutes.
|
||||
```
|
||||
@@ -732,7 +732,7 @@ Things that are different from what you might expect:
|
||||
# ─────────────────────────────────────────────────────────────────────────────
|
||||
# 1. Arbiter has very few entries.
|
||||
# Everything runs through orchestrators. Individual scripts are never
|
||||
# scheduled directly. array_start.sh is the only "At Startup of Array" entry.
|
||||
# scheduled directly. array_started.sh is the only "At Startup of Array" entry.
|
||||
|
||||
# 2. Scripts are silent when healthy.
|
||||
# stability_watchdog.sh runs 288 times per day. It produces zero output on clean
|
||||
|
||||
Reference in New Issue
Block a user