Redis 5.0.5 Installation / Update / Upgrade
Multimedia
Redis installieren und aktualisieren – spielend leicht gemacht
Teil Ⅰ – Nur beim Update notwendig
- Redis herunterfahren und Datenspeicherung sicher beenden
Code
root@server:~# redis-cli 127.0.0.1:6379> SHUTDOWN SAVE (1.89s) not connected> quit root@server:~#
- Redis-Instanz stoppen <= Redis 5.10: ~# systemctl stop redis_6379 oder ~# service redis_6379 stop
- Redis-Instanz stoppen ab Redis 6.0: ~# systemctl stop systemd-redis_server oder ~# service systemd-redis_server stop
- Sicherung der aktuellen Redis-Konfiguration <= Redis 5.10: /etc/redis/6379.conf und der Daten /var/lib/redis/6379/appendonly.aof und /var/lib/redis/6379/dump.rdb
- Sicherung der aktuellen Redis-Konfiguration <= Redis 6.0: /etc/redis/redis.conf und der Daten /var/lib/redis/appendonly.aof und /var/lib/redis/dump.rdb
Teil Ⅱ – Installation / Update
Debian + Ubuntu
Bash
~# apt-get install build-essential
~# apt-get install tcl wget
CentOS
Bash
~# yum groupinstall 'Development Tools'
~# yum install tcl wget
Debian + Ubuntu + CentOS
Bash
~# wget http://download.redis.io/redis-stable.tar.gz
~# tar xvzf redis-stable.tar.gz
~# cd redis-stable/
~/redis-stable# make distclean
~/redis-stable# make
~/redis-stable# make test
...\o/ All tests passed without errors!...
~/redis-stable# make install
~/redis-stable# cd
~# cd utils/
~/utils# ./install_server.sh
Selected config:
Port : 6379
Config file : /etc/redis/6379.conf
Log file : /var/log/redis_6379.log
Data dir : /var/lib/redis/6379
Executable : /usr/local/bin/redis-server
Cli Executable : /usr/local/bin/redis-cli
Is this ok? Then press ENTER to go on or Ctrl-C to abort.
Copied /tmp/6379.conf => /etc/init.d/redis_6379
Installing service...
Success!
Starting Redis server...
Installation successful!
root@server:~/redis-stable/utils# cd
~/utils# cd
~# systemctl start redis_6379
~# systemctl status redis_6379
Redis-Konfiguration öffnen – Redis mit Ping Pong testen
Bash
~# redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379>
Redis-Version anzeigen
Bash
~# redis-server --version
Redis server v=5.0.5 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=346d28814696cac3
~#
Teil Ⅲ – Server für Redis konfigurieren
Möglichkeit A: Einstellungen für overcommit_memory und somaxconn
Bash
~# echo never > /sys/kernel/mm/transparent_hugepage/enabled
~# echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf && sysctl -p
~# echo "net.core.somaxconn = 65535" >> /etc/sysctl.conf && sysctl -p
Überprüfen:
~# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
~# cat /proc/sys/net/core/somaxconn
65535
Möglichkeit B: Einstellungen für transparent_hugepage, overcommit_memory und somaxconn
Bash
Das Paket sysfsutils installieren:
~# apt install sysfsutils
und die folgenden 3 Zeilen in die Datei /etc/sysfs.conf eintragen (nach dem Text):
kernel/mm/transparent_hugepage/enabled = never
vm.overcommit_memory = 1
net.core.somaxconn = 65535
Überprüfen:
~# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
~# sysctl -a | grep hugepage
sysctl: reading key "net.ipv6.conf.all.stable_secret"
sysctl: reading key "net.ipv6.conf.default.stable_secret"
sysctl: reading key "net.ipv6.conf.eth0.stable_secret"
sysctl: reading key "net.ipv6.conf.eth1.stable_secret"
sysctl: reading key "net.ipv6.conf.lo.stable_secret"
vm.hugepages_treat_as_movable = 0
vm.nr_hugepages = 0
vm.nr_hugepages_mempolicy = 0
vm.nr_overcommit_hugepages = 0
~# cat /proc/sys/net/core/somaxconn
65535
(Standard = 128)
~# sysctl -a | grep commit
sysctl: reading key "net.ipv6.conf.all.stable_secret"
sysctl: reading key "net.ipv6.conf.default.stable_secret"
sysctl: reading key "net.ipv6.conf.eth0.stable_secret"
sysctl: reading key "net.ipv6.conf.eth1.stable_secret"
sysctl: reading key "net.ipv6.conf.lo.stable_secret"
vm.nr_overcommit_hugepages = 0
vm.overcommit_kbytes = 0
vm.overcommit_memory = 1
vm.overcommit_ratio = 50
Hier werden alle geänderten Einstellungen in der Redis-Konfigurationsdatei /etc/redis/6379.conf angezeigt. Die beiden ersten Werte werden durch die nachfolgende Konfiguration für system.d bedingt.
Bash
daemonize yes
supervised systemd
logfile /var/log/redis_6379.log
dir /var/lib/redis/6379
maxclients 10000
maxmemory 15GB (Server hat 32G Memory)
maxmemory-policy volatile-ttl
maxmemory-samples 5
appendonly yes
Der Clou – Das große Finale – Redis für system.d konfigurieren
Wir erstellen die Datei redis.service in /lib/systemd/system/redis.service mit dem folgenden Inhalt:
Bash
[Unit]
Description=Redis In-Memory Data Store
After=network.target
[Service]
Type=forking
PIDFile=/var/run/redis_6379.pid
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always
[Install]
WantedBy=multi-user.target
Somit müssen auch in der Redis-Konfiguration /etc/redis/6379.conf die beiden folgenden Werte angepasst werden.
Bash
daemonize yes
pidfile /var/run/redis/redis.pid
Danach unbedingt den Daemon neuladen (reload) und Redis neustarten.
Code
~# systemctl daemon-reload
~# systemctl restart redis_6379