MicroStrategy ONE

Équilibreur de charge et clustering pour Library : exemple de workflow de configuration

Installer et configurer le serveur Redis

  1. Pour installer Redis, consultez Bien démarrer avec Redis.
  2. Exécutez le serveur Redis.
  3. Vérifiez le bon fonctionnement de Redis en envoyant une commande « PING » dans redis-cli.

    Un 'PONG' sera répondu si le serveur Redis est bon.

    Copier
    127.0.0.1:6379> ping
    PONG
    127.0.0.1:6379>

    Les serveurs de collaboration nécessitent une URL pour se connecter au serveur Redis en cours d'exécution à des fins de clustering horizontal.

    Exemple redis://redis_host_machine:6379

    Modifiez le fichier de configuration Redis afin qu'il puisse accepter le trafic externe.

    • Dans le fichier de configuration Redis (redis.conf ou en redis.windows-service.conf), ajoutez/modifiez le bind entrée dans bind 0.0.0.0
    • Enregistrez la modification et redémarrez Redis Server

Configurer le serveur de collaboration

  1. Pour tous les serveurs de collaboration installés sur différentes machines, définissez l'URL du serveur Redis, l'URL de l'équilibreur de charge Web et le mode de clustering dans les fichiers de configuration :

    Copier
    {
    "port": 3000,
    "dataSource": {"username": "mstr_collab","password": "xxx"},
    "logging": true,
    "authorizationServerUrl":"<web_load_balancer_url>/api",
    "scaling": "horizontal","redisServerUrl": 
    "<redis_server_url>",
    .......
    }

     

  2. Enregistrez les fichiers de configuration et redémarrez les serveurs de collaboration.
  3. Assurez-vous que tous les serveurs de collaboration fonctionnent correctement en visitant leur URL /status individuelle. Il indiquera l'état réel de l'instance du serveur de collaboration. Par exemple, le serveur de collaboration ci-dessous est en fait suspendu en raison de serveurs Postgres et Redis inaccessibles.

    Copier
    {
    "version":"11.0.0.720",
    "enableTls":false,
    "scaling":"horizontal",
    "logging":true,
    "state":"paused",
    "reason":"The following dependent services are unavailable: DB Service, Redis Server",
    "main":
    {
    "cpu":{"current":0,"max":17},
    "memory":{"current":62758912,"max":85626880},
    "connections":{"total":12,"current":4,"max":11},
    "messages":{"processed":5},
    "restCalls":{"received":3},
    "up_since":"2018-4-18 02:12:42","pid":900
    }
    }

     

Configurer le serveur d'équilibrage de charge Web

L'équilibreur de charge doit utiliser des « sessions persistantes » pour garantir que les clients sont dirigés vers l'instance qui a établi la session initiale. Il doit également prendre en charge le protocole Web Socket (wss :), qui s'appuie sur le protocole de mise à niveau HTTP 1.1.

Par exemple, voici la configuration des serveurs de collaboration en cluster horizontal, lors de l'utilisation de NGINX comme équilibreur de charge Web.

Copier
......

http {
    ......

    upstream collabServer {
    ip_hash;             # this is a must, ensures that we are sticky to the IP to enable a correct socket.io handshake
    server collabServer1:3000;    # provide the list of the Collaboration servers from here
    server collabServer2:3000;
    server collabServer3:3000;
    }
    
    location /socket.io/ {                    # API Pattern for socket.io handshake
        proxy_http_version 1.1;                # Required for proper HTTP upgrade protocol
        proxy_set_header Upgrade $http_upgrade;     # This is a Hop-by-Hop header–must pass through manually
        proxy_set_header Connection "upgrade";      # Another hop-by-hop header
        proxy_pass http://collabServer/socket.io/;      # Directs the request to a server in upstream "collabServer"
    }

    location /status {                    # forward the /status API to one server from the CollabServer list
        proxy_pass http://collabServer/status;
    }

    ......

}

......