Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

# Configure a RHEL host [ece-configure-hosts-rhel-centos]

The following instructions show you how to prepare your hosts on Red Hat Enterprise Linux 8 (RHEL 8), 9 (RHEL 9), and Rocky Linux 8 and 9.
Red Hat Enterprise Linux 8 and 9, along with Rocky Linux 8 and 9, run {{ece}} on Podman rather than Docker. Use these steps to install Podman with `dnf`; configure the Podman socket so the standard `docker` CLI works against it; and apply the SELinux, XFS, and kernel tuning that ECE expects on Red Hat-family hosts.

Check notice on line 15 in deploy-manage/deploy/cloud-enterprise/configure-host-rhel.md

View workflow job for this annotation

GitHub Actions / build / vale

Elastic.Semicolons: Use semicolons judiciously.

Check notice on line 15 in deploy-manage/deploy/cloud-enterprise/configure-host-rhel.md

View workflow job for this annotation

GitHub Actions / build / vale

Elastic.Semicolons: Use semicolons judiciously.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Red Hat Enterprise Linux 8 and 9, along with Rocky Linux 8 and 9, run {{ece}} on Podman rather than Docker. Use these steps to install Podman with `dnf`; configure the Podman socket so the standard `docker` CLI works against it; and apply the SELinux, XFS, and kernel tuning that ECE expects on Red Hat-family hosts.
Red Hat Enterprise Linux 8 and 9, along with Rocky Linux 8 and 9, run {{ece}} (ECE) on Podman rather than Docker. Use these steps to install Podman and configure Podman, and apply the SELinux, XFS, and kernel tuning that ECE expects on Red Hat-family hosts.

I'd omit the dnf and socket part. A bit too low level for the intro.


