Differences between revisions 9 and 31 (spanning 22 versions)
Revision 9 as of 2020-02-11 23:58:15
Size: 1269
Comment:
Revision 31 as of 2021-01-04 21:34:11
Size: 4477
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
INCOMPLETE DO NOT USE

= Redis =
DISCLAIMER: This is running in Buster
Line 7: Line 5:
 * 192.168.1.58 redis01
 * 192.168.1.59 redis02
 * 192.168.1.60 redis03
 * 192.168.1.59 redis01
 * 192.168.1.60 redis02
 * 192.168.1.61 redis03
Line 21: Line 19:
Make sure the apache servers can reach redis. Change `bind 127.0.0.1` in `/etc/redis/redis.conf`. Each of the redis servers needs to listen on its own IP-address. Change the contents of the redis configuration file in `/etc/redis/redis.conf`.


= Redis Cluster =

As i by mistake configured this as a custer. this description will stay for a while. until then, the page will just be long

Redis is an in memory data structure storage. It will be used to share PHP-sessions between the apache servers. To guarantee a robust deployment three redis servers will be configured.

 * 192.168.1.59 redis01
 * 192.168.1.60 redis02
 * 192.168.1.61 redis03

== Software ==
Line 24: Line 35:
bind 127.0.0.1 192.168.1.58 apt-get install redis-server redis-sentinel
Line 27: Line 38:
Stop the redis server on all hosts. == Configuration ==

=== Redis Server ===

Change the contents of the redis configuration file in `/etc/redis/redis.conf`.

Add the IP-address for each of the servers. Each of the redis servers needs to listen on its own IP-address. Due to a bug in redis, the added IP-address will have to be in the beginning of the line, right next to `bind`. If the IP-address is added in the end of the line, then the cluster will not initialize itself, and a `Waiting for the cluster to join...` message will continuously write dots.
Line 29: Line 46:
service redis-server stop bind 192.168.1.58 127.0.0.1 ::1
Line 32: Line 49:
To enable replication we need to consider one of the redis servers the master. Here it will be redis03. On the two other hosts add the following to `/etc/redis/redis.conf`.
Enable redis to listen on the network, instead of only listening on the loopback device.
Line 34: Line 52:
slaveof 192.168.1.60 6379 protected-mode no
Line 37: Line 55:
Start the redis servers again, but start it on redis03 first. Redis stores its data in memory only, hence its speed. To make sure redis does not loose its state, in case of a hardware failure, this will enable it to store the state as it changes in a file on disk.
Line 39: Line 57:
service redis-server start appendonly yes
Line 41: Line 59:
redis03 should now be the master.
Line 43: Line 60:
=== Redis Sentinel === Activate redis cluster features
{{{
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000
}}}
Line 45: Line 67:
The same goes for `/etc/redis/sentinel.conf` Restart redis on all hosts.
Line 47: Line 69:
bind 127.0.0.1 192.168.1.58 service redis-server restart
Line 49: Line 71:

Next we will need to configure the servers to run as a cluster
{{{
redis-cli --cluster create 192.168.1.59:6379 192.168.1.60:6379 192.168.1.61:6379
}}}

