redis集群
redis-cluster (搭建三主三从)
redis
1.192.168.1.25 192.168.1.26 192.168.1.41
-
配置:
cd /usr/local/redis-3.2.9
创建集群配置文件夹:mkdir redis-cluster
cd redis-cluster
创建集群端口文件夹:mkdir 7001 mkdir 7002
cd 7001
复制配置文件redis.conf:cp /root/svr/redis-3.2.9/redis.conf ./
Redis的log及持久化文件建议存储到磁盘空间较大的目录,本次练习方便存储路径本文件夹下:
3.修改配置文件redis.conf:
// 自己练习使用这个
port 7001
#指定了记录日志的文件
logfile "/usr/local/redis-3.2.9/redis-cluster/7001/redis.log"
#数据目录,数据库的写入会在这个目录。rdb、aof文件也会写在这个目录
dir /usr/local/redis-3.2.9/redis-cluster/7001/
#是否开启集群
cluster-enabled yes
#集群配置文件的名称,每个节点都有一个集群相关的配置文件,持久化保存集群的信息。这个文件并不需要手动配置,这个配置文件有Redis生成并更新,每个Redis集群节点需要一个单独的配置文件,请确保与实例运行的系统中配置文件名称不冲突
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
bind 0.0.0.0
--这个是测试环境数据。
daemonize yes
bind 0.0.0.0
port 7001
tcp-keepalive 0
logfile "/usr/local/redis-3.2.9/redis-cluster/7001/logs/7001.log"
dbfilename dump.rdb
dir /usr/local/redis-3.2.9/redis-cluster/7001
cluster-enabled yes
cluster-config-file nodes-7001.conf
cluster-node-timeout 1500
protected-mode no
tcp-backlog 511
supervised no
pidfile /usr/local/redis-3.2.9/redis-cluster/7001/redis.pid
loglevel notice
databases 16
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
appendonly no
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
#appendfilename "appendonly-7001.aof"
aof-load-truncated yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes
复制redis.conf至7002并修改端口及存储路径
scp其他服务器
scp -r redis-3.2.9/ root@192.168.1.26:/usr/local/
scp -r redis-3.2.9/ root@192.168.1.41:/usr/local/
4.启动redis
分别启动6个redis
/usr/local/redis-3.2.9/bin/redis-server /usr/local/redis-3.2.9/redis-cluster/7001/redis.conf &
/usr/local/redis-3.2.9/bin/redis-server /usr/local/redis-3.2.9/redis-cluster/7002/redis.conf &
5.创建集群
./redis-trib.rb create --replicas 1 192.168.1.25:7001 192.168.1.26:7001 192.168.1.41:7001 192.168.1.25:7002 192.168.1.26:7002 192.168.1.41:7002
- 这里会有报错:
(1)解决RubyGems报错Error installing xxxhttps://blog.whsir.com/post-4743.html
https://rubygems.org/
(2)Connecting to node 192.168.25.138:7000: [ERR] Sorry, can't connect to node 192.168.25.138:7000
参考:https://www.jianshu.com/p/61768f0399b3
关闭防火墙
防火墙状态
firewall-cmd --state
not running
防火墙没开,那就不存在端口被限制的情况
经多方查找,重新启动防火墙,然后再次关闭防火墙,即可
二:连接集群
./redis-cli -p 7001 -c
三:集群结果
master slave
192.168.1.25:7001 -- 192.168.1.26:7002
192.168.1.26:7001 -- 192.168.1.25:7002
192.168.1.41:7001 -- 192.168.1.41:7002
(1)当kill掉192.168.1.41这个主节点的时候。 192.168.1.41:7002从节点会升级为主节点
(2)当其中3个从节点全挂了,集群也不会挂。
(3)当其中2个主节点同时挂了之后,集群会挂。
(4) 当192.168.1.41:7001(主) 与 192.168.1.25:7002(从) 同时挂了之后,集群会挂。(如果一个主节点挂了之后,对应的从节点已经提升为主节点了。。这时再挂其他节点的从节点,集群不会挂)
(5)当192.168.1.41:7001 (主) -- 192.168.1.41:7002(从) 属于一组主从节点,全挂了,这个集群就挂了