Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DOC-405 Revamp getting started and installation #1123

Merged
merged 13 commits into from
Mar 2, 2021
66 changes: 66 additions & 0 deletions content/embeds/adding-node-embed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
When you install Redis Enterprise Software (RS) on the first node of a cluster, you create the new cluster.
After you install the first node, you can add more nodes to the cluster.

{{< note >}}
Before you add a node to the cluster:

- The clocks on all nodes must always be [synchronized]({{< relref "/rs/administering/designing-production/synchronizing-clocks.md" >}}).

If the clock in the node you are trying to join to the cluster is not synchronized with the nodes already in the cluster,
the action fails and an error message is shown indicating that you must synchronize the clocks first.

- You must [update the DNS records]({{< relref "/rs/installing-upgrading/configuring/cluster-dns/_index.md" >}})
each time a node is added or replaced.

- We recommend that you add nodes one after the other rather than in parallel
to avoid errors that occur because the connection to the other nodes in the cluster cannot be verified.
{{< /note >}}

To add a node in RS:

1. [Install the RS installation package]({{< relref "/rs/installing-upgrading/_index.md" >}}) on a clean installation
of a [supported operating system]({{< relref "/rs/installing-upgrading/supported-platforms.md" >}}).
1. To connect to the RS management UI of the new RS installation, go to: <https://URL or IP address:8443>

For example, if you installed RS on a machine with IP address 10.0.1.34, go to `https://10.0.1.34:8443`.

{{< tip >}}
The RS management UI uses SSL encryption with a default certificate.
You can also [replace the TLS certificate]({{< relref "/rs/administering/cluster-operations/updating-certificates.md" >}})
with a custom certificate.
{{< /tip >}}

1. To start configuring RS, click **Setup**.
1. Configure the RS network and storage settings:
1. You can enter a path for [*Persistent storage*]({{< relref "/rs/administering/designing-production/persistent-ephemeral-storage.md" >}}),
or leave the default path.
1. You can enter a path for [*Ephemeral storage*]({{< relref "/rs/administering/designing-production/persistent-ephemeral-storage.md" >}}),
or leave the default path.
1. If you want to enable [*Redis on Flash*]({{< relref "/rs/concepts/memory-architecture/redis-flash.md" >}}),
select **Enable flash storage support** and enter the path to the Flash storage to use as RAM extension.
1. If your machine has multiple IP addresses, in **IP Addresses Usage** assign a single IPv4 type address for internal traffic
and multiple IPv4/IPv6 type addresses for external traffic.
1. Join the new RS node to the cluster:
1. In **Cluster configuration**, select **Join cluster**.
1. Enter the internal IP address or DNS name of a node that is a cluster member.

If the node only has one IP address, enter that IP address.

1. Enter the credentials of the cluster administrator.

The cluster administrator is the user account that you create when you
configure the first node in the cluster.

1. Click **Next**.

If the cluster is configured to support [rack-zone awareness]({{< relref "/rs/concepts/high-availability/rack-zone-awareness.md" >}}),
you are redirected to a page in which you must set the Rack-zone ID for the new node.

The node is added to the cluster.
You can see it in the list of nodes in the cluster.

If you see an error when you add the node, try adding the node again.

{{< tip >}}
We recommend that you run the [rlcheck utility]({{< relref "/rs/references/rlcheck.md" >}}) to verify that the node is functioning properly.
{{< /tip >}}
112 changes: 112 additions & 0 deletions content/embeds/cluster-dns-embed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
DNS is critical to the default operation of Redis Enterprise Software (RS) deployments.
This can be altered, but instead using the [Discovery Service]({{< relref "/rs/concepts/data-access/discovery-service.md" >}}),
which utilizes pure IP-based connectivity as it is compliant with the Redis Sentinel API.

As part of the high availability capabilities in RS,
each node includes a small DNS server for managing various internal cluster functionalities,
such as automatic failover or automatic migration.
Therefore, the node on which you are provisioning RS should not run any other DNS server except for the one included with the RS installation.
The existence of another DNS server on the same machine can cause unexpected behavior in RS.

