Chapter 7: Advanced Operations

Troubleshooting, performance tuning, and emergency recovery

7.2 Performance Tuning

Resource Optimization Implement Resource Limits: # Add to high-resource services deploy: resources: limits: memory: 2G cpus: '1.0' reservations: memory: 1G cpus: '0.5' Database Performance Tuning: PostgreSQL Optimization: # Create custom PostgreSQL configuration # /mnt/swarm-data/postgres/postgresql.conf shared_buffers = 256MB effective_cache_size = 1GB maintenance_work_mem = 64MB checkpoint_completion_target = 0.9 wal_buffers = 16MB default_statistics_target = 100 random_page_cost = 1.1 MariaDB Optimization: # Custom MariaDB configuration # /mnt/swarm-data/mariadb/my.cnf [mysqld] innodb_buffer_pool_size = 512M innodb_log_file_size = 128M max_connections = 100 query_cache_size = 64M Redis Optimization:

7.3 Troubleshooting Guide

Common Issues and Solutions Service Won’t Start: # Check service status docker service ps service-name # Common causes and solutions: # 1. Image not found docker service update --image correct-image:tag service-name # 2. Resource constraints docker service inspect service-name | grep -A 10 Resources # 3. Network issues docker network ls docker network inspect homelab # 4. Volume mount failures docker service logs service-name | grep -i "mount\|volume" ls -la /mnt/swarm-data/service-path/ Network Connectivity Issues:

7.1 Cluster Expansion and Scaling

Adding New Nodes Preparation for New Node: # On new node - Install Docker Engine 28.4.0 curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh # Configure user permissions sudo usermod -aG docker $USER # Verify Docker installation docker version Join New Worker Node: # On manager node - Get join tokens docker swarm join-token worker # Output: SWMTKN-1-[SECRET]-[SECRET] # On new worker node docker swarm join --token SWMTKN-1-[SECRET]-[SECRET] 10.0.4.11:2377 # Verify node addition docker node ls Join New Manager Node(if needed):