Multi-Node Setup
Deployment Architecture
Prerequisites
Configuration by Environment
Docker Compose
# docker-compose.yml
version: '3.8'
services:
redis:
image: redis:7-alpine
ports:
- "6379:6379"
volumes:
- redis_data:/data
app1:
build: .
environment:
- NODE_ID=app-node-1
- REDIS_URL=redis://redis:6379
- SESSION_SECRET=${SESSION_SECRET}
depends_on:
- redis
app2:
build: .
environment:
- NODE_ID=app-node-2
- REDIS_URL=redis://redis:6379
- SESSION_SECRET=${SESSION_SECRET}
depends_on:
- redis
nginx:
image: nginx:alpine
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
depends_on:
- app1
- app2
volumes:
redis_data:Kubernetes
Application Configuration
Node ID Strategies
Using Environment Variables
Using Hostname
Using Kubernetes Pod Name
Generating Unique ID
Message Flow
Health Checks
Application Health Check
Kubernetes Probes
Graceful Shutdown
Monitoring
Metrics to Track
Prometheus Metrics Example
Troubleshooting
Sessions Not Syncing
High Cache Miss Rate
Memory Issues
Redis Connection Issues
Best Practices
1. Use Consistent Node IDs
2. Size Cache for Peak Load
3. Use Separate Redis for Sessions
4. Enable Encryption for Sensitive Data
5. Implement Graceful Degradation
Last updated
Was this helpful?