From b4d932393efb07a43a3ec4489026a1ae1f878f8f Mon Sep 17 00:00:00 2001 From: utchoang Date: Tue, 27 Jul 2021 13:44:49 +0700 Subject: [PATCH 1/2] multiple server management documentation --- .../images/ui-multiple-server-management.png | Bin 0 -> 30709 bytes source/adminguide/ui.rst | 63 ++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 source/_static/images/ui-multiple-server-management.png diff --git a/source/_static/images/ui-multiple-server-management.png b/source/_static/images/ui-multiple-server-management.png new file mode 100644 index 0000000000000000000000000000000000000000..32f9645d8b08b601b3f30d4f0323ebabcb8ffcff GIT binary patch literal 30709 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 literal 0 HcmV?d00001 diff --git a/source/adminguide/ui.rst b/source/adminguide/ui.rst index 5f8594b015..44f02cf598 100644 --- a/source/adminguide/ui.rst +++ b/source/adminguide/ui.rst @@ -472,6 +472,66 @@ Useful documentations: - `JavaScript ES6 Reference `_ - `Introduction to ES6 `_ +Multiple Management Support +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +User can use file `/etc/cloudstack/management/config.json` to configure the settings which allow Cloudstack to support multiple servers. + +To Cloudstack support use multiple servers, the following details can be edited in config.json: + +============================= ================================================================ +Property Description +============================= ================================================================ +multipleServer Configure to allow Cloudstack to support multiple servers. +servers List of servers to which Cloudstack can connect. +============================= ================================================================ + +.. parsed-literal:: + + { + ... + "servers" [ + { + "name": "server-1", + "apiHost": "/server-1", + "apiBase": "/client/api", + }, + { + "name": "server-2", + "apiHost": "", + "apiBase": "/client/api", + } + ] + ... + "multipleServer": true + } + +For the UI to work with different servers, it is necessary to configure the Nginx config proxy to allow connections to the respective servers without Cross-Origin (to be put into /etc/nginx/conf.d/default/conf or similar). + +.. parsed-literal:: + + server { + listen 80; + server_name localhost; + location / { + # /src/ui/dist contains the built UI webpack + root /src/ui/dist; + index index.html; + } + # for apiHost of server01 located in config.json + location /server-1/client/ { + rewrite ^/server-1/(.*)$ /$1 break; + # server's actual URI + proxy_pass https://server-1.your.domain; + } + # for apiHost of server02 located in config.json + location /client/ { + # server's actual URI + proxy_pass https://server-2.your.domain; + } + } + +|ui-multiple-server-management.png| Known Limitations ~~~~~~~~~~~~~~~~~ @@ -488,3 +548,6 @@ The following features are no longer supported or available in the UI but are st .. |ui-custom-plugin.png| image:: /_static/images/ui-custom-plugin.png :alt: Custom plugin shown in UI with navigation + +.. |ui-multiple-server-management.png| image:: /_static/images/ui-multiple-server-management.png + :alt: Custom plugin shown in UI with navigation From 52d7301bc25d1912d2fdb4755250d531b8c0c319 Mon Sep 17 00:00:00 2001 From: utchoang Date: Tue, 27 Jul 2021 13:50:10 +0700 Subject: [PATCH 2/2] modify the server name in the Nginx example --- source/adminguide/ui.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/adminguide/ui.rst b/source/adminguide/ui.rst index 44f02cf598..b9fa334b0f 100644 --- a/source/adminguide/ui.rst +++ b/source/adminguide/ui.rst @@ -518,13 +518,13 @@ For the UI to work with different servers, it is necessary to configure the Ngin root /src/ui/dist; index index.html; } - # for apiHost of server01 located in config.json + # for apiHost of server-1 located in config.json location /server-1/client/ { rewrite ^/server-1/(.*)$ /$1 break; # server's actual URI proxy_pass https://server-1.your.domain; } - # for apiHost of server02 located in config.json + # for apiHost of server-2 located in config.json location /client/ { # server's actual URI proxy_pass https://server-2.your.domain;