You should get output similar to this
{{{
>>> Performing hash slots allocation on 3 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
M: 78252519c58c5e7651554b3c82ba5800e4c11c41 192.168.1.59:6379
   slots:[0-5460] (5461 slots) master
M: b26d5a1ebe4891c68acf1d6b7cea5cc19057849f 192.168.1.60:6379
   slots:[5461-10922] (5462 slots) master
M: 0db96b401cca249b61660ed4d2945d658dcdc6e1 192.168.1.61:6379
   slots:[10923-16383] (5461 slots) master
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join

>>> Performing Cluster Check (using node 192.168.1.59:6379)
M: 78252519c58c5e7651554b3c82ba5800e4c11c41 192.168.1.59:6379
   slots:[0-5460] (5461 slots) master
M: 0db96b401cca249b61660ed4d2945d658dcdc6e1 192.168.1.61:6379
   slots:[10923-16383] (5461 slots) master
M: b26d5a1ebe4891c68acf1d6b7cea5cc19057849f 192.168.1.60:6379
   slots:[5461-10922] (5462 slots) master
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
}}}
Line 54: Line 113:
 * https://www.haproxy.com/blog/haproxy-advanced-redis-health-check/
 * https://medium.com/@amila922/redis-sentinel-high-availability-everything-you-need-to-know-from-dev-to-prod-complete-guide-deb198e70ea6
 * https://blog.usejournal.com/first-step-to-redis-cluster-7712e1c31847
 * https://www.linode.com/docs/applications/big-data/how-to-install-and-configure-a-redis-cluster-on-ubuntu-1604/
 * https://www.willandskill.se/en/setup-a-highly-available-redis-cluster-with-sentinel-and-haproxy/
 * https://www.tecmint.com/setup-redis-replication-in-centos-8/
 * https://www.tecmint.com/setup-redis-high-availability-with-sentinel-in-centos-8/
 * https://www.tecmint.com/setup-redis-cluster-in-centos-8/
 * https://stackoverflow.com/questions/39568561/how-to-solve-redis-cluster-waiting-for-the-cluster-to-join-issue

DISCLAIMER: This is running in Buster

Redis is an in memory data structure storage. It will be used to share PHP-sessions between the apache servers. To guarantee a robust deployment three redis servers will be configured.

  • 192.168.1.59 redis01
  • 192.168.1.60 redis02
  • 192.168.1.61 redis03

Software

apt-get install redis-server redis-sentinel

Configuration

Redis Server

Change the contents of the redis configuration file in /etc/redis/redis.conf.

Redis Cluster

As i by mistake configured this as a custer. this description will stay for a while. until then, the page will just be long

Redis is an in memory data structure storage. It will be used to share PHP-sessions between the apache servers. To guarantee a robust deployment three redis servers will be configured.

  • 192.168.1.59 redis01
  • 192.168.1.60 redis02
  • 192.168.1.61 redis03

Software

apt-get install redis-server redis-sentinel

Configuration

Redis Server

Change the contents of the redis configuration file in /etc/redis/redis.conf.

Add the IP-address for each of the servers. Each of the redis servers needs to listen on its own IP-address. Due to a bug in redis, the added IP-address will have to be in the beginning of the line, right next to bind. If the IP-address is added in the end of the line, then the cluster will not initialize itself, and a Waiting for the cluster to join... message will continuously write dots.

bind 192.168.1.58 127.0.0.1 ::1

Enable redis to listen on the network, instead of only listening on the loopback device.

protected-mode no

Redis stores its data in memory only, hence its speed. To make sure redis does not loose its state, in case of a hardware failure, this will enable it to store the state as it changes in a file on disk.

appendonly yes

Activate redis cluster features

cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000

Restart redis on all hosts.

service redis-server restart

Next we will need to configure the servers to run as a cluster

redis-cli --cluster create 192.168.1.59:6379 192.168.1.60:6379 192.168.1.61:6379

You should get output similar to this

>>> Performing hash slots allocation on 3 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
M: 78252519c58c5e7651554b3c82ba5800e4c11c41 192.168.1.59:6379
   slots:[0-5460] (5461 slots) master
M: b26d5a1ebe4891c68acf1d6b7cea5cc19057849f 192.168.1.60:6379
   slots:[5461-10922] (5462 slots) master
M: 0db96b401cca249b61660ed4d2945d658dcdc6e1 192.168.1.61:6379
   slots:[10923-16383] (5461 slots) master
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join

>>> Performing Cluster Check (using node 192.168.1.59:6379)
M: 78252519c58c5e7651554b3c82ba5800e4c11c41 192.168.1.59:6379
   slots:[0-5460] (5461 slots) master
M: 0db96b401cca249b61660ed4d2945d658dcdc6e1 192.168.1.61:6379
   slots:[10923-16383] (5461 slots) master
M: b26d5a1ebe4891c68acf1d6b7cea5cc19057849f 192.168.1.60:6379
   slots:[5461-10922] (5462 slots) master
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

References

None: Redis (last edited 2022-01-03 22:09:21 by Kristian Kallenberg)