redis集群搭建(三主三从)

redis集群搭建(三主三从)



一、环境准备

每台机器有两个节点,一共六个节点(三主三从),主节点和从节点不在同一台机器上,有条件当然可以选择使用6台机器

地址端口
172.24.8.26379 6380
172.24.8.36379 6380
172.24.8.36379 6380

二、环境搭建

首先确保防火墙处于关闭状态否则创建集群时候会报错
在这里插入图片描述
这种情况只需要关闭防火墙即可

systemctl stop firewalld && systemctl disable firewalld

安装语言环境

yum -y install gcc gcc-c++

创建目录
mkdir -p /data/redis/redis_cluster/6379
mkdir -p /data/redis/redis_cluster/6380
拷贝bin/redis.conf 6379和6380的目录下面
并分别修改他们的端口
在这里插入图片描述
redis.conf 配置文件

bind 172.24.8.2
#requirepass oa123456
daemonize yes
pidfile /var/run/redis_6379.pid
logfile ""
stop-writes-on-bgsave-error no
dir ./
maxmemory 1GB
maxmemory-policy allkeys-lru
appendonly no
appendfilename "appendonly.aof"
no-appendfsync-on-rewrite no
aof-use-rdb-preamble yes
#新增
cluster-enabled  yes
cluster-config-file nodes_6379.conf
cluster-node-timeout  15000

protected-mode yes
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300

supervised no

loglevel notice

databases 16
always-show-logo yes

rdbcompression yes
rdbchecksum yes

replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
replica-priority 100
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
appendfsync everysec
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
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

stream-node-max-bytes 4096
stream-node-max-entries 100

activerehashing yes

client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60

hz 10

dynamic-hz yes

aof-rewrite-incremental-fsync yes

rdb-save-incremental-fsync yes

启动redis

bin/redis-server redis_cluster/6379/redis.conf
bin/redis-server redis_cluster/6380/redis.conf

三、创建集群

bin/redis-cli --cluster create 172.24.8.2:6379 172.24.8.2:6380 172.24.8.3:6379 172.24.8.3:6380 172.24.8.4:6379 172.24.8.4:6380 --cluster-replicas 1 -a oa123456

出现绿色表示集群创建成功在这里插入图片描述

在这里插入图片描述
登录进去并查看集群各节点

bin/redis-cli -c -h 172.24.8.2 -p 6379
cluster nodes
cluster info

在这里插入图片描述
验证集群
在这里插入图片描述

四、设置密码

172.24.8.2:6379> config set requirepass oa123456
OK
172.24.8.2:6379> config rewrite
(error) NOAUTH Authentication required.
172.24.8.2:6379> auth oa123456
OK
172.24.8.2:6379> config rewrite
OK
172.24.8.2:6379> 

Redis 出现(error)NOAUTH Authentication required
使用密码登录任意节点

bin/redis-cli -c -h 172.24.8.4 -p 6380 -a oa123456

在这里插入图片描述

五、加入到开机自启动服务

第一个redis端口6379

vim /etc/systemd/system/redis6379.service

内容添加如下

[Unit]
Description=redis6379-server
After=network.target
[Service]
Type=forking
ExecStart=/data/redis/bin/redis-server /data/redis/redis_cluster/6379/redis.conf
PrivateTmp=true
[Install]
WantedBy=multi-user.target

启动与停止与开机自启动

systemctl daemon-reload
systemctl start redis6379.service
systemctl stop redis6379.service
systemctl enable redis6379.service

第二个redis端口6380

vim /etc/systemd/system/redis6380.service

内容添加如下

[Unit]
Description=redis6380-server
After=network.target
[Service]
Type=forking
ExecStart=/data/redis/bin/redis-server /data/redis/redis_cluster/6380/redis.conf
PrivateTmp=true
[Install]
WantedBy=multi-user.target

启动与停止与开机自启动

systemctl daemon-reload
systemctl start redis6380.service
systemctl stop redis6380.service
systemctl enable redis6380.service

六、故障处理

发现有四个节点不在集群当中了,大概可能和设置密码有关系。
在这里插入图片描述

cluster forget 

在这里插入图片描述

bin/redis-cli -c -h 172.24.8.2 -a oa123456 --cluster add-node 172.24.8.3:6379 172.24.8.3:6380 --cluster-slave --cluster-master-id 7ff17164a1dd665448a49f6526ea
33d036709b34

搭建集群时报错[ERR] Not all 16384 slots are covered by nodes.
其原因:
这个往往是由于主node移除了,但是并没有移除node上面的slot,从而导致了slot总数没有达到16384,其实也就是slots分布不正确。所以在删除节点的时候一定要注意删除的是否是Master主节点。
解决办法:
1、使用如下命令来修复集群

# redis-cli --cluster fix host:port
bin/redis-cli --cluster fix 172.24.8.3:6379 -a oa123456

2、修复完成后再用check命令检查下是否正确,其命令如下:

# redis-cli --cluster check host:port
bin/redis-cli --cluster check 172.24.8.3:6379 -a oa123456
redis-cli --cluster check 127.0.0.1:6379

3、如果分布不均匀那可以使用下面的方式重新分配slot

# redis-cli --cluster reshar host:port
redis-cli --cluster reshard 127.0.0.1:6379

握手

echo 'cluster meet 172.24.8.3 6379' | /data/redis/bin/redis-cli -h 172.24.8.2 -p 6379 -a "oa123456"
  • 15
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值