1.安装
yum install epel-release.noarch -y
yum install redis -y
2.配置主从
主:
vim /etc/redis.conf #修改配置文件
bind 10.1.1.111 #修改监听IP
requirepass 233233 #添加密码node
从:
vim /etc/redis.conf #修改配置文件
bind 10.1.1.112 #修改监听IP
slaveof 10.1.1.111 6379 #指定主的ip和端口
masterauth 233233 # 指定主的密码
另外一台从也这个配置web
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>
在主服务器建立一个键值redis
11.10.1.1.111:6379> set ID 001 OK 10.1.1.111:6379> get ID "001" 10.1.1.111:6379>
切换到从服务器查看vim
[root@cs112 ~]# redis-cli -h 10.1.1.112 -a 233233 #登录112服务器 10.1.1.112:6379> get ID #查看ID键值 "001" 10.1.1.112:6379>
命令配置主从 (命令配置会自动同步到配置文件)
[root@web1 ~]# 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>
登录到主服务器查看主从less
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
#能够看到,这边从服务器已经有三个了tcp
下面是redis主从复制场景的一些可调参数,须要根据实际环境调整ide
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 #重启一下ui
找三台服务器 配置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服务器了