Redis集群安装(三主三从一哨兵)

Redis集群安装(三主三从一哨兵)

一,搭建环境

​ 在三台服务器上分别搭建redis并测试是否能启动(搭建方法)

二,Redis cluster三主三从

配置环境变量

vim /etc/profile
#添加如下内容
export REDIS_HOME=/usr/local/redis/redis-6.0.5
export PATH=$PATH:$REDIS_HOME/bin

1.搭建节点

以一台为例子,其他可以节点一样,重复操作即可。建议在三台机器上搭建,一台机器一主一从

①创建文件夹
mkdir -p /usr/local/redis/redis_cluster/6380/conf/ 

mkdir -p /usr/local/redis/redis_cluster/6380/logs/ 

mkdir -p /usr/local/redis/redis_cluster/6380/data/

mkdir -p /usr/local/redis/redis_cluster/6381/conf/

mkdir -p /usr/local/redis/redis_cluster/6381/logs/ 

mkdir -p /usr/local/redis/redis_cluster/6381/data/
②创建配置文件

6380节点

vim /usr/local/redis/redis_cluster/6380/conf/redis.conf

文件内容:

# bind 127.0.0.1 这一行给注释掉,这里的bind指的是只有指定的网段才能远程访问这个redis,注释掉后,就没有这个限制了。
#bind 127.0.0.1
# 设置端口,区分集群中Redis的实例
port 6380
# 后台运行
daemonize yes
# pid进程文件名,以端口号命名
pidfile /var/run/redis-6380.pid
# 日志文件名称,以端口号为目录来区分
logfile /usr/local/redis/redis_cluster/6380/logs/redis.log
# 数据文件存放地址,以端口号为目录名来区分
dir /usr/local/redis/redis_cluster/6380/data
# 启用集群
cluster-enabled yes
# 配置每个节点的配置文件,同样以端口号为名称
cluster-config-file nodes_6380.conf
# 配置集群节点的超时时间
cluster-node-timeout 15000
# 启动AOF增量持久化策略
appendonly yes
# 发生改变,则记录日志
appendfsync always

#900 秒内至少有 1 个 key 被改变
save 900 1
#300 秒内至少有 300 个 key 被改变
save 300 10
#60 秒内至少有 10000 个 key 被改变
save 60 10000
#  后台存储错误停止写。
stop-writes-on-bgsave-error yes
#  存储至本地数据库时(持久化到 rdb 文件)是否压缩数据,默认为 yes
rdbcompression yes
# RDB 文件的是否直接偶像 chcksum
rdbchecksum yes
#  本地持久化数据库文件名,默认值为 dump.rdb
dbfilename dump.rdb
# 密码,注意集群各节点密码要保持一致
requirepass cquisse

6381节点

vim /usr/local/redis/redis_cluster/6381/conf/redis.conf

文件内容:

# bind 127.0.0.1 这一行给注释掉,这里的bind指的是只有指定的网段才能远程访问这个redis,注释掉后,就没有这个限制了。
#bind 127.0.0.1
# 设置端口,区分集群中Redis的实例
port 6381
# 后台运行
daemonize yes
# pid进程文件名,以端口号命名
pidfile /var/run/redis-6381.pid
# 日志文件名称,以端口号为目录来区分
logfile /usr/local/redis/redis_cluster/6381/logs/redis.log
# 数据文件存放地址,以端口号为目录名来区分
dir /usr/local/redis/redis_cluster/6381/data
# 启用集群
cluster-enabled yes
# 配置每个节点的配置文件,同样以端口号为名称
cluster-config-file nodes_6381.conf
# 配置集群节点的超时时间
cluster-node-timeout 15000
# 启动AOF增量持久化策略
appendonly yes
# 发生改变,则记录日志
appendfsync always

#900 秒内至少有 1 个 key 被改变
save 900 1
#300 秒内至少有 300 个 key 被改变
save 300 10
#60 秒内至少有 10000 个 key 被改变
save 60 10000
#  后台存储错误停止写。
stop-writes-on-bgsave-error yes
#  存储至本地数据库时(持久化到 rdb 文件)是否压缩数据,默认为 yes
rdbcompression yes
# RDB 文件的是否直接偶像 chcksum
rdbchecksum yes
#  本地持久化数据库文件名,默认值为 dump.rdb
dbfilename dump.rdb
# 密码,注意集群各节点密码要保持一致
requirepass cquisse

2.设置开机启动

vim /etc/rc.local
#添加如下内容
/usr/local/redis/redis-6.0.5/bin/redis-server /usr/local/redis/redis_cluster/6380/conf/redis.conf
/usr/local/redis/redis-6.0.5/bin/redis-server /usr/local/redis/redis_cluster/6381/conf/redis.conf

如果开机启动不生效,可以执行 chmod +x /etc/rc.d/rc.local

3.启动各个节点,创建集群,检查状态

redis-server /usr/local/redis/redis_cluster/6380/conf/redis.conf
redis-server /usr/local/redis/redis_cluster/6381/conf/redis.conf

查看启动情况

