From 1d05ef5d64f72e13b077079c82ffc98144a0ef9a Mon Sep 17 00:00:00 2001 From: Mohamed Bilel Besrour <58034472+BBesrour@users.noreply.github.com> Date: Sun, 5 May 2024 09:18:16 +0200 Subject: [PATCH] Development: Add documentation for production setup using Docker (#8400) --- docker/artemis/config/node1.env | 2 +- docker/artemis/config/node2.env | 3 + docker/artemis/config/node3.env | 5 +- docker/artemis/config/prod-multinode.env | 2 +- docker/nginx/artemis-upstream-multi-node.conf | 1 - docs/admin/setup/distributed.rst | 117 ++++++++++++++++++ .../distributed/multi-node-setup.drawio.png | Bin 0 -> 67277 bytes 7 files changed, 126 insertions(+), 4 deletions(-) create mode 100644 docs/admin/setup/distributed/multi-node-setup.drawio.png diff --git a/docker/artemis/config/node1.env b/docker/artemis/config/node1.env index 5db1cae1da99..65d16156ff29 100644 --- a/docker/artemis/config/node1.env +++ b/docker/artemis/config/node1.env @@ -1,4 +1,4 @@ -SPRING_PROFILES_ACTIVE='prod,localvc,localci,buildagent,core,scheduling,docker' +SPRING_PROFILES_ACTIVE='prod,localvc,localci,core,scheduling,docker' EUREKA_INSTANCE_INSTANCEID='Artemis:1' EUREKA_INSTANCE_HOSTNAME='artemis-app-node-1' SPRING_HAZELCAST_INTERFACE='artemis-app-node-1' diff --git a/docker/artemis/config/node2.env b/docker/artemis/config/node2.env index 8fe579d9d0d8..c8438fadc51f 100644 --- a/docker/artemis/config/node2.env +++ b/docker/artemis/config/node2.env @@ -2,3 +2,6 @@ SPRING_PROFILES_ACTIVE='prod,localvc,localci,buildagent,core,docker' EUREKA_INSTANCE_INSTANCEID='Artemis:2' EUREKA_INSTANCE_HOSTNAME='artemis-app-node-2' SPRING_HAZELCAST_INTERFACE='artemis-app-node-2' + +ARTEMIS_VERSIONCONTROL_USER='artemis_admin' +ARTEMIS_VERSIONCONTROL_PASSWORD='artemis_admin' diff --git a/docker/artemis/config/node3.env b/docker/artemis/config/node3.env index feeec81050dc..f0b2937cac32 100644 --- a/docker/artemis/config/node3.env +++ b/docker/artemis/config/node3.env @@ -1,4 +1,7 @@ -SPRING_PROFILES_ACTIVE='prod,localvc,localci,buildagent,core,docker' +SPRING_PROFILES_ACTIVE='prod,buildagent' EUREKA_INSTANCE_INSTANCEID='Artemis:3' EUREKA_INSTANCE_HOSTNAME='artemis-app-node-3' SPRING_HAZELCAST_INTERFACE='artemis-app-node-3' + +ARTEMIS_VERSIONCONTROL_USER='artemis_admin' +ARTEMIS_VERSIONCONTROL_PASSWORD='artemis_admin' diff --git a/docker/artemis/config/prod-multinode.env b/docker/artemis/config/prod-multinode.env index 4ca433fa7fd8..5965e05a4e49 100755 --- a/docker/artemis/config/prod-multinode.env +++ b/docker/artemis/config/prod-multinode.env @@ -35,7 +35,7 @@ EUREKA_INSTANCE_APPNAME='Artemis' JHIPSTER_REGISTRY_PASSWORD="admin" JHIPSTER_SECURITY_AUTHENTICATION_JWT_BASE64SECRET="bXktc2VjcmV0LWtleS13aGljaC1zaG91bGQtYmUtY2hhbmdlZC1pbi1wcm9kdWN0aW9uLWFuZC1iZS1iYXNlNjQtZW5jb2RlZAo=" -ARTEMIS_VERSIONCONTROL_URL='https://localhost' +ARTEMIS_VERSIONCONTROL_URL='http://artemis-app-node-2:8080' ARTEMIS_VERSIONCONTROL_USER='demo' ARTEMIS_VERSIONCONTROL_PASSWORD='demo' ARTEMIS_CONTINUOUSINTEGRATION_ARTEMISAUTHENTICATIONTOKENVALUE='demo' diff --git a/docker/nginx/artemis-upstream-multi-node.conf b/docker/nginx/artemis-upstream-multi-node.conf index f8d94a933494..1ea41db8232e 100644 --- a/docker/nginx/artemis-upstream-multi-node.conf +++ b/docker/nginx/artemis-upstream-multi-node.conf @@ -1,3 +1,2 @@ server artemis-app-node-1:8080; server artemis-app-node-2:8080; -server artemis-app-node-3:8080; diff --git a/docs/admin/setup/distributed.rst b/docs/admin/setup/distributed.rst index 00b21980bc57..f1bd48e0e7ec 100644 --- a/docs/admin/setup/distributed.rst +++ b/docs/admin/setup/distributed.rst @@ -43,6 +43,8 @@ have to be synchronized: Each of these three aspects is synchronized using a different solution +.. _Database Cache: + Database cache ^^^^^^^^^^^^^^ Artemis uses a cache provider that supports distributed caching: Hazelcast_. @@ -281,6 +283,8 @@ This enables the registry in nginx This will apply the config changes and the registry will be reachable. +.. _WebSockets: + WebSockets ^^^^^^^^^^ @@ -652,3 +656,116 @@ different ports and a unique instance ID for each instance. #. Start the remaining instances. You should now be able to see all instances in the registry interface at ``http://localhost:8761``. + +.. _Running multiple instances locally with Docker: + +Running multiple instances locally with Docker +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +You can also run multiple instances of Artemis locally using Docker. This will start 3 Artemis instances, each running +on a its own container. A load balancer (nginx) will be used to distribute the requests to the different instances. The +load balancer will be running in a separate container and will be accessible on ports 80/443 of the host system. The +instances will be registered in the registry service running on a separate container. The instances will use the registry +service to discover each other and form a Hazelcast cluster. Further details can be found in :ref:`Database Cache`. The +instances will also use a ActiveMQ Artemis broker to synchronize WebSocket messages. Further details can be found in +:ref:`WebSockets`. In summary, the setup will look like this: + +* 3 Artemis instances: + + * artemis-app-node-1: using following spring profile: ``prod,localvc,localci,core,scheduling,docker`` + * artemis-app-node-2: using following profile: ``prod,localvc,localci,buildagent,core,docker`` + * artemis-app-node-3: using following profile: ``prod,buildagent`` +* A MySQL database addressable on port 3306 of the host system +* A Load balancer (nginx) addressable on ports 80/443 of the host system: ``http(s)://localhost`` +* A Registry service addressable on port 8761 of the host system: ``http://localhost:8761`` +* An ActiveMQ broker + + + .. figure:: distributed/multi-node-setup.drawio.png + :align: center + + + +.. note:: + + - You don't have to start the client manually. The client files are served by the Artemis instances and can be + accessed through the load balancer on ``http(s)://localhost``. + + - You may run into the following error when starting the containers + ``No member group is available to assign partition ownership...``. This issue should resolve itself after a few + minutes. Otherwise, you can first start the following containers: + ``docker compose -f docker/test-server-multi-node-mysql-localci.yml up mysql jhipster-registry activemq-broker artemis-app-node-1``. + After these containers are up and running, you can start the remaining containers: + ``docker compose -f docker/test-server-multi-node-mysql-localci.yml up artemis-app-node-2 artemis-app-node-3 nginx``. + + +Linux setup +""""""""""" + +#. When running the Artemis container on a Unix system, you will have to give the user running in the container + permission to access the Docker socket by adding them to the docker group. You can find the group ID of the docker + group by running ``getent group docker | cut -d: -f3``. Afterwards, create a new file ``docker/.env`` with the + following content: + + .. code:: bash + + DOCKER_GROUP_ID= + +#. The docker compose setup which we will use will mount some local directories + (namely the ones under docker/.docker-data) into the containers. To ensure that the user running in the container has + the necessary permissions to these directories, you will have to change the owner of these directories to the + user running in the container (User with ID 1337). You can do this by running the following command: + + .. code:: bash + + sudo chown -R 1337:1337 docker/.docker-data + + .. note:: + + - If you don't want to change the owner of the directories, you can create other directories with the necessary + permissions and adjust the paths in the docker-compose file accordingly. + - You could also use docker volumes instead of mounting local directories. You will have to adjust the docker-compose + file accordingly (`Docker docs `_). + However, this would make it more difficult to access the files on the host system. + +#. Start the docker containers by running the following command: + + .. code:: bash + + docker compose -f docker/test-server-multi-node-mysql-localci.yml up + +#. You can now access artemis on ``http(s)://localhost`` and the registry on ``http://localhost:8761``. + +Windows setup +""""""""""""" + +#. When running the Artemis container on a Windows system, you will have to change the value for the Docker connection + URI. You need to change the value of the environment variable ``ARTEMIS_CONTINUOUSINTEGRATION_DOCKERCONNECTIONURI`` + in the file ``docker/artemis/config/prod-multinode.env`` to ``tcp://host.docker.internal:2375``. + + .. note:: + + - Make sure that option "Expose daemon on tcp://localhost:2375 without TLS" is enabled. This can be found under + Settings > General in Docker Desktop. + +#. Start the docker containers by running the following command: + + .. code:: bash + + docker compose -f docker/test-server-multi-node-mysql-localci.yml up + +#. You can now access artemis on ``http(s)://localhost`` and the registry on ``http://localhost:8761``. + +MacOS setup +""""""""""" + +#. Make sure to enable "Allow the default Docker socket to be used (requires password)" in the Docker Desktop settings. + This can be found under Settings > Advanced in Docker Desktop. + +#. Start the docker containers by running the following command: + + .. code:: bash + + docker compose -f docker/test-server-multi-node-mysql-localci.yml up + +#. You can now access artemis on ``http(s)://localhost`` and the registry on ``http://localhost:8761``. diff --git a/docs/admin/setup/distributed/multi-node-setup.drawio.png b/docs/admin/setup/distributed/multi-node-setup.drawio.png new file mode 100644 index 0000000000000000000000000000000000000000..2ed573edef8cf043b4a6ca5cd10adc270f96c8e3 GIT binary patch literal 67277 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 I-SzOl0oOgW$p8QV literal 0 HcmV?d00001