1. 安装
- yum install epel-release.noarch -y
- yum install Redis -y
2. 配置主从
主:
- VIM /etc/Redis.conf #修改配置文件
- bind 10.1.1.111 #修改监听 IP
- requirepass 233233 #添加密码
从:
- VIM /etc/Redis.conf #修改配置文件
- bind 10.1.1.112 #修改监听 IP
- slaveof 10.1.1.111 6379 #指定主的 ip 和端口
- masterauth 233233 # 指定主的密码
另一台从也这个配置
- systemctl start Redis #同时启动三台主机
- Redis-cli -h 10.1.1.111 -a 233233 #登陆主服务器
- 10.1.1.111:6379> INFO replication #查看主从信息
- #Replication
- role:master
- connected_slaves:2
- slave0:ip=10.1.1.112,port=6379,state=online,offset=1135,lag=0
- slave1:ip=10.1.1.113,port=6379,state=online,offset=1135,lag=1
- master_repl_offset:1135
- repl_backlog_active:1
- repl_backlog_size:1048576
- repl_backlog_first_byte_offset:2
- repl_backlog_histlen:1134
- 10.1.1.111:6379>
在主服务器创建一个键值
- 11.10.1.1.111:6379> set ID 001
- OK
- 10.1.1.111:6379> get ID
- "001"
- 10.1.1.111:6379>
切换到从服务器查看
- [[email protected] ~]# Redis-cli -h 10.1.1.112 -a 233233 #登陆 112 服务器
- 10.1.1.112:6379> get ID #查看 ID 键值
- "001"
- 10.1.1.112:6379>
命令配置主从 (命令配置会自动同步到配置文件)
- [[email protected] ~]# Redis-cli -h 10.1.1.233
- 10.1.1.233:6379> slaveof 10.1.1.111 6379
- OK
- 10.1.1.233:6379> config set masterauth 233233
- OK
- 10.1.1.233:6379>
登陆到主服务器查看主从
- 10.1.1.111:6379> INFO replication
- # Replication
- role:master
- connected_slaves:3
- slave0:ip=10.1.1.112,port=6379,state=online,offset=2602,lag=1
- slave1:ip=10.1.1.113,port=6379,state=online,offset=2602,lag=1
- slave2:ip=10.1.1.233,port=6379,state=online,offset=2602,lag=1
- master_repl_offset:2602
- repl_backlog_active:1
- repl_backlog_size:1048576
- repl_backlog_first_byte_offset:2
- repl_backlog_histlen:2
- # 可以看到, 这边从服务器已经有三个了
Redis 主从复制相关配置
下面是 Redis 主从复制场景的一些可调参数, 需要根据实际环境调整
slave-serve-stale-data yes : 是否可以把不新鲜的数据服务与客户端
slave-read-only yes : 从节点只读, 启用 slaveof 定义后才生效
repl-diskless-sync no : 是否同时向多个从节点同时发数据
repl-diskless-sync-delay 5 : 发送的延迟时间
repl-ping-slave-period 10 探测从节点状态
repl-timeout 60 探测节点超时时间
repl-disable-tcp-nodelay no : 启用 nodelay
repl-backlog-size 1mb
slave-priority 100 : 从节点优先级, 复制集群中, 主节点故障时, sentinel 应用场景中的主节点选举时使用的优先级; 数字越小优先级越高, 但 0 表示不参与选举;
min-slaves-to-write 3: 主节点仅允许其能够通信的从节点数量大于等于此处的值时接受写操作;
min-slaves-max-lag 10: 从节点延迟时长超出此处指定的时长时, 主节点会拒绝写入操作;
3. 高可用
先找一台从服务器把优先级调高
- VIM /etc/Redis.conf #修改 112 从服务器的配置
- slave-priority 110 #调到 110, 默认 100
- systemctl restart Redis #重启一下
找三台服务器 配置 sentinel 服务
- VIM /etc/Redis-sentinel.conf
- bind 10.1.1.112 #监听 IP
- sentinel monitor mymaster 10.1.1.111 6379 2 #设置主服务器 ip
- sentinel auth-pass mymaster 233233 #主服务器的认证
- # 其他两台除了 IP 不一样其他 一样配置
查看
先将主服务器的 Redis 的服务给停掉
- Redis-cli -h 10.1.112 -p 26379 #登陆 sentinel 服务
- 1.1.112:26379> SENTINEL masters #查看主服务器状态
- ) 1) "name"
- ) "mymaster"
- ) "ip"
- ) "10.1.1.113"
- ) "port"
- ) "6379"
- ) "runid"
- ) "7ee5fe0e808bd06638f0f4c365d95c7694c6770c"
- ) "flags"
- ) "master"
上面我们已经能看到主的已经转移到 113 主机了, 打开其他从服务器配置可以发现, 配置文件里指向 10.1.1.111 为主的已经被改成了 113 了.
- Redis-cli -h 10.1.1.112 -a 233233 #等 112 的从服务器
- 10.1.1.112:6379> iNFO replication
- # Replication
- role:slave
- master_host:10.1.1.113
- master_port:6379
- master_link_status:down
- master_last_io_seconds_ago:-1
- master_sync_in_progress:0
- slave_repl_offset:1
- master_link_down_since_seconds:1574609981
- slave_priority:110
- slave_read_only:1
- connected_slaves:0
- master_repl_offset:0
- repl_backlog_active:0
- repl_backlog_size:1048576
- repl_backlog_first_byte_offset:0
- repl_backlog_histlen:0
- 10.1.1.112:6379>
- # 上面可以看到从 从服务器 112 主已经变成了 113 服务器了
来源: http://www.bubuko.com/infodetail-3302873.html