209 lines
7.5 KiB
Markdown
209 lines
7.5 KiB
Markdown
---
|
|
title: Manage your InfluxDB Clustered license
|
|
description: >
|
|
Install and manage your InfluxDB Clustered license to authorize the use of
|
|
the InfluxDB Clustered software.
|
|
menu:
|
|
influxdb3_clustered:
|
|
parent: Administer InfluxDB Clustered
|
|
name: Manage your license
|
|
weight: 101
|
|
influxdb3/clustered/tags: [licensing]
|
|
related:
|
|
- /influxdb3/clustered/install/set-up-cluster/licensing/
|
|
- /influxdb3/clustered/admin/upgrade/
|
|
---
|
|
|
|
Install and manage your InfluxDB Clustered license to authorize the use of
|
|
the InfluxDB Clustered software.
|
|
|
|
- [Install your InfluxDB license](#install-your-influxdb-license)
|
|
- [Verify your license](#verify-your-license)
|
|
- [Verify database components](#verify-database-components)
|
|
- [Verify the Secret exists ](#verify-the-secret-exists)
|
|
- [View license controller logs](#view-license-controller-logs)
|
|
- [Recover from a license misconfiguration](#recover-from-a-license-misconfiguration)
|
|
- [Renew your license](#renew-your-license)
|
|
- [License enforcement](#license-enforcement)
|
|
- [A valid license is required](#a-valid-license-is-required)
|
|
- [Periodic license checks](#periodic-license-checks)
|
|
- [License grace periods](#license-grace-periods)
|
|
- [License expiry logs](#license-expiry-logs)
|
|
- [Query brownout](#query-brownout)
|
|
|
|
## Install your InfluxDB license
|
|
|
|
{{% note %}}
|
|
If setting up an InfluxDB Clustered deployment for the first time, first
|
|
[set up the prerequisites](/influxdb3/clustered/install/set-up-cluster/licensing/) and
|
|
[configure your cluster](/influxdb3/clustered/install/set-up-cluster/configure-cluster/).
|
|
After your InfluxDB namespace is created and prepared, you can
|
|
install your license.
|
|
{{% /note %}}
|
|
|
|
1. If you haven't already,
|
|
[request an InfluxDB Clustered license](https://influxdata.com/contact-sales).
|
|
2. InfluxData provides you with a `license.yml` file that encapsulates your
|
|
license token as a custom Kubernetes resource.
|
|
3. Use `kubectl` to apply and create the `License` resource in your InfluxDB
|
|
namespace:
|
|
|
|
<!--pytest.mark.skip-->
|
|
|
|
```sh
|
|
kubectl apply --filename license.yml --namespace influxdb
|
|
```
|
|
|
|
InfluxDB Clustered detects the `License` resource and extracts the credentials
|
|
into a secret required by InfluxDB Clustered Kubernetes pods.
|
|
Pods validate the license secret both at startup and periodically (roughly once
|
|
per hour) while running.
|
|
|
|
## Verify your license
|
|
|
|
After you have activated your license, use the following signals to verify the
|
|
license is active and functioning.
|
|
|
|
In your commands, replace the following:
|
|
|
|
- {{% code-placeholder-key %}}`NAMESPACE`{{% /code-placeholder-key %}}:
|
|
your [InfluxDB namespace](/influxdb3/clustered/install/set-up-cluster/configure-cluster/#create-a-namespace-for-influxdb)
|
|
- {{% code-placeholder-key %}}`POD_NAME`{{% /code-placeholder-key %}}:
|
|
your [InfluxDB Kubernetes pod](/influxdb3/clustered/install/set-up-cluster/deploy/#inspect-cluster-pods)
|
|
|
|
### Verify database components
|
|
|
|
After you [install your license](#install-your-influxdb-license),
|
|
run the following command to check that database pods start up and are in the
|
|
`Running` state:
|
|
|
|
<!--pytest.mark.skip-->
|
|
|
|
```bash
|
|
kubectl get pods -l app=iox --namespace influxdb
|
|
```
|
|
|
|
If a `Pod` fails to start, run the following command to view pod information:
|
|
|
|
<!--pytest.mark.skip-->
|
|
|
|
{{% code-placeholders "POD_NAME" %}}
|
|
|
|
```sh
|
|
kubectl describe pod POD_NAME --namespace influxdb
|
|
```
|
|
|
|
{{% /code-placeholders %}}
|
|
|
|
### Verify the `Secret` exists
|
|
|
|
Run the following command to verify that the licensing activation created a
|
|
`iox-license` secret:
|
|
|
|
<!--pytest.mark.skip-->
|
|
|
|
```sh
|
|
kubectl get secret iox-license --namespace influxdb
|
|
```
|
|
|
|
If the secret doesn't exist,
|
|
[view `license-controller` logs](#view-license-controller-logs) for more
|
|
information or errors.
|
|
|
|
### View `license controller` logs
|
|
|
|
The `license controller` component creates a `Secret` named `iox-license` from
|
|
your `License`. To view `license controller` logs for troubleshooting, run the
|
|
following command:
|
|
|
|
<!--pytest.mark.skip-->
|
|
|
|
```sh
|
|
kubectl logs deployment/license-controller --namespace influxdb
|
|
```
|
|
|
|
## Recover from a license misconfiguration
|
|
|
|
If you deploy a licensed release of {{% product-name %}} with an invalid or
|
|
expired license, many of the pods in your cluster will crash on startup and will
|
|
likely enter a `CrashLoopBackoff` state without ever running or becoming healthy.
|
|
Because InfluxDB stores the license in a volume-mounted Kubernetes secret, invalid
|
|
licenses affect old and new pods.
|
|
|
|
After you apply a valid `License` resource, new pods will begin to start up normally.
|
|
|
|
InfluxDB validates a license when you apply it.
|
|
If the license is invalid when you try to apply it, the `license controller`
|
|
won't add or update the required secret.
|
|
|
|
## Renew your license
|
|
|
|
Before your license expires, your InfluxData sales representative will
|
|
contact you about license renewal.
|
|
You may also contact your sales representative at any time.
|
|
|
|
---
|
|
|
|
## License enforcement
|
|
|
|
InfluxDB Clustered authorizes use of InfluxDB software through licenses issued
|
|
by InfluxData. The following sections provide information about InfluxDB Clustered
|
|
license enforcement.
|
|
|
|
### A valid license is required
|
|
|
|
Kubernetes pods running in your InfluxDB cluster must have a valid `License`
|
|
resource to run. Licenses are issued by InfluxData. If there is no `License`
|
|
resource installed in your cluster, one of two things may happen:
|
|
|
|
- Pods may become stuck in a `ContainerCreating` state if the cluster has
|
|
never had a valid `License` resource installed.
|
|
- If an expired or invalid license is installed in the cluster, pods will become
|
|
stuck in a `CrashLoopBackoff` state.
|
|
Pod containers will attempt to start, detect the invalid license condition,
|
|
print an error message, and then exit with a non-zero exit code.
|
|
|
|
### Periodic license checks
|
|
|
|
During normal operation, pods in your InfluxDB cluster check for a valid license
|
|
once per hour. You may see messages in your pod logs related to this behavior.
|
|
|
|
### License grace periods
|
|
|
|
When InfluxData issues a license, it is configured with two expiry dates.
|
|
The first is the expiry date of the contractual license. The second is a hard
|
|
expiry of the license credentials, after which pods in your cluster will begin
|
|
crash-looping until a new, valid license is installed in the cluster.
|
|
|
|
The period of time between the contractual license expiry and the hard license
|
|
expiry is considered the _grace period_. The standard grace period is 90 days,
|
|
but this may be negotiated as needed with your InfluxData sales representative.
|
|
|
|
#### License expiry logs
|
|
|
|
The following table outlines license expiry logging behavior to show when the log
|
|
messages begin, the level (`Warn` or `Error`), and the periodicity at which they
|
|
repeat.
|
|
|
|
| Starts at | Log level | Log periodicity |
|
|
| :-------------------- | :-------- | :-------------- |
|
|
| 1 month before expiry | Warn | 1 msg per hour |
|
|
| 1 week before expiry | Warn | 1 msg per 5 min |
|
|
| At expiry | Error | 1 msg per 5 min |
|
|
|
|
#### Query brownout
|
|
|
|
Starting one month after your contractual license expiry, the InfluxDB
|
|
[Querier](/influxdb3/clustered/reference/internals/storage-engine/#querier)
|
|
begins "browning out" requests. Brownouts return
|
|
`FailedPrecondition` response codes to queries for a portion of every hour.
|
|
|
|
| Starts at | Brownout coverage |
|
|
| :------------------- | :----------------- |
|
|
| 7 days after expiry | 5 minutes per hour |
|
|
| 1 month after expiry | 100% of queries |
|
|
|
|
**Brownouts only occur after the license has contractually expired**.
|
|
Also, they **only impact query operations**--no other operations (writes,
|
|
compaction, garbage collection, etc) are affected.
|