Come ridimensionare Redis pub / sub all'interno di uno stack Docker, o dovrei disaccoppiarlo?

0

Sto creando un semplice server websocket in nodejs che utilizza Redis pub / sub come backplane di messaggistica e Mongo per l'archiviazione di alcuni dati. Vorrei distribuire questo come servizio Docker in modo che possiamo ridimensionarlo e fornire ridondanza, ma mi sto solo bagnando i piedi con Docker.

Per fortuna il tutorial Docker è un'app Express con un keystore Redis, quindi è un po 'simile a quello che sto facendo. Nel tutorial caricano il bilanciamento dell'app creando un docker-compose.yml per lo stack e aggiungendo un servizio redis simile al seguente:

  redis:
    image: redis
    ports:
      - "6379:6379"
    volumes:
      - "/home/docker/data:/data"
    deploy:
      placement:
        constraints: [node.role == manager]
    command: redis-server --appendonly yes
    networks:
      - webnet

Da quanto ho capito, questo significa che l'istanza di Redis verrà eseguita solo sul gestore di sciami, il che aggiunge un potenziale collo di bottiglia e limita in parte la scalabilità. Ho alcune domande a riguardo:

Se questo nodo fallisce, un nuovo nodo prende il sopravvento come gestore sciame e avvia una nuova istanza di Redis? Come reagiscono le app?

Se vogliamo che anche Redis (e Mongo per quella materia) siano scalabili, dovrebbero semplicemente essere estratti da questo stack e gestiti separatamente?

Sono a conoscenza delle critiche con un ampio ridimensionamento dei pub / sub cluster Redis, e molto probabilmente una singola istanza gestirà facilmente il nostro carico previsto, ma l'obiettivo qui è la ridondanza per una maggiore affidabilità.

    
posta amnesia 03.07.2018 - 20:04
fonte

0 risposte

Leggi altre domande sui tag