ps -ef|grep redis root 1535085 1 0 18:05 ? 00:00:32 redis-server [ip]6380 [cluster] root 1535625 1 2 18:08 ? 00:01:22 redis-server [ip]:6381 [cluster] root 1546480 19893 0 19:10 pts/0 00:00:00 grep --color=auto redis

创建集群,这里的IP是外网IP,-a后面是密码,2>/dev/null 是将标准错误忽略。要确保加入的节点是empty。如果不为空,连接节点执行flushall \ flushdb\ cluster reset

在Redis集群中,连接节点执行flushall / flushdb命令或者cluster reset命令都会对数据进行清除或者重置,但是它们的作用不一样。 flushall 命令会清空当前Redis 实例中的所有数据库,包括主库和从库中的所有数据,是一个危险的命令,会导致所有数据的丢失. flushdb命令会清空当前Redis实例中指定的数据库,如果没有指定参数,则默认清空的是所有数据库中的数据。 cluster reset命令会使Redis集群回到初始状态,重置集群中所有的节点,包括主节点、从节点和插槽分配情况等,此命令也是一个危险命令,会导致所有数据的丢失。 这些命令通常在进行Redis.集群的测试、部署、维护等工作时使用,但一定要在谨慎的情况下使用,以免造成数据的意外丢失。

redis-cli --cluster create [IP1]:6380 [IP1]:6381 [IP2]:6380 [IP2]:6381 [IP3]:6380 [IP3]:6381 --cluster-replicas 1 -a cquisse  2>/dev/null

检查状态

redis-cli --cluster check [IP1]:6380 -a cquisse 2>/dev/null

xxx.xxx.xxx.xxx:6379 (3a81002e…) -> 0 keys | 5461 slots | 1 slaves. xxx.xxx.xxx.xxx:6380 (dfe7994a…) -> 0 keys | 5461 slots | 1 slaves. xxx.xxx.xxx.xxx:6380 (c4e9009c…) -> 0 keys | 5462 slots | 1 slaves. [OK] 0 keys in 3 masters. 0.00 keys per slot on average.

Performing Cluster Check (using node xxx.xxx.xxx.xxx:6379) M: 3a81002e6a20133d44895f3f0e72e0ee16028ccf xxx.xxx.xxx.xxx:6380 slots:[0-5460] (5461 slots) master 1 additional replica(s) S: 57bfa604ff4c27de83a5c37540078d4262b293fc xxx.xxx.xxx.xxx:6381 slots: (0 slots) slave replicates 3a81002e6a20133d44895f3f0e72e0ee16028ccf S: baabb58a937192d87dbc83518da94f990c9533a6 xxx.xxx.xxx.xxx:6381 slots: (0 slots) slave replicates c4e9009cbe6ea4c2a439777d16021fecd754a2ba M: dfe7994a2457a87fec7409064358d750d48e8e39 xxx.xxx.xxx.xxx:6380 slots:[10923-16383] (5461 slots) master 1 additional replica(s) M: c4e9009cbe6ea4c2a439777d16021fecd754a2ba xxx.xxx.xxx.xxx:6380 slots:[5461-10922] (5462 slots) master 1 additional replica(s) S: 7ba2ab130e5c6917635888ee8577fa5cf3ea2838 xxx.xxx.xxx.xxx:6381 slots: (0 slots) slave replicates dfe7994a2457a87fec7409064358d750d48e8e39 [OK] All nodes agree about slots configuration. Check for open slots… Check slots coverage… [OK] All 16384 slots covered.

至此,集群搭建完成

三,哨兵

1.创建sentinel相关的文件夹
mkdir -p /usr/local/redis/redis_cluster/27001/conf/
mkdir -p /usr/local/redis/redis_cluster/27001/logs/
mkdir -p /usr/local/redis/redis_cluster/27001/data/
2.创建配置文件
cd /usr/local/redis/redis_cluster/27001/conf/
vim sentinel.conf

根据集群状态中的主节点来配置,即 M:开头的

bind 0.0.0.0
port 27001
daemonize yes
pidfile /var/run/redis-sentinel.pid
logfile  /usr/local/redis/redis_cluster/27001/logs/redis-sentinel.log
dir /usr/local/redis/redis_cluster/27001/data

sentinel monitor mymaster1 xxx.xxx.xxx.xxx 6380 2
sentinel monitor mymaster2 xxx.xxx.xxx.xxx 6380 2
sentinel monitor mymaster3 xxx.xxx.xxx.xxx 6380 2

sentinel down-after-milliseconds mymaster1 10000
sentinel down-after-milliseconds mymaster2 10000
sentinel down-after-milliseconds mymaster3 10000

sentinel parallel-syncs mymaster1 1
sentinel parallel-syncs mymaster2 1
sentinel parallel-syncs mymaster3 1

sentinel failover-timeout mymaster1 15000
sentinel failover-timeout mymaster2 15000
sentinel failover-timeout mymaster3 15000

启动哨兵

redis-sentinel /usr/local/redis/redis_cluster/27001/conf/sentinel.conf

查看redis-sentinel进程

ps -ef|grep sentinel
  • 31
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值