Track changes for gitlab-ce#30392 support for multiple key value stores
Track changes for gitlab-ce#30392 support for multiple key value stores
Scheduled:
9.3
See: !298 (closed)
- Add support for multiple key-value stores
- allows different policies for retention, backup, deployment topologies by key namespace
- Abstract key-value store name away from name of underlying technology such as "Redis"
- update Procfile to launch additional key-value stores
partially solves:
see also:
- https://gitlab.com/gitlab-org/gitlab-ce
- https://gitlab.com/gitlab-org/gitlab-ee
- https://gitlab.com/gitlab-org/omnibus-gitlab
- !298 (closed)
Context -- configuration files added
resque.yml
This file is called resque.yml for historical reasons. We are NOT
using Resque at the moment. It is used to specify Redis configuration
values instead when a single database instance of Redis is desired.
Advanced Redis configuration files
In more advanced configurations of Redis key-value storage, it is desirable to separate the keys by lifecycle and intended use to ease provisioning and management of scalable Redis clusters.
These settings provide routing and other configuration data (such as sentinel, persistence policies, and other Redis customization) for connections to Redis single instances, Redis sentinel, and Redis clusters.
If desired, the routing URL provided by these settings can be used with:
- Unix Socket
- named socket for each Redis instance desired.
-
database numberdesired for each Redis instance desired.
- TCP Socket
-
host nameor IP for each Redis instance desired - TCP port number for each Redis instance desired
-
database numberfor each Redis instance desired
-
redis.cache.yml
If configured, redis.cache.yml overrides the
resque.yml settings to configure the Redis database instance
used for Rails.cache and other volatile non-persistent data which enhances
the performance of gitlab.
Settings here can be overridden by the environment variables
DEFAULT_REDIS_CACHE_URL which overrides the URL used by the Redis
connection manager, and GITLAB_REDIS_CACHE_CONFIG_FILE which provides
an alternate location for configuration settings.
The order of precedence for the URL used to connect to the Redis instance
used for cache is:
- URL from environment variable
DEFAULT_REDIS_CACHE_URL - URL from a configuration file pointed to by the
GITLAB_REDIS_CACHE_CONFIG_FILEenvironment variable - URL from
redis.cache.yml - URL from environment variable
DEFAULT_REDIS_URL - URL from a configuration file pointed to by the
GITLAB_REDIS_CONFIG_FILEenvironment variable - URL from
resque.yml
The order of precedence for all other configuration settings for cache
are selected from only the first of the following files found (if a setting
is not provided in an earlier file, the remainder of the files are not
searched):
- the configuration file pointed to by the
GITLAB_REDIS_CACHE_CONFIG_FILEenvironment variable - the configuration file
redis.cache.yml - the configuration file pointed to by the
GITLAB_REDIS_CONFIG_FILEenvironment variable - the configuration file
resque.yml
redis.queues.yml
If configured, redis.queues.yml overrides the
resque.yml settings to configure the Redis database instance
used for clients of ::Gitlab::Redis::Queues.
These queues are intended to be the foundation
of reliable inter-process communication between modules, whether on the same
host node, or within a cluster. The primary clients of the queues are
SideKiq, Mailroom, CI Runner, Workhorse, and push services. Settings here can
be overridden by the environment variables DEFAULT_REDIS_QUEUES_URL which
overrides the URL used by the Redis connection manager, and
GITLAB_REDIS_QUEUES_CONFIG_FILE which provides an alternate location for
configuration settings.
The order of precedence for the URL used to connect to the Redis instance
used for queues is:
- URL from environment variable
DEFAULT_REDIS_QUEUES_URL - URL from a configuration file pointed to by the
GITLAB_REDIS_QUEUES_CONFIG_FILEenvironment variable - URL from
redis.queues.yml - URL from environment variable
DEFAULT_REDIS_URL - URL from a configuration file pointed to by the
GITLAB_REDIS_CONFIG_FILEenvironment variable - URL from
resque.yml
The order of precedence for all other configuration settings for queues
are selected from only the first of the following files found (if a setting
is not provided in an earlier file, the remainder of the files are not
searched):
- the configuration file pointed to by the
GITLAB_REDIS_QUEUES_CONFIG_FILEenvironment variable - the configuration file
redis.queues.yml - the configuration file pointed to by the
GITLAB_REDIS_CONFIG_FILEenvironment variable - the configuration file
resque.yml
redis.shared_state.yml
If configured, redis.shared_state.yml overrides the
resque.yml settings to configure the Redis database instance
used for clients of ::Gitlab::Redis::SharedState such as session state,
and rate limiting.
Settings here can be overridden by the environment variables
DEFAULT_REDIS_SHARED_STATE_URL which overrides the URL used by the Redis
connection manager, and GITLAB_REDIS_SHARED_STATE_CONFIG_FILE which provides
an alternate location for configuration settings.
The order of precedence for the URL used to connect to the Redis instance
used for shared_state is:
- URL from environment variable
DEFAULT_REDIS_SHARED_STATE_URL - URL from a configuration file pointed to by the
GITLAB_REDIS_SHARED_STATE_CONFIG_FILEenvironment variable - URL from
redis.shared_state.yml - URL from environment variable
DEFAULT_REDIS_URL - URL from a configuration file pointed to by the
GITLAB_REDIS_CONFIG_FILEenvironment variable - URL from
resque.yml
The order of precedence for all other configuration settings for shared_state
are selected from only the first of the following files found (if a setting
is not provided in an earlier file, the remainder of the files are not
searched):
- the configuration file pointed to by the
GITLAB_REDIS_SHARED_STATE_CONFIG_FILEenvironment variable - the configuration file
redis.shared_state.yml - the configuration file pointed to by the
GITLAB_REDIS_CONFIG_FILEenvironment variable - the configuration file
resque.yml