Guia Avançada de Gestió i Optimització de Servidors
1. Ajustament del Rendiment del Servidor
Optimització a nivell de Kernel
-
Kernels Personalitzats: Linux 6.x amb control de congestió BBR2
-
Modificacions a la pila TCP:
# Augmentar la mida màxima dels búfers TCP echo 'net.core.rmem_max=4194304' >> /etc/sysctl.conf echo 'net.core.wmem_max=4194304' >> /etc/sysctl.conf
-
Ajust de Swappiness: Configurat a 10 per a servidors de bases de dades
Optimització de Bases de Dades
-
Específic per MySQL 8.0+:
SET GLOBAL innodb_buffer_pool_size=12G; -- Per a servidors amb 16 GB de RAM SET GLOBAL innodb_io_capacity=2000; -- Per a emmagatzematge SSD/NVMe
-
Ajust de PostgreSQL 14+:
ALTER SYSTEM SET shared_buffers = '4GB'; ALTER SYSTEM SET effective_cache_size = '12GB';
2. Configuracions Avançades de Seguretat
Implementació Zero-Trust
-
Segmentació de Xarxa:
-
Servidors frontend a DMZ amb regles estrictes d'ingrés
-
Servidors de bases de dades en VLAN privada amb IPs en llista blanca
-
-
Autenticació Servei a Servei:
-
mTLS mutu per a comunicacions internes
-
SPIFFE/SPIRE per a gestió d'identitat
-
Protecció en temps d'execució:
# Instal·lar i configurar Falco per a la seguretat en temps d'execució
curl -s https://falco.org/repo/falcosecurity-3672BA8F.asc | apt-key add -
echo "deb https://download.falco.org/packages/deb stable main" | tee -a /etc/apt/sources.list.d/falcosecurity.list
apt-get update && apt-get install -y falco
3. Configuració de Contenidors i Orquestració
Optimització de Kubernetes
# Fragment de manifest de Kubernetes per a producció
apiVersion: apps/v1
kind: Deployment
spec:
template:
spec:
containers:
- name: app
resources:
limits:
cpu: "2"
memory: "4Gi"
requests:
cpu: "1"
memory: "2Gi"
topologySpreadConstraints:
- maxSkew: 1
topologyKey: kubernetes.io/hostname
whenUnsatisfiable: ScheduleAnyway
Configuració de Service Mesh
# Configuracions optimitzades d'Istio
istioctl install --set profile=default \
--set values.global.proxy.resources.limits.cpu=2000m \
--set values.global.proxy.resources.limits.memory=1024Mi
4. Integració de Pipeline CI/CD
Flux de treball GitOps
// Exemple de Jenkinsfile per a desplegaments sense temps d'inactivitat
pipeline {
stages {
stage('Deploy') {
steps {
sh 'kubectl apply -f k8s/ --prune -l app=myapp'
timeout(time: 15, unit: 'MINUTES') {
input message: 'Aprovar producció?'
}
}
}
}
post {
failure {
slackSend channel: '#alerts', message: "La compilació ${currentBuild.number} ha fallat!"
}
}
}
5. Desplegament de la pila de monitoratge
Suite d'observabilitat
# Pila Prometheus + Grafana + Loki version: '3' services: prometheus: image: prom/prometheus:v2.40.0 command: - '--config.file=/etc/prometheus/prometheus.yml' volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml grafana: image: grafana/grafana:9.3.2 ports: - "3000:3000"
Recollida de mètriques personalitzades
# Exemple d'exportador Python per a mètriques de negoci personalitzades
from prometheus_client import start_http_server, Gauge
import random
REQUEST_LATENCY = Gauge('app_request_latency', 'Latència de l\'aplicació en ms')
if __name__ == '__main__':
start_http_server(8000)
while True:
REQUEST_LATENCY.set(random.randint(1, 100))
6. Protocols de recuperació de desastres
Prova automatitzada de conmutació
# Script d'enginyeria del caos
#!/bin/bash
# Terminació aleatòria de nodes per provar la resistència
NODES=$(kubectl get nodes -o jsonpath='{.items[*].metadata.name}')
TARGET=$(shuf -e -n1 $NODES)
echo "Terminant node $TARGET"
gcloud compute instances delete $TARGET --zone=us-central1-a
7. Extensions d'Edge Computing
Regles avançades de CDN
// Script de Cloudflare Workers per a la lògica edge
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request))
})
async function handleRequest(request) {
const url = new URL(request.url)
if (url.pathname.startsWith('/api/')) {
return new Response('Bloquejat a l\'edge', { status: 403 })
}
return fetch(request)
}
8. Estratègies d'optimització de costos
Automatització d'instàncies Spot
# Configuració de AWS Spot Fleet resource "aws_spot_fleet_request" "workers" { iam_fleet_role = "arn:aws:iam::123456789012:role/spot-fleet" target_capacity = 10 allocation_strategy = "diversified" launch_specification { instance_type = "m5.large" ami = "ami-123456" spot_price = "0.05" } }