* [Prerequisites](#ece-prerequisites-rhel8)
* [Install Podman and configure the host](#ece-configure-hosts-rhel8-podman)
Expand Down
89 changes: 39 additions & 50 deletions deploy-manage/deploy/cloud-enterprise/configure-host-suse.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,95 +12,90 @@

# Configure a SUSE host [ece-configure-hosts-sles12]

The following instructions explain how to prepare your hosts on SUSE Linux Enterprise Server 12 SP5 (SLES 12) or 15 (SLES 15).
SUSE Linux Enterprise Server (SLES) hosts use `zypper` to install Docker and require XFS quotas to be set up manually, since SLES doesn't ship XFS as the default filesystem. The steps on this page target SLES 15.

Before installing, make sure to cross-check your SLES version and Docker version against the [Support matrix](https://www.elastic.co/support/matrix#elastic-cloud-enterprise). The commands shown on this page are examples; substitute the versions you've identified in the support matrix.

Check notice on line 17 in deploy-manage/deploy/cloud-enterprise/configure-host-suse.md

View workflow job for this annotation

GitHub Actions / build / vale

Elastic.Semicolons: Use semicolons judiciously.

::::{warning}
SLES 12 SP5 reached general support end of life on **October 31, 2024**. Use SLES 15 or later for new {{ece}} installations, and migrate existing SLES 12 SP5 hosts.
::::


* [Install Docker](#ece-install-docker-sles12)
* [Set up XFS quotas](#ece-xfs-setup-sles12)
* [Update the configurations settings](#ece-update-config-sles)
* [Configure the Docker daemon options](#ece-configure-docker-daemon-sles12)

If you want to install {{ece}} (ECE) on your own hosts, the steps for preparing your hosts can take a bit of time. There are two ways you can approach this:

* **Think like a minimalist**: [Install the correct version of Docker](#ece-install-docker-sles12) on hosts that meet the [prerequisites](prepare-environment.md) for ECE, then skip ahead and [install ECE](install.md#install-ece). Be aware that some checks during the installation can fail with this approach, which will mean doing further host preparation work before retrying the installation.
* **Cover your bases**: If you want to make absolutely sure that your installation of {{ece}} can succeed on hosts that meet the [prerequisites](prepare-environment.md), or if any of the checks during the installation failed previously, run through the full preparation steps in this section and then and [install ECE](install.md#install-ece). You’ll do a bit more work now, but life will be simpler later on.

Regardless of which approach you take, the steps in this section need to be performed on every host that you want to use with ECE.

## Install Docker on SLES [ece-install-docker-sles12]

::::{include} /deploy-manage/deploy/_snippets/ece-supported-combinations.md
::::


1. Remove Docker and previously installed podman packages (if previously installed).

1. Remove Docker and any previously installed podman packages.

```sh
sudo zypper remove -y docker docker-ce podman podman-remote
```

2. Update packages to the latest available versions
2. Update packages to the latest available versions.

```sh
sudo zypper refresh
sudo zypper update -y
```

3. Install Docker and other required packages:
3. Install Docker and other required packages on SLES 15. The following command is an example of installing Docker {{ece-docker-version}}. To install a different Docker version, replace {{ece-docker-version}} with your preferred version from the [Support matrix](https://www.elastic.co/support/matrix#elastic-cloud-enterprise).

* For SLES 12:
```sh subs=true
sudo zypper install -y curl device-mapper lvm2 net-tools docker={{ece-docker-version}}.*
```

::::{tip}
If `zypper` reports that the requested Docker version isn't available, make sure the SUSE **Containers Module** is enabled, or refer to [SUSE's documentation](https://documentation.suse.com/sles/15-SP6/html/SLES-all/cha-docker-installation.html) for adding the upstream Docker repository.
::::

::::{note}
Installation on SLES 12 SP5 is no longer covered here because SLES 12 SP5 is past general support end of life. If you're maintaining an existing SLES 12 SP5 deployment, install the last Docker version that SUSE shipped for SLES 12 SP5 and plan a migration to SLES 15.
::::
Comment thread
marciw marked this conversation as resolved.

4. Set up the OS groups and add your user.

1. Create the `elastic` and `docker` groups if they don't already exist:

```sh
sudo zypper install -y docker=24.0.7_ce-98.109.3
sudo groupadd elastic
sudo groupadd docker
```

* For SLES 15:
2. Add the user to both groups:

```sh
sudo zypper install -y curl device-mapper lvm2 net-tools docker=24.0.7_ce-150000.198.2 net-tools
sudo usermod -aG elastic,docker $USER
```

4. Disable nscd, as it interferes with Elastic’s services:
5. Disable `nscd`, which can interfere with Elastic services:

Check notice on line 78 in deploy-manage/deploy/cloud-enterprise/configure-host-suse.md

View workflow job for this annotation

GitHub Actions / build / vale

Elastic.WordChoice: Consider using 'deactivate, deselect, hide, turn off' instead of 'Disable', unless the term is in the UI.

```sh
sudo systemctl stop nscd
sudo systemctl disable nscd
```



## Set up OS groups and user [ece_set_up_os_groups_and_user]

1. If they don’t already exist, create the following OS groups:

```sh
sudo groupadd elastic
sudo groupadd docker
```

2. Add the user to these groups:

```sh
sudo usermod -aG elastic,docker $USER
```



## Set up XFS quotas [ece-xfs-setup-sles12]

XFS is required to support disk space quotas for {{es}} data directories. Some Linux distributions such as RHEL and Rocky Linux already provide XFS as the default file system. On SLES 12 and 15, you need to set up an XFS file system and have quotas enabled.
XFS is required to support disk space quotas for {{es}} data directories. Some Linux distributions such as RHEL and Rocky Linux already provide XFS as the default file system. On SLES 15, you need to set up an XFS file system and have quotas enabled.

Disk space quotas set a limit on the amount of disk space an {{es}} cluster node can use. Currently, quotas are calculated by a static ratio of 1:32, which means that for every 1 GB of RAM a cluster is given, a cluster node is allowed to consume 32 GB of disk space.

::::{note}
Using LVM, `mdadm`, or a combination of the two for block device management is possible, but the configuration is not covered here, nor is it provided as part of supporting ECE.
::::


::::{important}
You must use XFS and have quotas enabled on all allocators, otherwise disk usage wont display correctly.
You must use XFS and have quotas enabled on all allocators; otherwise, disk usage won't display correctly.

Check notice on line 96 in deploy-manage/deploy/cloud-enterprise/configure-host-suse.md

View workflow job for this annotation

GitHub Actions / build / vale

Elastic.Semicolons: Use semicolons judiciously.
::::


**Example:** Set up XFS on a single, pre-partitioned block device named `/dev/xvdg1`. Replace `/dev/xvdg1` in the following example with the corresponding device on your host.

1. Format the partition:
Expand All @@ -127,8 +122,6 @@
sudo mount -a
```



## Update the configurations settings [ece-update-config-sles]

1. Stop the Docker service:
Expand All @@ -151,7 +144,7 @@
sudo update-bootloader
```

3. Configure kernel parameters
3. Configure kernel parameters.

```sh
cat <<EOF | sudo tee -a /etc/sysctl.conf
Expand All @@ -168,15 +161,13 @@
```

::::{important}
The `net.ipv4.tcp_retries2` setting applies to all TCP connections and affects the reliability of communication with systems other than {{es}} clusters too. If your clusters communicate with external systems over a low quality network then you may need to select a higher value for `net.ipv4.tcp_retries2`.

Check notice on line 164 in deploy-manage/deploy/cloud-enterprise/configure-host-suse.md

View workflow job for this annotation

GitHub Actions / build / vale

Elastic.WordChoice: Consider using 'can, might' instead of 'may', unless the term is in the UI.
::::


1. Apply the settings:

```sh
sudo sysctl -p
sudo service network restart
```

4. Adjust the system limits.
Expand Down Expand Up @@ -204,7 +195,7 @@
root soft memlock unlimited
```

5. NOTE: This step is optional if the Docker registry doesnt require authentication.
5. NOTE: This step is optional if the Docker registry doesn't require authentication.

Authenticate the `elastic` user to pull images from the Docker registry you use, by creating the file `/home/elastic/.docker/config.json`. This file needs to be owned by the `elastic` user. If you are using a user name other than `elastic`, adjust the path accordingly.

Expand Down Expand Up @@ -246,8 +237,6 @@
sudo install -o $USER -g elastic -d -m 700 /mnt/data/docker
```



## Configure the Docker daemon [ece-configure-docker-daemon-sles12]

1. Edit `/etc/docker/daemon.json`, and make sure that the following configuration values are present:<br>
Expand All @@ -266,7 +255,7 @@
}
```

2. The user installing ECE must have a User ID (UID) and Group ID (GID) of 1000 or higher. Make sure that the GID matches the ID of the `elastic`` group created earlier (likely to be 1000). You can set this using the following command:
2. The user installing ECE must have a User ID (UID) and Group ID (GID) of 1000 or higher. Make sure that the GID matches the ID of the `elastic` group created earlier (likely to be 1000). You can set this using the following command:

Check notice on line 258 in deploy-manage/deploy/cloud-enterprise/configure-host-suse.md

View workflow job for this annotation

GitHub Actions / build / vale

Elastic.Versions: Use 'or later' instead of 'or higher' when referring to versions.

```sh
sudo usermod -g <elastic_group_gid> $USER
Expand Down Expand Up @@ -311,15 +300,15 @@
According to [{{es}} networking settings](elasticsearch://reference/elasticsearch/configuration-reference/networking-settings.md), {{es}} overrides TCP keepalive settings at the socket level for its own connections:
* If system-level values exceed 300 seconds, {{es}} automatically lowers them to 300 seconds.
* Values below 300 seconds are used as-is.

For non-{{es}} connections such as the proxy layer, consider reducing the following TCP keepalive parameters to detect stale network sessions and prevent firewalls from dropping silent connections:
* `net.ipv4.tcp_keepalive_time`
* `net.ipv4.tcp_keepalive_intvl`
* `net.ipv4.tcp_keepalive_probes`
:::


1. Ensure settings in /etc/sysctl.d/*.conf are applied on boot
1. Ensure settings in /etc/sysctl.d/*.conf are applied on boot:

Check notice on line 311 in deploy-manage/deploy/cloud-enterprise/configure-host-suse.md

View workflow job for this annotation

GitHub Actions / build / vale

Elastic.WordChoice: Consider using 'start, run' instead of 'boot', unless the term is in the UI.

```sh
SCRIPT_LOCATION="/var/lib/cloud/scripts/per-boot/00-load-sysctl-settings"
Expand Down
10 changes: 5 additions & 5 deletions deploy-manage/deploy/cloud-enterprise/configure-host-ubuntu.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ products:

# Configure an Ubuntu host [ece-configure-hosts-ubuntu]

The following instructions show you how to prepare your hosts on Ubuntu.
Use the steps on this page to prepare an Ubuntu server for {{ece}} (ECE): install Docker from the upstream Docker `apt` repository, set up an XFS volume for cluster data, tune kernel and systemd parameters for production workloads, and pin the Docker version so unattended upgrades don't break ECE.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Use the steps on this page to prepare an Ubuntu server for {{ece}} (ECE): install Docker from the upstream Docker `apt` repository, set up an XFS volume for cluster data, tune kernel and systemd parameters for production workloads, and pin the Docker version so unattended upgrades don't break ECE.
Use the steps on this page to prepare an Ubuntu server for {{ece}} (ECE): install and configure Docker, set up an XFS volume for ECE data, tune kernel and systemd parameters for production workloads, and pin the Docker version to avoid unexpected upgrades.


* [Install Docker](#ece-install-docker-ubuntu)
* [Set up XFS quotas](#ece-xfs-setup-ubuntu)
Expand All @@ -22,7 +22,7 @@ The following instructions show you how to prepare your hosts on Ubuntu.

## Install Docker on Ubuntu [ece-install-docker-ubuntu]

Install a compatible Docker version on Ubuntu.
Install a compatible Docker version on Ubuntu using `apt`.

::::{include} /deploy-manage/deploy/_snippets/ece-supported-combinations.md
::::
Expand All @@ -49,10 +49,10 @@ Install a compatible Docker version on Ubuntu.
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
```

4. Install the correct version of the `docker-ce` package. The following is an example of installing Docker 27.0. If you decide to install a different Docker version, make sure to replace with the desired version in the commands below.
4. Install the correct version of the `docker-ce` package. The following command is an example of installing Docker {{ece-docker-version}}. To install a different Docker version, replace {{ece-docker-version}} with your preferred version from the [Support matrix](https://www.elastic.co/support/matrix#elastic-cloud-enterprise).

```sh
sudo apt update && sudo apt install -y docker-ce=5:27.0.* docker-ce-cli=5:27.0.* containerd.io
```sh subs=true
sudo apt update && sudo apt install -y docker-ce=5:{{ece-docker-version}}.* docker-ce-cli=5:{{ece-docker-version}}.* containerd.io
```


Expand Down
1 change: 1 addition & 0 deletions docset.yml
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@ subs:
ecloud: "Elastic Cloud"
ech: "Elastic Cloud Hosted"
ece: "Elastic Cloud Enterprise"
ece-docker-version: "27.0"
eck: "Elastic Cloud on Kubernetes"
edot: "Elastic Distribution of OpenTelemetry"
motlp: "Elastic Cloud Managed OTLP Endpoint"
Expand Down
Loading