安装redis6集群

安装redis6集群

软件版本
redis6.0.9
节点IP系统功能CPU内存硬盘
node110.80.10.1centos7.9redis主14核心8GB20GB
node210.80.10.2centos7.9redis从14核心8GB20GB
node310.80.10.3centos7.9redis主24核心8GB20GB
node410.80.10.4centos7.9redis从24核心8GB20GB
node510.80.10.5centos7.9redis主34核心8GB20GB
node610.80.10.6centos7.9redis从34核心8GB20GB

node1

修改hosts地址解析:

1
2
3
4
5
6
7
8
# vim /etc/hosts
# 尾行,添加解析
10.80.10.1 node1
10.80.10.2 node2
10.80.10.3 node3
10.80.10.4 node4
10.80.10.5 node5
10.80.10.6 node6

下载redis:

下载地址:http://download.redis.io/releases/

1
2
# cd /usr/local/src/
# wget http://download.redis.io/releases/redis-6.0.9.tar.gz

下载安装gcc9:

1
2
# yum install -y centos-release-scl
# yum install -y devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils

临时使用gcc:

1
# scl enable devtoolset-9 bash

永久使用gcc,添加环境变量:

1
# echo "source /opt/rh/devtoolset-9/enable" >> /etc/profile

检测gcc版本:

1
2
3
4
5
# gcc --version
gcc (GCC) 9.3.1 20200408 (Red Hat 9.3.1-2)
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

解压安装redis:

1
2
3
# tar -xzvf redis-6.0.9.tar.gz
# cd redis-6.0.9
# make -j 4 && make -j 4 install

查看redis版本:

1
2
# redis-server --version
Redis server v=6.0.9 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=c1ae10671a009bd8

systemctl管理redis:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# vim /etc/systemd/system/redis-server.service
[Unit]
Description=Redis data structure server
Documentation=https://redis.io/documentation

[Service]
ExecStart=/usr/local/bin/redis-server /usr/local/etc/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always
LimitNOFILE=10032
NoNewPrivileges=yes
Type=forking
UMask=0077

[Install]
WantedBy=multi-user.target

添加执行权限:

1
# chmod a+x /etc/systemd/system/redis-server.service

重新加载systemctl:

1
# systemctl daemon-reload

添加redis配置文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# vim /usr/local/etc/redis.conf
daemonize yes
port 6379
dir /var/lib/redis
cluster-enabled yes
cluster-config-file redis-cluster.conf
cluster-node-timeout 5000
bind 0.0.0.0
protected-mode no
save "900 1"
appendonly no
requirepass 123456
masterauth 123456
logfile "/var/log/redis/redis.log"

配置各节点免密:

1
2
3
4
5
6
7
8
9
# ssh-keygen -t rsa -P '' -f /root/.ssh/id_rsa
# for i in `tail -n 6 /etc/hosts | awk '{print $1}'`; do ssh-copy-id $i; done
# for i in `tail -n 6 /etc/hosts | awk '{print $1}'`; do scp /etc/hosts $i:/etc/; done
# for i in `tail -n 6 /etc/hosts | awk '{print $1}'`; do ssh $i mkdir -p /var/log/redis/ /var/lib/redis/; done
# for i in `tail -n 6 /etc/hosts | awk '{print $1}'`; do scp /usr/local/bin/redis-* $i:/usr/local/bin/; done
# for i in `tail -n 6 /etc/hosts | awk '{print $1}'`; do scp /usr/local/etc/redis.conf $i:/usr/local/etc/; done
# for i in `tail -n 6 /etc/hosts | awk '{print $1}'`; do scp /etc/systemd/system/redis-server.service $i:/etc/systemd/system/; done
# for i in `tail -n 6 /etc/hosts | awk '{print $1}'`; do ssh $i "systemctl daemon-reload"; done
# for i in `tail -n 6 /etc/hosts | awk '{print $1}'`; do ssh $i "systemctl enable redis-server && systemctl start redis-server"; done

创建集群:

1
2
# redis-cli -a '123456' --cluster create --cluster-replicas 1 10.80.10.1:6379 10.80.10.2:6379 10.80.10.3:6379 10.80.10.4:6379 10.80.10.5:6379 10.80.10.6:6379
yes

查看节点状态:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# redis-cli --cluster check 10.80.10.1:6379 -a '123456'
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
10.80.10.1:6379 (639039e1...) -> 0 keys | 5461 slots | 1 slaves.
10.80.10.2:6379 (06b9b4dd...) -> 0 keys | 5462 slots | 1 slaves.
10.80.10.3:6379 (1fae3196...) -> 0 keys | 5461 slots | 1 slaves.
[OK] 0 keys in 3 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 10.80.10.1:6379)
M: 639039e161e92f000642921488cf977db0d53e98 10.80.10.1:6379
slots:[0-5460] (5461 slots) master
1 additional replica(s)
M: 06b9b4dd60735bfbb2cafb6b1280d6807972542d 10.80.10.2:6379
slots:[5461-10922] (5462 slots) master
1 additional replica(s)
S: ae102a1d41006fcd15e2ce28d00cbbd91e5aac00 10.80.10.4:6379
slots: (0 slots) slave
replicates 1fae3196de8454e24d8bc63d922b15fb7423da4d
M: 1fae3196de8454e24d8bc63d922b15fb7423da4d 10.80.10.3:6379
slots:[10923-16383] (5461 slots) master
1 additional replica(s)
S: c27994f3a1baa8ed5f2da5bc2cfd5e12a7aafc66 10.80.10.6:6379
slots: (0 slots) slave
replicates 06b9b4dd60735bfbb2cafb6b1280d6807972542d
S: a9a41ea426cb17d7823ef422e106c54f31c057cd 10.80.10.5:6379
slots: (0 slots) slave
replicates 639039e161e92f000642921488cf977db0d53e98
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
1
2
3
4
5
6
7
8
# redis-cli -a '123456' -p 6379 cluster nodes
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
06b9b4dd60735bfbb2cafb6b1280d6807972542d 10.80.10.2:6379@16379 master - 0 1701517036000 2 connected 5461-10922
ae102a1d41006fcd15e2ce28d00cbbd91e5aac00 10.80.10.4:6379@16379 slave 1fae3196de8454e24d8bc63d922b15fb7423da4d 0 1701517036528 3 connected
1fae3196de8454e24d8bc63d922b15fb7423da4d 10.80.10.3:6379@16379 master - 0 1701517036528 3 connected 10923-16383
c27994f3a1baa8ed5f2da5bc2cfd5e12a7aafc66 10.80.10.6:6379@16379 slave 06b9b4dd60735bfbb2cafb6b1280d6807972542d 0 1701517036930 2 connected
a9a41ea426cb17d7823ef422e106c54f31c057cd 10.80.10.5:6379@16379 slave 639039e161e92f000642921488cf977db0d53e98 0 1701517037936 1 connected
639039e161e92f000642921488cf977db0d53e98 10.80.10.1:6379@16379 myself,master - 0 1701517037000 1 connected 0-5460