Redis集群哨兵部署

Redis 集群

1. 安装 Redis

略~

2. 配置 redis.conf(master)

bind:0.0.0.0
# Redis 默认只允许本机访问,把 bind 修改为 0.0.0.0 表示允许所有远程访问。如果想指定限制访问,可设置对应的 ip。
port:6379
# 监听端口默认为6379,想改其他也行。
protected-mode:no
# 关闭保护模式,可以外部访问。
daemonize:yes
# 设置为后台启动。
logfile:./redis.log
# redis 日志文件,生成后在 bin 目录下可找到。
requirepass:123456
# 设置 redis 连接密码。
masterauth:123456
# slave 服务连接 master 的密码。
dir ./
#redis 工作目录

3. 配置 redis.conf(从)

bind:0.0.0.0
port:6379
protected-mode:no
daemonize:yes
logfile:./redis.log
requirepass:123456
masterauth:123456
replicaof 192.168.2.2 6379 
# 指定当本机为 slave 服务时,设置 master 服务的IP地址及端口,在 redis 启动的时候会自动跟 master 进行数据同步,所以两台从机都这样配置即可。

Redis 哨兵

sentinel.conf (所有哨兵)

//端口默认为26379。
port:26379

//关闭保护模式,可以外部访问。
protected-mode:no

//设置为后台启动。
daemonize:yes

//日志文件。
logfile:./sentinel.log

//指定主机IP地址和端口,并且指定当有2台哨兵认为主机挂了,则对主机进行容灾切换。
sentinel monitor mymaster 192.168.2.2 6379 2

//当在Redis实例中开启了requirepass,这里就需要提供密码。
sentinel auth-pass mymaster 123456

//这里设置了主机多少秒无响应,则认为挂了。
sentinel down-after-milliseconds mymaster 3000

//主备切换时,最多有多少个slave同时对新的master进行同步,这里设置为默认的1。
snetinel parallel-syncs mymaster 1

//故障转移的超时时间,这里设置为三分钟。
sentinel failover-timeout mymaster 180000

启动哨兵

./redis-sentinel /data/redis-5.0.7/etc/sentinel.conf

查看哨兵

redis-cli -p 26379
> info sentinel

容器部署

1.拉去镜像
docker pull redis:latest

2.创建挂载目录
mkdir -r /mnt/redis/conf
mkdir -r /mnt/redis/data

3.修改配置文件
##节点端口
port 6379       
##允许任何来源
bind 0.0.0.0          
## 是为了禁止公网访问redis cache,加强redis安全的。它启用的条件,有两个:1) 没有bind IP 2) 没有设置访问密码 启用后只能够通过lookback ip(127.0.0.1)访问Redis cache,如果从外网访问,则会返回相应的错误信息 
protected-mode no
##开启持久化模式
appendonly yes
appendfilename appendonly.aof
#开启混合持久化
aof-use-rdb-preamble yes
# 文件达到1m时进行重写,然后如果文件大小增长了一倍,也会触发重写。
auto-aof-rewrite-min-size 1mb
auto-aof-rewrite-percentage 100
##AOF 文件和 Redis 命令是同步频率的,假设配置为 always,其含义为当 Redis 执行命令的时候,则同时同步到 AOF 文件,这样会使得 Redis 同步刷新 AOF 文件,造成缓慢。而采用 evarysec 则代表
## 每秒同步一次命令到 AOF 文件。
appendfsync everysec            
#pidfile redis.pid
#进程pid文件,加port以示区分
pidfile /data/redis/data/redis_6379.pid
# 后台运行 ---- docker中使用后台运行将无法启动容器(应该是容器无法检测后台运行进程)
# daemonize yes
databases 20
#设置容器初始化密码
requirepass test1323

4.启动容器
docker run -d -p 6379:6379 --name my_redis  --privileged=true -v /home/egn/redis/conf/redis.conf:/etc/redis/redis.conf -v /home/egn/redis/data:/data redis redis-server /etc/redis/redis.conf

5.修改密码
#进入容器
docker exec -it my_redis /bin/bash
#进入redis客户端
redis-cli
#查看redis密码
config get requirepass
#设置密码
config set requirepass xxx888666