Rebalance swarm: promote all nodes to managers and remove hostname constraints
- Promoted p1, p2, p3 from worker to manager nodes for 4-node quorum - Removed unnecessary hostname constraints from service configs - Only traefik and portainer remain pinned to p0 - Services now auto-balance across all nodes via GlusterFS shared storage - Updated README with cluster overview and distribution strategy 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
49
README.md
49
README.md
@@ -1,3 +1,50 @@
|
||||
# swarm-production
|
||||
|
||||
Production Docker Swarm Infrastructure
|
||||
Production Docker Swarm Infrastructure
|
||||
|
||||
## Cluster Overview
|
||||
|
||||
### Nodes
|
||||
- **p0** (Manager/Leader) - Infrastructure services
|
||||
- **p1** (Manager) - Application services
|
||||
- **p2** (Manager) - Application services
|
||||
- **p3** (Manager) - Application services
|
||||
|
||||
All nodes are managers providing a 4-node quorum (can tolerate 2 node failures while maintaining quorum).
|
||||
|
||||
### Storage
|
||||
- **GlusterFS** mounted at `/home/doc/swarm-data/` on all nodes
|
||||
- Shared storage enables services to run on any node without storage constraints
|
||||
|
||||
## Service Distribution Strategy
|
||||
|
||||
### Pinned Services
|
||||
Services that must run on specific nodes:
|
||||
|
||||
- **traefik** (p0) - Published ports 80/443, needs stable IP for DNS
|
||||
- **portainer** (p0) - Management UI, stays with leader for convenience
|
||||
- **rsync** (manager constraint) - Backup service, needs manager access
|
||||
|
||||
### Floating Services
|
||||
Services that can run on any node (swarm auto-balances):
|
||||
|
||||
- adminer
|
||||
- authentik (server, worker, redis)
|
||||
- n8n
|
||||
- paperless (webserver, redis)
|
||||
- tracker-nginx
|
||||
- uptime-kuma
|
||||
|
||||
## Recent Changes (2025-10-30)
|
||||
|
||||
### Swarm Rebalancing
|
||||
- Promoted p1, p2, p3 from workers to managers
|
||||
- Removed unnecessary hostname constraints from service configs
|
||||
- Force-redeployed services to redistribute across all nodes
|
||||
- Verified GlusterFS accessibility on all nodes
|
||||
|
||||
### Results
|
||||
- Achieved balanced workload distribution across all 4 nodes
|
||||
- Improved high availability with 4-node manager quorum
|
||||
- Services now self-balance automatically when nodes fail/recover
|
||||
- Fixed Portainer agent connectivity by restarting agents after manager promotion
|
||||
Reference in New Issue
Block a user