## Cluster name (FQDN) and connection management

When connecting to the cluster for administration or connecting to databases for data access, there are 2 options:

- URL-based Connections - URL-based connections require DNS setup for resolution of the cluster name (FQDN) when connecting to the cluster
for administration or connecting to databases for data access.
As the topology of the cluster changes and new nodes are added or existing nodes are removed from the cluster,
DNS records may need to be modified.
However, with URL-based connections, applications simply have to remember the URL for the cluster or the database.
- IP-based Connections - IP-based connections do not require DNS setup and instead use IP addresses of the nodes in the cluster
for connecting to the cluster for administration or data access.
As the topology of the cluster changes and new nodes are added or existing nodes are removed from the cluster,
no DNS records need to be modified.
However, administrators and applications connecting to the cluster and to the databases need to maintain the IP address
of at least one node in the cluster to discover and access the cluster topology.

## URL-based connections and how to set up cluster name (FQDN)

The Fully Qualified Domain Name (FQDN) is the unique cluster identifier that enables clients to connect to [the different components]({{< relref "/rs/concepts/_index.md" >}})
that are part of the Redis Enterprise Software.
The FQDN is a crucial component of the high-availability mechanism in RS because it is used by the internal DNS
to enable the automatic and transparent failover of nodes, databases shards, and endpoints, by automatically updating their IP addresses.

{{< note >}}
Setting the cluster's FQDN is a one-time operation.
After the FQDN is set it cannot be updated.
{{< /note >}}

