From b0f7736967012601117014b73d063abe85efa813 Mon Sep 17 00:00:00 2001 From: Stefano David Date: Wed, 10 Sep 2025 12:08:27 +0200 Subject: [PATCH 01/14] [ZTD-1371] remove (unsupported) replica promotion --- .../redundantwithusermailreplica/ur-configuration.rst | 9 --------- 1 file changed, 9 deletions(-) diff --git a/source/carbonio/install/scenarios/redundantwithusermailreplica/ur-configuration.rst b/source/carbonio/install/scenarios/redundantwithusermailreplica/ur-configuration.rst index 617c7cfb..f9dd707e 100644 --- a/source/carbonio/install/scenarios/redundantwithusermailreplica/ur-configuration.rst +++ b/source/carbonio/install/scenarios/redundantwithusermailreplica/ur-configuration.rst @@ -193,12 +193,3 @@ collection: .. code:: console ansible-playbook -i inventory zxbot.carbonio_ldap.carbonio_install_mmr - -Promote Multi Master LDAP -------------------------- - -It is needed only if Directory Replica is installed - -.. code:: console - - ansible-playbook -i inventory zxbot.carbonio_ldap.carbonio_promote_mmr From 8b0050e4bbabcffaa2e21b143ba97b05289f35c3 Mon Sep 17 00:00:00 2001 From: Stefano David Date: Wed, 10 Sep 2025 14:24:49 +0200 Subject: [PATCH 02/14] [ZTD-1371] remove Zookeeper from Scenario --- .../ur-configuration.rst | 18 ++++------- .../scenario-redundantwithusermailreplica.rst | 31 +++++++++---------- .../playbook/carbonio-inventory-rur-complete | 5 ++- 3 files changed, 23 insertions(+), 31 deletions(-) diff --git a/source/carbonio/install/scenarios/redundantwithusermailreplica/ur-configuration.rst b/source/carbonio/install/scenarios/redundantwithusermailreplica/ur-configuration.rst index f9dd707e..d494b9ef 100644 --- a/source/carbonio/install/scenarios/redundantwithusermailreplica/ur-configuration.rst +++ b/source/carbonio/install/scenarios/redundantwithusermailreplica/ur-configuration.rst @@ -79,18 +79,13 @@ The two new groups to add at the bottom of the file are: srv2.example.com broker_id=2 srv3.example.com broker_id=3 -#. ``zookeeper_servers`` group, which will point to the Nodes where - :command:`zookeper` will be installed: these are the three Cluster - Nodes. To each Node, add the ``zookeeper_id`` variable with a - different value: +#. ``zookeeper_servers`` group, which is no longer used and needs to + be kept empty .. code:: text #zookeeper_servers group [zookeeper_servers] - srv1.example.com zookeeper_id=1 - srv2.example.com zookeeper_id=2 - srv3.example.com zookeeper_id=3 You need also to add variable to existing groups. @@ -138,15 +133,14 @@ can be seen and downloaded here. .. literalinclude:: /playbook/carbonio-inventory-rur-complete -Install Zookeper and Kafka --------------------------- +Install Kafka +------------- -To install Zookeper and Kafka, use the necessary playbook from -``carbonio_kafka`` collection: +To install Kafka, use the necessary playbook from ``carbonio_kafka`` +collection: .. code:: console - # ansible-playbook -i inventory zxbot.carbonio_kafka.carbonio_zookeper_install # ansible-playbook -i inventory zxbot.carbonio_kafka.carbonio_kafka_install Install PostgreSQL HA diff --git a/source/carbonio/install/scenarios/scenario-redundantwithusermailreplica.rst b/source/carbonio/install/scenarios/scenario-redundantwithusermailreplica.rst index a0b8b3d4..48c9c2e9 100644 --- a/source/carbonio/install/scenarios/scenario-redundantwithusermailreplica.rst +++ b/source/carbonio/install/scenarios/scenario-redundantwithusermailreplica.rst @@ -17,11 +17,11 @@ only**, so if you do not have it installed yet please refer to Section :ref:`ansible-setup`: there you will find directions for its setup. This section covers the required components to set up the scenario, -including load balancers, a Kafka cluster, a PostgreSQL cluster, an -Object Storage system like Minio or S3, and a multi-master Carbonio -Directory Server. A step-by-step approach to setting up the Nodes, -configuring centralised storage, and deploying |ur|, will guide you in -the procedure. +including load balancers, a Kafka cluster, a PostgreSQL cluster, a +supported Object Storage system, and a multi-master Carbonio Directory +Server. A step-by-step approach to setting up the Nodes, configuring +centralised storage, and deploying |ur|, will guide you in the +procedure. .. _rur-procedure: @@ -44,8 +44,8 @@ procedure and use the |product| infrastructure. In more details: #. :ref:`rur-conf` shows how to install the |ur| Components and configure them -#. :ref:`rur-storage` guides you in the creation of a centralised MinIO - or S3 bucket +#. :ref:`rur-storage` guides you in the creation of a centralised + MinIO or S3 bucket #. :ref:`rur-checks-scenario` contains a number of commands to check the status of |ur| and related services. @@ -76,12 +76,12 @@ centralised S3 storage. Each service, except for the Cluster service, has a mirrored node, creating a reliable failover configuration. The **(Core) Cluster service** provides all the functionalities of a *Core Node* (Database, -Mesh Server, and Directory Service) plus the Kafka and Zookeeper -software, which provide high-reliability services used by |product|: -stream-processing and distributed synchronisation of configuration -information, respectively. The configuration of the Cluster service -includes three nodes to maintain quorum and prevent split-brain -scenarios, ensuring stability in the environment. +Mesh Server, and Directory Service) plus the Kafka software, which +provide high-reliability services used by |product|: stream-processing +and distributed synchronisation of configuration information, +respectively. The configuration of the Cluster service includes three +nodes to maintain quorum and prevent split-brain scenarios, ensuring +stability in the environment. .. _rur-req: @@ -100,7 +100,7 @@ Requirements - A Postgres cluster setup -- An object storage like MinIO or S3 +- A supported Object Storage - An additional carbonio-directory-server Node configured in *MultiMaster* mode (**mmr**) @@ -144,7 +144,7 @@ recommended specifications: users", "Both Nodes provide redundancy of chat services" .. [1] Core Cluster Services are Postgres, Service Mesh Server, - Directory Service, Kafka, and Zookeeper + Directory Service, and Kafka The following software installed on a |product| infrastructure do not support redundancy, therefore only a single instance of them can be @@ -191,7 +191,6 @@ respectively. These will be used in the remainder of this section. equivalent alternatives are given. You can always install them or ever use other commands that you feel more confident with. - .. card:: Each Node must have a FQDN You need to put the FQDN and IP address of each Node in the diff --git a/source/carbonio/playbook/carbonio-inventory-rur-complete b/source/carbonio/playbook/carbonio-inventory-rur-complete index 303f48ea..7b52e971 100644 --- a/source/carbonio/playbook/carbonio-inventory-rur-complete +++ b/source/carbonio/playbook/carbonio-inventory-rur-complete @@ -3,10 +3,9 @@ srv1.example.com broker_id=1 srv2.example.com broker_id=2 srv3.example.com broker_id=3 +### Keep this section empty for backward compatibility [zookeeper_servers] -srv1.example.com zookeeper_id=1 -srv2.example.com zookeeper_id=2 -srv3.example.com zookeeper_id=3 + [postgresServers] srv1.example.com postgres_version=16 patroni_role=primary From 67dd5dc7605d7460b6741a4f8724928a0b564a28 Mon Sep 17 00:00:00 2001 From: Stefano David Date: Wed, 10 Sep 2025 14:35:39 +0200 Subject: [PATCH 03/14] [ZTD-1371] remove Zookeeper from Scenario's checks --- .../redundantwithusermailreplica/checks-status.rst | 6 ------ 1 file changed, 6 deletions(-) diff --git a/source/carbonio/install/scenarios/redundantwithusermailreplica/checks-status.rst b/source/carbonio/install/scenarios/redundantwithusermailreplica/checks-status.rst index ae7d3910..f3a0ba4a 100644 --- a/source/carbonio/install/scenarios/redundantwithusermailreplica/checks-status.rst +++ b/source/carbonio/install/scenarios/redundantwithusermailreplica/checks-status.rst @@ -18,12 +18,6 @@ These are the commands to be issued as the |ru|. # ssh root@mob-ha-svcs1.demo.zextras.io -L8550:127.0.0.1:8500 -#. Check zookeeper service status - - .. code:: console - - # systemctl status carbonio-zookeeper.service - #. Check Kafka services status .. code:: console From 8dc11c5a2103d950118b781bc1f48096f511ba25 Mon Sep 17 00:00:00 2001 From: Stefano David Date: Wed, 10 Sep 2025 14:36:00 +0200 Subject: [PATCH 04/14] [ZTD-1371] completely remove Zookeeper --- source/carbonio/architecture/components.rst | 5 +- .../architecture/components/component-es.rst | 158 ++---------------- source/carbonio/monitor/ext_mon.rst | 8 +- 3 files changed, 13 insertions(+), 158 deletions(-) diff --git a/source/carbonio/architecture/components.rst b/source/carbonio/architecture/components.rst index a9cd9bab..70140af6 100644 --- a/source/carbonio/architecture/components.rst +++ b/source/carbonio/architecture/components.rst @@ -38,8 +38,8 @@ This is the list of Components that make up a |product| installation. When installing the Components, be careful that: -* Postgres, Grafana, Zookeper, and Kafka are third-party software that - are installed from their respective official repositories +* Postgres, Grafana, and Kafka are third-party software that are + installed from their respective official repositories * On each Node, you need to install package ``service-discover-agent``, except on the Node on which @@ -211,7 +211,6 @@ When installing the Components, be careful that: Packages: - * ZooKeeper * Apache Kafka .. grid-item-card:: Directory Replica diff --git a/source/carbonio/architecture/components/component-es.rst b/source/carbonio/architecture/components/component-es.rst index ed32f3a0..ecc087c5 100644 --- a/source/carbonio/architecture/components/component-es.rst +++ b/source/carbonio/architecture/components/component-es.rst @@ -5,156 +5,18 @@ Event Streaming This Component is required to enable the |carbonio| :ref:`activereplica` feature, the foundation of High Availability on -|product|, and is based on Apache's *Kafka* and *ZooKeeper*, which -must be installed together on the same Node. For better performances, -it is strongly suggested to install both the services on a dedicated -Node, otherwise you can opt to directly access a Kafka + ZooKeeper -service provided as a Saas solution. +|product|, and is based on Apache's *Kafka*, which must be installed +together on the same Node. For better performances, it is strongly +suggested to install both the services on a dedicated Node, otherwise +you can opt to directly access a Kafka service provided as +a Saas solution. In the remainder, you find the installation and configuration instructions for both software on a node dedicated in the same infrastructure that hosts the other |product| Nodes. It is possible to install multiple Event Streaming Components in a -|product| infrastructure: in this case, you need to make sure that the -ZooKeeper's configuration is replicated on every Event Streaming Node. - -Installation of Apache ZooKeeper --------------------------------- - -Instructions are currently provided for **Ubuntu**; installation on -*RHEL* should be almost the same, but official directions will follow -soon. - -Requirements and Preliminary Tasks -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -All the installation tasks are done via CLI, so you need some -acquaintance with it. - -We also assume you are using ZooKeeper version **3.8.3**, you can -however use other **3.8.x** versions: check their availability on the -`Apache ZooKeeper `_ -official page, and remember to replace the version in the directions -below. - -Moreover, to setup ZooKeeper, you need: - -* a dedicated user, ``carbonio-queue``, shared with *Kafka* - - .. code:: console - - # adduser --system --group --home '/var/lib/queue/' 'carbonio-queue' - -* a ZooKeeper data directory: :file:`/var/lib/queue/zookeeper/` - - .. code:: console - - # mkdir /var/lib/queue/zookeeper/ - - -Installation -~~~~~~~~~~~~ - -.. code:: console - - # apt update -y - # apt install -y openjdk-17-jre-headless - # wget https://dlcdn.apache.org/zookeeper/zookeeper-3.8.3/apache-zookeeper-3.8.3-bin.tar.gz - # tar -xpvzf apache-zookeeper-3.8.3-bin.tar.gz -C /opt/ - # mv /opt/apache-zookeeper-3.8.3-bin /opt/zookeeper - # rm -f apache-zookeeper.tar.gz - # chown carbonio-queue:root -R /opt/zookeeper/ - # chown carbonio-queue: -R /var/lib/queue/ - -Configuration -~~~~~~~~~~~~~ - -Copy the sample configuration into :file:`/opt/zookeeper/conf/zoo.cfg` and -update the ``dataDir``: - -.. code:: console - - # cp /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg - # sed -i -e 's@dataDir=.*@dataDir=/var/lib/queue/zookeeper/@g' /opt/zookeeper/conf/zoo.cfg - -.. hint:: If you do not feel comfortable with the :command:`sed` - command, you can edit the file manually: find the line starting - with ``dataDir=`` and replace any path after the **=** with - ``/var/lib/queue/zookeeper``. - -Define a ZooKeeper ID -~~~~~~~~~~~~~~~~~~~~~ - -Each Node in a |product| infrastructure **must have** a unique -ZooKeeper ID, which is required for its correct operating. - -Define a value for the Node (we use *10*) on which ZooKeper is -installed and add it to the file - -.. code:: console - - # ZOOKEEPER_ID=10 - # echo $ZOOKEEPER_ID > /var/lib/queue/zookeeper/myid - -If you install a second and even a third Event Streaming Component, you -have then to append at the end of the configuration file -:file:`/opt/zookeeper/conf/zoo.cfg` one entry for every zookeeper -node, using the format ``server.[ZOOKEEPER_ID]=[NODE_IP]:2888:3888`` - -For example, suppose you want to install a three-nodes Event -Streaming. You have already you assigned ``ZOOKEEPER_ID=1O`` to node -IP ``10.0.10.11`` and you add - -* ID ``ZOOKEEPER_ID=2O`` to node IP ``10.0.10.12`` -* ID ``ZOOKEEPER_ID=3O`` to node IP ``10.0.10.13`` - -You need to make sure that three entries are added to file -:file:`/opt/zookeeper/conf/zoo.cfg` **on every Node**: - -.. code:: console - - # echo "server.10=10.0.10.11:2888:3888" >> /opt/zookeeper/conf/zoo.cfg - # echo "server.20=10.0.10.12:2888:3888" >> /opt/zookeeper/conf/zoo.cfg - # echo "server.30=10.0.10.13:2888:3888" >> /opt/zookeeper/conf/zoo.cfg - -Create System Unit file -~~~~~~~~~~~~~~~~~~~~~~~ - -Copy this snippet to define a minimal zookeeper configuration into -file :file:`/lib/systemd/system/carbonio-zookeeper.service`. - -.. code:: ini - - [Unit] - Description=ZooKeeper Service - Documentation=http://zookeeper.apache.org - Requires=network.target - After=network.target - - [Service] - Type=forking - Restart=on-failure - RestartSec=15 - LimitNOFILE=65536 - User=carbonio-queue - Group=carbonio-queue - ExecStart=/opt/zookeeper/bin/zkServer.sh start /opt/zookeeper/conf/zoo.cfg - ExecStop=/opt/zookeeper/bin/zkServer.sh stop /opt/zookeeper/conf/zoo.cfg - ExecReload=/opt/zookeeper/bin/zkServer.sh restart /opt/zookeeper/conf/zoo.cfg - WorkingDirectory=/var/lib/queue/zookeeper/ - - [Install] - WantedBy=default.target - -Enable ZooKeeper service -~~~~~~~~~~~~~~~~~~~~~~~~ - -.. code:: console - - # systemctl daemon-reload - # systemctl enable carbonio-zookeeper - # systemctl start carbonio-zookeeper.service +|product| infrastructure. Installation of Apache Kafka ---------------------------- @@ -167,9 +29,9 @@ use other **3.1.x** versions: check their availability on the `Apache Kafka `_ official page, and remember to replace the version in the directions below. -Moreover, to setup ZooKeeper, you need: +Moreover, to setup Apache Kafka, you need: -* a dedicated user, ``carbonio-queue``, which is the same used by ZooKeeper +* a dedicated user, ``carbonio-queue`` * Kafka data directory: :file:`/var/lib/queue/kafka/logs/` @@ -227,8 +89,8 @@ infrastructure, ``log.dirs``, and ``topic`` in files Create System Unit File ~~~~~~~~~~~~~~~~~~~~~~~ -Copy this snippet to define a minimal zookeeper configuration into -file :file:`/lib/systemd/system/carbonio-kafka.service`. +Copy this snippet to define a minimal configuration into file +:file:`/lib/systemd/system/carbonio-kafka.service`. .. code:: ini diff --git a/source/carbonio/monitor/ext_mon.rst b/source/carbonio/monitor/ext_mon.rst index b0c507b4..5600dbae 100644 --- a/source/carbonio/monitor/ext_mon.rst +++ b/source/carbonio/monitor/ext_mon.rst @@ -11,7 +11,7 @@ quickly detect issues, and optimize system performance. The document is structured by role, detailing the required endpoints for each service including MTA, Proxy, Mailstore & Provisioning, Mesh & Directory, Event Streaming, and general system health checks. It also covers critical services such as SMTP, IMAP, HTTP, databases (MariaDB, PostgreSQL), and high-availability -components like Kafka and Zookeeper. +components like Kafka. Additionally, fundamental system health indicators, such as disk usage, CPU load, and network availability, are included to provide a comprehensive monitoring strategy. @@ -115,12 +115,6 @@ to provide a comprehensive monitoring strategy. Ports ``9308``, ``7072`` - **Zookeeper** - - To monitor the status of the Zookeeper service we are going to connect - to the following port from the external monitoring system: - - Port ``2181`` **Patroni** From 42985d14a07ea98f49a3ed165ec5cb07c788b7e7 Mon Sep 17 00:00:00 2001 From: Stefano David Date: Wed, 10 Sep 2025 14:47:48 +0200 Subject: [PATCH 05/14] [ZTD-1371] remove troubleshooting of DNS resolution --- .../scenario-redundantwithusermailreplica.rst | 23 +------------------ 1 file changed, 1 insertion(+), 22 deletions(-) diff --git a/source/carbonio/install/scenarios/scenario-redundantwithusermailreplica.rst b/source/carbonio/install/scenarios/scenario-redundantwithusermailreplica.rst index 48c9c2e9..506952e7 100644 --- a/source/carbonio/install/scenarios/scenario-redundantwithusermailreplica.rst +++ b/source/carbonio/install/scenarios/scenario-redundantwithusermailreplica.rst @@ -210,28 +210,7 @@ respectively. These will be used in the remainder of this section. .. card:: DNS resolution of Nodes - All Nodes must be able to communicate with one another. In case - some Node can not reach one of the other ones, here are a few - commands that help in troubleshooting the network and find the - problem. - - - Supposing ``core.example.com`` can not reach ``video.example.com``, - you can use on ``core.example.com`` any of the following commands: - - * :command:`ping 10.176.134.103` to check whether the other Node - answers to connections. - - * Similar to the previous command, either of :command:`tracepath - 10.176.134.103`, :command:`mtr 10.176.134.103` commands will show - if packets can reach the other Node - - * To verify the DNS resolution works, execute either - :command:`dig +short video.example.com` or :command:`nslookup - video.example.com`. An empty answer (in the case of - :command:`dig`) or a string similar to ``** server can't find - video.example.com``) will imply there is a DNS resolution - problem. + All Nodes must be able to communicate with one another. .. card:: Check system time and timezone From 9bd438ecf18b846f8ce263d25a0f4fd131916e71 Mon Sep 17 00:00:00 2001 From: Stefano David Date: Wed, 10 Sep 2025 17:53:50 +0200 Subject: [PATCH 06/14] [ZTD-1371] rename section name --- .../redundantwithusermailreplica/standard-installation.rst | 4 ++-- .../{ur-configuration.rst => ur-installation.rst} | 6 +++--- .../scenarios/scenario-redundantwithusermailreplica.rst | 6 +++--- 3 files changed, 8 insertions(+), 8 deletions(-) rename source/carbonio/install/scenarios/redundantwithusermailreplica/{ur-configuration.rst => ur-installation.rst} (98%) diff --git a/source/carbonio/install/scenarios/redundantwithusermailreplica/standard-installation.rst b/source/carbonio/install/scenarios/redundantwithusermailreplica/standard-installation.rst index 1f7b8aaa..64bdab9b 100644 --- a/source/carbonio/install/scenarios/redundantwithusermailreplica/standard-installation.rst +++ b/source/carbonio/install/scenarios/redundantwithusermailreplica/standard-installation.rst @@ -1,4 +1,4 @@ -.. _rur-install: +.. _std-install: =========================================== |carbonio| Preliminaries and Installation @@ -9,7 +9,7 @@ Redundant**. Therefore, it is essential to have a working installation of that Scenario before starting to deploy the |ur| setup: if you do not have it yet, please refer to the installation procedure of the :ref:`scenario-redundant`, then you can proceed to the next -section, :ref:`rur-conf`. +section, :ref:`rur-inst`. Differences with Scenario Redundant =================================== diff --git a/source/carbonio/install/scenarios/redundantwithusermailreplica/ur-configuration.rst b/source/carbonio/install/scenarios/redundantwithusermailreplica/ur-installation.rst similarity index 98% rename from source/carbonio/install/scenarios/redundantwithusermailreplica/ur-configuration.rst rename to source/carbonio/install/scenarios/redundantwithusermailreplica/ur-installation.rst index d494b9ef..6db27832 100644 --- a/source/carbonio/install/scenarios/redundantwithusermailreplica/ur-configuration.rst +++ b/source/carbonio/install/scenarios/redundantwithusermailreplica/ur-installation.rst @@ -1,11 +1,11 @@ -.. _rur-conf: +.. _rur-inst: -Carbonio |ur| Configuration +|ur| Installation =========================== The main part of the installation is the set up of the |ur| infrastructure, which will be built on the scenario described in the -:ref:`previous section `. +:ref:`previous section `. In order to complete the |ur| configuration, you need access to the Ansible's Control Node and of the following items: diff --git a/source/carbonio/install/scenarios/scenario-redundantwithusermailreplica.rst b/source/carbonio/install/scenarios/scenario-redundantwithusermailreplica.rst index 506952e7..0f100a3f 100644 --- a/source/carbonio/install/scenarios/scenario-redundantwithusermailreplica.rst +++ b/source/carbonio/install/scenarios/scenario-redundantwithusermailreplica.rst @@ -38,10 +38,10 @@ The rest of the procedure consists of a dedicated, self-contained guide to one of the parts required to successfully complete the procedure and use the |product| infrastructure. In more details: -#. :ref:`rur-install` describes how to install the scenario proposed in +#. :ref:`std-install` describes how to install the scenario proposed in this page -#. :ref:`rur-conf` shows how to install the |ur| Components and +#. :ref:`rur-inst` shows how to install the |ur| Components and configure them #. :ref:`rur-storage` guides you in the creation of a centralised @@ -280,6 +280,6 @@ respectively. These will be used in the remainder of this section. :glob: redundantwithusermailreplica/standard-installation.rst - redundantwithusermailreplica/ur-configuration.rst + redundantwithusermailreplica/ur-installation.rst redundantwithusermailreplica/object-storage.rst redundantwithusermailreplica/checks-status.rst From 4a807f63b8d2906df39a61e17f9fef8282283f85 Mon Sep 17 00:00:00 2001 From: Stefano David Date: Mon, 15 Sep 2025 09:19:14 +0200 Subject: [PATCH 07/14] [ZTD-1371] remove HAProxy installation question --- .../ur-installation.rst | 20 ++++--------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/source/carbonio/install/scenarios/redundantwithusermailreplica/ur-installation.rst b/source/carbonio/install/scenarios/redundantwithusermailreplica/ur-installation.rst index 6db27832..12738c18 100644 --- a/source/carbonio/install/scenarios/redundantwithusermailreplica/ur-installation.rst +++ b/source/carbonio/install/scenarios/redundantwithusermailreplica/ur-installation.rst @@ -155,28 +155,16 @@ PstgreSQL replica # ansible-playbook -i inventory zxbot.carbonio_patroni.carbonio_replica_postgres_install -.. we need to wait for changes in the ansible playbook. While the - question has been rephrased and greenlit, the text of the answers - has not yet been decided. - -Before starting the HAProxy installation, note that during the -installation you will be prompted with the following question:: - - Do you want to enable MMR LDAP replica? (yes/no) - - - If you answer `yes`, HAProxy will be installed on all servers except the LDAP servers. - - If you answer `no`, HAProxy will only be installed on the `dbconnectors`. - -To install HAProxy, execute command +Then install HAProxy by executeing the command .. code:: console # ansible-playbook -i inventory zxbot.carbonio_patroni.carbonio_patroni_install This task also move DB Connectors from the PostgreSQL Node to db -connector Nodes, as defined on the inventory file. This setup allows -Db Connectors to connect to an available PostgreSQL node managed by -Patroni. +connector Nodes, if needed, as defined on the inventory file. This +setup allows Db Connectors to connect to an available PostgreSQL Node +managed by Patroni. Install Multi Master LDAP ------------------------- From e360999633169dd0e17097fc1cd9d7241bfcf8f1 Mon Sep 17 00:00:00 2001 From: Stefano David Date: Mon, 15 Sep 2025 09:42:49 +0200 Subject: [PATCH 08/14] [ZTD-1371] rename file --- source/carbonio/admincli/toc.rst | 2 +- .../admincli/{activereplica.rst => usermailreplica.rst} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename source/carbonio/admincli/{activereplica.rst => usermailreplica.rst} (100%) diff --git a/source/carbonio/admincli/toc.rst b/source/carbonio/admincli/toc.rst index d247aaf6..44e60062 100644 --- a/source/carbonio/admincli/toc.rst +++ b/source/carbonio/admincli/toc.rst @@ -25,7 +25,7 @@ mandatory. carboniobackup mobile storages - activereplica + usermailreplica videoserver custom mesh diff --git a/source/carbonio/admincli/activereplica.rst b/source/carbonio/admincli/usermailreplica.rst similarity index 100% rename from source/carbonio/admincli/activereplica.rst rename to source/carbonio/admincli/usermailreplica.rst From bb9a3c81b073c513d16fe0d54336bbc9afe9eab9 Mon Sep 17 00:00:00 2001 From: Stefano David Date: Mon, 15 Sep 2025 09:51:47 +0200 Subject: [PATCH 09/14] [ZTD-1371] rename and add labels --- source/carbonio/admincli/usermailreplica.rst | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/source/carbonio/admincli/usermailreplica.rst b/source/carbonio/admincli/usermailreplica.rst index f640bfec..53ab17a1 100644 --- a/source/carbonio/admincli/usermailreplica.rst +++ b/source/carbonio/admincli/usermailreplica.rst @@ -1,3 +1,5 @@ +.. _ureplica: + .. _activereplica: ================= @@ -54,6 +56,8 @@ There are **two requirements** to satisfy to be able to install the #. All the primary volumes of the mailbox **must be configured** as :ref:`Centralized Storage `. +.. _enable-ur: + Enabling |ur| ============= @@ -85,12 +89,14 @@ To verify that the settings have been applied and the service operates correctly, you can use the commands presented in section :ref:`ar-ts` below. +.. _use-ur: + |ur| Usage ========== A number of CLI commands can be used to carry out routine operations -with the |ur|: :ref:`initialise `, :ref:`monitor -`, :ref:`promote `, and :ref:`delete ` a +with the |ur|: :ref:`initialise `, :ref:`monitor +`, :ref:`promote `, and :ref:`delete ` a |ur|. Limitations of the Commands @@ -104,7 +110,7 @@ The command presented in this section **do not support**: * distribution lists -.. _ar-init: +.. _ur-init: |ur| Initialisation ---------------------- @@ -142,7 +148,7 @@ Example of valid commands are: The Global Administrator will receive a notification as soon as the |ur| initialisation is completed. -.. _ar-monit: +.. _ur-monit: |ur| Monitoring ------------------ @@ -197,7 +203,7 @@ Then, for each replica: priority prority of the replica canConnectToKafka status of connection to kafka -.. _ar-promo: +.. _ur-promo: |ur| Promotion -------------- @@ -243,7 +249,7 @@ Example of valid commands are: Global Admin will receive a notification as soon as the |ur| promotion is completed. -.. _ar-del: +.. _ur-del: |ur| Deletion ------------- From 815fe2498a9ccbbd670c7a93a4758febfaf26004 Mon Sep 17 00:00:00 2001 From: Stefano David Date: Mon, 15 Sep 2025 09:52:13 +0200 Subject: [PATCH 10/14] [ZTD-1371] add link to User Mail Replica CLI commands --- .../redundantwithusermailreplica/ur-installation.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source/carbonio/install/scenarios/redundantwithusermailreplica/ur-installation.rst b/source/carbonio/install/scenarios/redundantwithusermailreplica/ur-installation.rst index 12738c18..c9a9d171 100644 --- a/source/carbonio/install/scenarios/redundantwithusermailreplica/ur-installation.rst +++ b/source/carbonio/install/scenarios/redundantwithusermailreplica/ur-installation.rst @@ -175,3 +175,9 @@ collection: .. code:: console ansible-playbook -i inventory zxbot.carbonio_ldap.carbonio_install_mmr + +|ur| management +--------------- + +CLI commands to manage the |ur|, to promote and replicate accounts on +other Mailstores, can be found in the dedicated section :ref:`use-ur`. From b5130e3be56e83143519fb5e2c678e526a8f119c Mon Sep 17 00:00:00 2001 From: Stefano David Date: Mon, 15 Sep 2025 10:03:23 +0200 Subject: [PATCH 11/14] [ZTD-1371] add space requirement for DB and VS --- .../scenario-redundantwithusermailreplica.rst | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/source/carbonio/install/scenarios/scenario-redundantwithusermailreplica.rst b/source/carbonio/install/scenarios/scenario-redundantwithusermailreplica.rst index 0f100a3f..3c6e5d89 100644 --- a/source/carbonio/install/scenarios/scenario-redundantwithusermailreplica.rst +++ b/source/carbonio/install/scenarios/scenario-redundantwithusermailreplica.rst @@ -31,6 +31,7 @@ Procedure Overview The procedure to install this scenario is long and complex and it is divided into various parts for simplicity and to allow to follow it easily. + In the remainder of this page you find a scenario overview, requirements, and pre-installation tasks. @@ -238,10 +239,11 @@ respectively. These will be used in the remainder of this section. * The Nodes hosting the *Mailstore & Provisioning* Component must have the Primary storage mounted on :file:`/opt/` - .. - * Cluster service (see :ref:`rur-scenario`) must have the root - partition :file:`/` of the size specified in the sizing document - shared with partner or customer:: + * The Nodes hosting the Database and Video Server Components must + have enough disk space on the :file:`/` or :file:`/opt` + directories. This is especially required especially when there + are many mobile devices that use |product|\' s ActiveSync feature + (Database) and video meetings are often recorded (Video Server). * Command :command:`df -h` will output the size, usage, and other information about each of the mounted partitions on the system. From 54c54441f72b1dfa7fec73442ba4a2664fcb8613 Mon Sep 17 00:00:00 2001 From: Stefano David Date: Mon, 15 Sep 2025 10:37:51 +0200 Subject: [PATCH 12/14] [ZTD-1371] amend patroni installation --- .../redundantwithusermailreplica/ur-installation.rst | 6 ------ 1 file changed, 6 deletions(-) diff --git a/source/carbonio/install/scenarios/redundantwithusermailreplica/ur-installation.rst b/source/carbonio/install/scenarios/redundantwithusermailreplica/ur-installation.rst index c9a9d171..056733ca 100644 --- a/source/carbonio/install/scenarios/redundantwithusermailreplica/ur-installation.rst +++ b/source/carbonio/install/scenarios/redundantwithusermailreplica/ur-installation.rst @@ -155,12 +155,6 @@ PstgreSQL replica # ansible-playbook -i inventory zxbot.carbonio_patroni.carbonio_replica_postgres_install -Then install HAProxy by executeing the command - -.. code:: console - - # ansible-playbook -i inventory zxbot.carbonio_patroni.carbonio_patroni_install - This task also move DB Connectors from the PostgreSQL Node to db connector Nodes, if needed, as defined on the inventory file. This setup allows Db Connectors to connect to an available PostgreSQL Node From 9d2cfeea45f75ae3493195d698d79a000553f65e Mon Sep 17 00:00:00 2001 From: Stefano David Date: Mon, 15 Sep 2025 12:12:20 +0200 Subject: [PATCH 13/14] [ZTD-1371] replace section with link to bucket creation --- .../object-storage.rst | 84 ------------------- .../scenario-redundantwithusermailreplica.rst | 11 +-- 2 files changed, 6 insertions(+), 89 deletions(-) delete mode 100644 source/carbonio/install/scenarios/redundantwithusermailreplica/object-storage.rst diff --git a/source/carbonio/install/scenarios/redundantwithusermailreplica/object-storage.rst b/source/carbonio/install/scenarios/redundantwithusermailreplica/object-storage.rst deleted file mode 100644 index 80bdee33..00000000 --- a/source/carbonio/install/scenarios/redundantwithusermailreplica/object-storage.rst +++ /dev/null @@ -1,84 +0,0 @@ -.. _rur-storage: - -Object Storage Configuration -============================ - - -A centralised volume is a mandatory requirement to configure a |rur| -scenario. This section explains the commands required to configure a -MinIO or S3 bucket in Carbonio and set it up as a centralised -volume. Note that you should already have a MinIO or S3 service at -your disposal, either within your infrastructure or purchased from a -third-party, before configuring the bucket: the commands here will -only connect to the bucket and configure it for the use with -|product|. - -All commands in this section must be executed as the |zu|. Remember to -replace all the example values with values suitable with your -infrastructure. - -Minio ------ - -If you use MinIO, the command below will create a bucket. - -.. hint:: Do not forget to create a bucket in MinIO before executing - the command. The ``remoteBucketName`` is the name given in MinIO. - -.. code:: console - - zextras$ carbonio core doCreateBucket Type remoteBucketName username\accesskey password\secretKey url localBucketName prefix somePrefix - -For example: - -.. code:: console - - zextras$ carbonio core doCreateBucket MINIO carbonio-ha admin MyBestPassword http://162.19.69.216:9000 ha-primary - -This command outputs a number of information about the bucket. Write -down the **Bucket ID**, because you will need it in the next command -(``ID_FROM_PREVIOUS_COMMAND``), which creates a centralised primary -volume. - -.. code:: console - - zextras$ carbonio powerstore doCreateVolume MINIO centralized-ha primary ID_FROM_PREVIOUS_COMMAND centralized true - -Finally, set the volume as current, running on every Node with the -*Mailstore & Provisioning* Component the command - -.. code:: console - - zextras$ carbonio powerstore doUpdateVolume MINIO centralized-ha current_volume true - -S3 ----- - -If you use an S3 Object Storage, this command create a bucket. - -.. code:: console - - zextras$ carbonio core doCreateBucket Type remoteBucketName accesskey secretKey region us-east-1 ha-primary - -For example: - -.. code:: console - - zextras$ carbonio core doCreateBucket S3 bucket_name carbonio-ha accesskey secretkey region us-east-1 ha-primary - -This command outputs a number of information about the bucket. Write -down the **Bucket ID**, because you will need it in the next command -(``ID_FROM_PREVIOUS_COMMAND``), which creates a centralised primary -volume. - -.. code:: console - - zextras$ carbonio powerstore doCreateVolume S3 centralized-ha primary ID_FROM_PREVIOUS_COMMAND centralized true - - -Finally, set the volume as current, running on every Node with the -*Mailstore & Provisioning* Component the command - -.. code:: console - - zextras$ carbonio powerstore doUpdateVolume S3 centralized-ha current_volume true diff --git a/source/carbonio/install/scenarios/scenario-redundantwithusermailreplica.rst b/source/carbonio/install/scenarios/scenario-redundantwithusermailreplica.rst index 3c6e5d89..70030a03 100644 --- a/source/carbonio/install/scenarios/scenario-redundantwithusermailreplica.rst +++ b/source/carbonio/install/scenarios/scenario-redundantwithusermailreplica.rst @@ -45,9 +45,6 @@ procedure and use the |product| infrastructure. In more details: #. :ref:`rur-inst` shows how to install the |ur| Components and configure them -#. :ref:`rur-storage` guides you in the creation of a centralised - MinIO or S3 bucket - #. :ref:`rur-checks-scenario` contains a number of commands to check the status of |ur| and related services. @@ -103,7 +100,12 @@ Requirements - A supported Object Storage -- An additional carbonio-directory-server Node configured in *MultiMaster* mode (**mmr**) +- An additional carbonio-directory-server Node configured in + *MultiMaster* mode (**mmr**) + +- A **centralised** Primary storage. Please refer to the following + sections to set it up, either :ref:`from the Admin Panel ` pr + :ref:`from the CLI `. .. _rur-Node-spec: @@ -283,5 +285,4 @@ respectively. These will be used in the remainder of this section. redundantwithusermailreplica/standard-installation.rst redundantwithusermailreplica/ur-installation.rst - redundantwithusermailreplica/object-storage.rst redundantwithusermailreplica/checks-status.rst From 0d0f444d7fca46240866c4b123a4fe684a3c3e52 Mon Sep 17 00:00:00 2001 From: Stefano David Date: Mon, 15 Sep 2025 12:12:47 +0200 Subject: [PATCH 14/14] [ZTD-1371] add command to check patroni service --- .../redundantwithusermailreplica/checks-status.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source/carbonio/install/scenarios/redundantwithusermailreplica/checks-status.rst b/source/carbonio/install/scenarios/redundantwithusermailreplica/checks-status.rst index f3a0ba4a..5c35470b 100644 --- a/source/carbonio/install/scenarios/redundantwithusermailreplica/checks-status.rst +++ b/source/carbonio/install/scenarios/redundantwithusermailreplica/checks-status.rst @@ -32,6 +32,12 @@ These are the commands to be issued as the |ru|. These are the commands to be issued as the |zu|. +#. Check patroni service, including finding the leader + + .. code:: console + + # sytemctl -u patroni -f + #. Get Global Broker info .. code:: console