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服务
10.1.1.112:26379> SENTINEL masters #查看主服务器状态
1) 1) "name"
2) "mymaster"
3) "ip"
4) "10.1.1.113"
5) "port"
6) "6379"
7) "runid"
8) "7ee5fe0e808bd06638f0f4c365d95c7694c6770c"
9) "flags"
10) "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服务器了
原文地址:https://blog.51cto.com/13620944/2453118