MicroStrategy ONE
Équilibreur de charge et clustering pour Library : exemple de workflow de configuration
Installer et configurer le serveur Redis
- Pour installer Redis, consultez Bien démarrer avec Redis.
- Exécutez le serveur Redis.
-
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.
Copier127.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 enredis.windows-service.conf
), ajoutez/modifiez lebind
entrée dansbind 0.0.0.0
- Enregistrez la modification et redémarrez Redis Server
- Dans le fichier de configuration Redis (
Configurer le serveur de collaboration
-
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>",
.......
} - Enregistrez les fichiers de configuration et redémarrez les serveurs de collaboration.
-
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.
......
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;
}
......
}
......