MicroStrategy ONE
ライブラリのロードバランサとクラスタリング: セットアップワークフローの例
Redis Server のインストールと構成
- Redisをインストールするには、 Redisを使い始める。
- Redis Server を起動します。
-
Redisが正常に動作しているかどうかを確認するには、「PING」コマンドを送信します。
redis-cli
。Redis Server が正常に稼働していれば「PONG」という応答があります。
コピー127.0.0.1:6379> ping
PONG
127.0.0.1:6379>Collaboration Server が稼働中の Redis Server に接続し、水平クラスター化を行うためには、URL の指定が必要です。
例 :
redis://redis_host_machine:6379
Redis 設定ファイルを書き換えて、外部トラフィックを受け取るようにしてください。
- Redis設定ファイル(
redis.conf
またはredis.windows-service.conf
)、追加/変更bind
エントリーbind 0.0.0.0
- 書き換えたファイルを保存し、Redis Server を再起動してください。
- Redis設定ファイル(
Collaboration Server の構成
-
各コンピューターにインストールした Collaboration Server それぞれについて、Redis Server の URL、ウェブ ロード バランサーの URL、クラスター化モードを、設定ファイルに記述してください。
コピー{
"port": 3000,
"dataSource": {"username": "mstr_collab","password": "xxx"},
"logging": true,
"authorizationServerUrl":"<web_load_balancer_url>/api",
"scaling": "horizontal","redisServerUrl":
"<redis_server_url>",
.......
} - 設定ファイルを保存し、Collaboration Server を再起動します。
-
すべて正常に稼働しているか、それぞれの「/status」という URL を使って確認してください。この URL は、各 Collaboration Server インスタンスの、実際の状態を返します。例えば次の Collaboration Server は、Postgres サーバーや Redis サーバーに到達できないため、一時停止状態になっています。
コピー{
"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
}
}
Web Load Balancer Server の設定
ロード バランサーは「スティッキー セッション」を使って、クライアントが、初期セッションを確立したインスタンスとやり取りできるようにする必要があります。さらに、Web Socket プロトコル (wss:) にも対応する必要がありますが、これは HTTP 1.1 Upgrade プロトコルに依存します。
例として、水平クラスター化した Collaboration Server の設定ファイルを示します。NGINX をウェブ ロード バランサーとして使っています。
......
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;
}
......
}
......