The FQDN must always comply with the IETF's [RFC 952](http://tools.ietf.org/html/rfc952) standard
and section 2.1 of the [RFC 1123](http://tools.ietf.org/html/rfc1123) standard.

## Naming the cluster FQDN

You have two options for naming the cluster FQDN:

### DNS

Use this option if you already have your own domain, would like to make the cluster part of your domain and are able to update the DNS.

1. Make sure that the cluster and at least one node (preferably all nodes) in the cluster
are correctly configured in the DNS with the appropriate NS entries.

For example:

- Your domain is: mydomain.com
- You would like to name the Redis Enterprise Software cluster:
redislabscluster
- You have three nodes in the cluster:
- node1 with IP 1.1.1.1
- node2 with IP 2.2.2.2
- node3 with IP 3.3.3.3

1. In the FQDN field, enter the value `redislabscluster.mydomain.com`
and add the following records in the DNS for mydomain.com:

```sh
redislabscluster.mydomain.com NS node1.redislabscluster.mydomain.com
node2.redislabscluster.mydomain.com
node3.redislabscluster.mydomain.com

node1.redislabscluster.mydomain.com A 1.1.1.1

node2.redislabscluster.mydomain.com A 2.2.2.2

node3.redislabscluster.mydomain.com A 3.3.3.3
```

### Zero-configuration using mDNS (Development option only) {#zeroconfiguration-using-mdns-development-option-only}

{{< note >}}
mDNS is not supported for use with production environments and should only be used in development or test environments.
{{< /note >}}

mDNS (Multicast DNS) is a standard protocol that provides DNS-like name resolution and service discovery capabilities
to machines on local networks with minimal to no configuration.
Because not all clients support mDNS, ensure first that the clients that are connecting to the cluster actually have mDNS support,
and that the network infrastructure permits mDNS/multi-casting between them and the cluster nodes.

Configuring the cluster to support mDNS requires you to assign the cluster a `.local` name.

For example, if you want to name the Redis Enterprise Software cluster `redislabscluster`, enter `redislabscluster.local` in the FQDN field.

When using the DNS or mDNS option, failover can be done transparently and the DNS is updated automatically to point to the IP of the new master.

## IP-based connections

When you use the IP-based connection option, the FQDN does not need to have any special format
because clients use IP addresses instead of hostnames to access the databases so you are free to choose whatever name you want.
Using the IP-based connection option does not require any DNS configuration either.

To administer the cluster you do need to know the IP address of at least one of the nodes in the cluster.
Once you have the IP address, you can simply connect to port number 8443 (for example: <https://10.0.0.12:8443>).
However, as the topology of the cluster changes and node with the given IP address is removed,
you need to remember the IP address of another node participating in this cluster to connect to the admin console and manage the cluster.

Applications connecting to RS databases for data access have the same constraints.
When using the IP-based connection method, you can use the [Discovery Service]({{< relref "/rs/concepts/data-access/discovery-service.md" >}})
to discover the database endpoint for a given database name as long as you have an IP address for at least one of the nodes in the cluster.
The API used for discovery service is compliant with the Redis Sentinel API.

You can find a simple example of URL and IP-based connection in the "Testing Connectivity to your Database" section
of [Creating a new database]({{< relref "/rs/administering/creating-database/_index.md#simple-connectivity-test" >}}).
44 changes: 44 additions & 0 deletions content/embeds/hardware-requirements-embed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
The hardware requirements for Redis Enterprise Software (RS) are different for development and production environments.

- In a development environment you can test your application with a live RS database.

If you want to test your application under production conditions, use the production environment requirements.

- In a production environment you must have enough resources to handle the load on the database and recover from failures.

## Development environment

You can build your development environment with non-production hardware, such as a laptop, desktop, or small VM or instance,
and with these hardware requirements:

| Item | Description | Minimum Requirements | Recommended |
|------------|-----------------|------------|-----------------|
| Nodes per cluster | You can install on one node but many features require at least two nodes. | 1 node | >= 2 nodes |
| RAM per node | The amount of RAM for each node. | 4GB | >= 8GB |
| Storage per node | The amount of storage space for each node. | 10GB | >= 20GB |

## Production environment

We recommend these hardware requirements for production systems or for development systems that are designed to demonstrate production use cases:

| Item | Description | Minimum Requirements | Recommended |
|------------|-----------------|------------|-----------------|
| Nodes per cluster | At least 3 nodes are required to support a reliable, highly available deployment that handles process failure, node failure, and network split events in a consistent manner. | 3 nodes | >= 3 nodes (Must be an odd number of nodes) |
| Cores<sup>*</sup> per node | RS is based on a multi-tenant architecture and can run multiple Redis processes (or shards) on the same core without significant performance degradation. | 4 cores | >=8 cores |
| RAM<sup>*</sup> per node | Defining your RAM size must be part of the capacity planning for your Redis usage. | 15GB | >=30GB |
| Ephemeral Storage | Used for storing [replication files (RDB format) and cluster log files]({{< relref "/rs/administering/designing-production/persistent-ephemeral-storage.md" >}}). | RAM x 2 | >= RAM x 4 |
| Persistent Storage | Used for storing [snapshot (RDB format) and AOF files]({{< relref "/rs/administering/designing-production/persistent-ephemeral-storage.md" >}}) over a persistent storage media, such as AWS Elastic Block Storage (EBS) or Azure Data Disk. | RAM x 3 | In-memory >= RAM x 6 (except for [extreme 'write' scenarios]({{< relref "/rs/administering/designing-production/performance/disk-sizing-heavy-write-scenarios.md" >}})); [Redis on Flash]({{< relref "/rs/concepts/memory-architecture/redis-flash.md" >}}) >= (RAM + Flash) x 5. |
| Network | We recommend using multiple NICs per node where each NIC is >100Kbps, but RS can also run over a single 1Gbps interface network used for processing application requests, inter-cluster communication, and storage access. | 1G | >=10G |

<sup>*</sup>Additional considerations:

- Cores:
- When the CPU load reaches a certain level, RS tries to migrate "noisy" shards to a different node in the cluster and sends an alert to the operator.
- If your application is designed to put a lot of load on your Redis database, make sure that you have at least one available core for each shard of your database.
- If some of the cluster nodes are utilizing more than 80% of the CPU, consider migrating busy resources to less busy nodes.
- If all the cluster nodes are utilizing over 80% of the CPU, consider scaling out the cluster by [adding a node]({{< relref "/rs/administering/adding-node.md" >}}).
- RAM:
- Since Redis uses a relatively large amount of buffers (such as for slave communication, client communication, and pub/sub commands) make sure that at least 30% of the RAM is "unused" on each node.
- If some of the cluster nodes are utilizing more than 65% of the RAM, you should look at migrating busy resources to less busy nodes.
- If all the cluster nodes are utilizing over 70% of the RAM, you should look to scale out the cluster by [adding a node]({{< relref "/rs/administering/adding-node.md" >}}).
- Do not run other memory-consuming systems on the RS node.
59 changes: 59 additions & 0 deletions content/embeds/new-cluster-embed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
A Redis Enterprise Software (RS) cluster typically consists of several nodes.
For production deployments, Redis Labs recommends an uneven number of nodes, with a minimum of three.

{{< note >}}
In a cluster that consists of only one node, some features and capabilities are not enabled,
such as database replication that provides high availability.
{{< /note >}}

To set up a new cluster, you must first [install the Redis Enterprise Software package]({{< relref "/rs/installing-upgrading/_index.md" >}})
and then set up the cluster as described below.
After the cluster is created you can [add multiple nodes to the cluster]({{< relref "/rs/administering/adding-node.md" >}}).

To create a cluster:

1. In a browser, navigate to `https://<name or IP address of the machine with RS installed>:8443`.
For example, if you installed RS on a machine with IP address 10.0.1.34, then navigate to <https://10.0.1.34:8443>.

{{< note >}}
- The RS management UI uses a [self-signed SSL/TLS encryption]({{< relref "/rs/administering/cluster-operations/updating-certificates.md" >}}).
- If the machine has both an internal IP address and an external IP address, use the external IP address to access the setup UI.
{{< /note >}}

1. Click **Setup**.
1. In the Node Configuration page that appears:

1. Enter a path for [**Persistent storage**]({{< relref "/rs/administering/designing-production/persistent-ephemeral-storage.md" >}}),
or leave the default path.

1. Enter a path for [**Ephemeral storage**]({{< relref "/rs/administering/designing-production/persistent-ephemeral-storage.md" >}}),
or leave the default path.

1. If you want to enable Redis on Flash, select the **Enable flash storage support** checkbox
and enter the path to the [Flash storage]({{< relref "/rs/concepts/memory-architecture/redis-flash.md" >}}).

1. If your machine is configured to have multiple IP addresses, the section **IP Addresses Usage** is shown.
Use the **IP Addresses Usage** section to assign a single IPv4 type address for internal traffic
and multiple IPv4/[IPv6]({{< relref "/rs/administering/designing-production/networking/multi-ip-ipv6.md" >}}) type addresses for external traffic.

1. In Cluster configuration, select **Create new cluster**.

1. In **Cluster name (FQDN)**, enter a unique name for the cluster.
Also, make sure that you look at the [instructions for setting up DNS]({{< relref "/rs/installing-upgrading/configuring/cluster-dns/_index.md" >}}
to make sure your cluster is reachable by name.

1. Choose whether to [**Enable private & public endpoints support**]({{< relref "/rs/administering/designing-production/networking/private-public-endpoints.md" >}}).

1. Choose whether to [**Enable rack-zone awareness**]({{< relref "/rs/concepts/high-availability/rack-zone-awareness.md" >}}).
Enabling rack-zone awareness requires setting the **Rack-zone ID** for the node.

1. Click **Next**.
1. If you purchased a cluster key, use the **Cluster authentication** page to enter the key.
Otherwise, you get the trial license by default.
Read the product Terms and Conditions and click **Next.**
1. Click **OK** to confirm that you are aware of the replacement of the HTTPS SSL/TLS certificate on the node,
and proceed through the browser warning.
1. In the **Set admin credentials** fields, enter the credentials of the cluster administrator.
1. Click **Next**.

After a short wait, your cluster is created and you can log in to the RS admin console.
Loading