Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
a5c1e2e5
Commit
a5c1e2e5
authored
Jul 14, 2016
by
Gabriel Mazetto
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added Redis Sentinel support documentation
parent
32bb4211
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
108 additions
and
1 deletion
+108
-1
config/resque.yml.example
config/resque.yml.example
+1
-1
doc/administration/high_availability/redis.md
doc/administration/high_availability/redis.md
+107
-0
No files found.
config/resque.yml.example
View file @
a5c1e2e5
...
...
@@ -22,7 +22,7 @@ production:
# http://redis.io/topics/sentinel
#
# You must specify a list of a few sentinels that will handle client connection
# please read here for more information: https://
github.com/redis/redis-rb#sentinel-support
# please read here for more information: https://
docs.gitlab.com/ce/administration/high_availability/redis.html
##
# url: redis://master:6379
# sentinels:
...
...
doc/administration/high_availability/redis.md
View file @
a5c1e2e5
...
...
@@ -3,6 +3,113 @@
You can choose to install and manage Redis yourself, or you can use GitLab
Omnibus packages to help.
## Experimental Redis Sentinel support
Since 8.10 release, you can configure a list of Redis Sentinel servers that
will monitor a group of Redis servers to provide you with a standard failover
support.
There is currently one exception to the Sentinel support:
**mail_room**
, the
component that process incoming emails.
It doesn't support Sentinel yet, but we hope to integrate a future release
that does support it.
To get a better understanding on how to correctly setup Sentinel, please read
[
Redis Sentinel documentation
](
http://redis.io/topics/sentinel
)
first, as
faling to configure it correctly can lead to data-loss.
### Redis setup
You must have at least 2 Redis servers: 1 Master, 1 or more Slaves.
They should be configured the same way and with similar server specs, as
in a failover situation, any Slave can be elected as the new Master by
the Sentinels servers.
In a minimal setup, the only required change for the slaves in
`redis.conf`
is the addition of a
`slaveof`
line pointing to the initial master like this:
```
conf
slaveof
192
.
168
.
1
.
1
6379
```
You can increase the security by defining a
`requirepass`
configuration in
the master:
```
conf
requirepass
"
<
password
>
```
and adding this line to all the slave servers:
```
conf
masterauth
"<password>"
```
> **Note** This setup is not safe to be used by a machine accessible by the
internet. Use it in combination with tight firewall rules.
### Sentinel setup
The support for Sentinel in ruby have some
[
caveats
](
https://github.com/redis/redis-rb/issues/531
)
.
While you can give any name for the
`master-group-name`
part of the
configuration, as in this example:
```
conf
sentinel
monitor
<
master
-
group
-
name
> <
ip
> <
port
> <
quorum
>`
```
For it to work in ruby, you have to use the "hostname" of the master redis
server otherwhise you will get an error message like this one:
`Redis::CannotConnectError: No sentinels available.`
.
Here is an example configuration file (
`sentinel.conf`
) for a Sentinel node:
```
conf
port
26379
sentinel
monitor
master
-
redis
.
example
.
com
10
.
10
.
10
.
10
6379
1
sentinel
down
-
after
-
milliseconds
master
-
redis
.
example
.
com
10000
sentinel
config
-
epoch
master
-
redis
.
example
.
com
0
sentinel
leader
-
epoch
locmaster
-
redis
.
example
.
comalhost
0
```
### GitLab setup
You can enable or disable sentinel support at any time in new or existing
installs. From the GitLab application perspective, all it requires is
the correct credentials for the Master redis and for a few Sentinels nodes.
It doesn't require a list of all sentinel nodes, as in case of a failure,
the application will need to query only one of them.
For a source based install, you must change
`/home/git/gitlab/config/resque.yml`
,
following the example in
`/home/git/gitlab/config/resque.yml.example`
and
uncommenting the sentinels line, changing to the correct server credentials,
and resstart GitLab.
For a Omnibus install you have to add/change this lines from the
`/etc/gitlab/gitlab.rb`
configuration file:
```
ruby
gitlab
[
'gitlab-rails'
][
'redis_host'
]
=
"master-redis.example.com"
gitlab
[
'gitlab-rails'
][
'redis_port'
]
=
6379
gitlab
[
'gitlab-rails'
][
'redis_password'
]
=
"redis-secure-password-here"
gitlab
[
'gitlab-rails'
][
'redis_socket'
]
=
nil
gitlab
[
'gitlab-rails'
][
'redis_sentinels'
]
=
[
{
'host'
=>
'10.10.10.1'
,
'port'
=>
26379
},
{
'host'
=>
'10.10.10.2'
,
'port'
=>
26379
},
{
'host'
=>
'10.10.10.3'
,
'port'
=>
26379
}
]
```
After the change run the reconfigure command:
```
bash
sudo
gitlab-ctl reconfigure
```
## Configure your own Redis server
If you're hosting GitLab on a cloud provider, you can optionally use a
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment