环境:Centos8+Redis7.02
Centos 8 ip:192.168.137.22
文章目录
配置redis主从
新建文件夹redis,获取安装包
wget http://download.redis.io/releases/redis-7.0.2.tar.gz
解压安装包
tar -zxvf redis-7.0.2.tar.gz
cd redis-7.0.2
编译并安装
make
cd src
make install
配置主redis
[root@server1 redis-7.0.2] vim redis.conf
# bind 127.0.0.1 // 注释掉这一行
protected-mode no // 关闭保护模式
port 6379 // redis 端口
配置从redis
[root@server1 redis-7.0.2]# cd ~
[root@server1 ~]# mkdir config
[root@server1 ~]# cp ~/redis-7.0.2/redis.conf config/ 6380.conf
[root@server1 ~]# cp ~/redis-7.0.2/redis.conf config/6381.conf
[root@server1 redis-7.0.2] vim 6380.conf
[root@server1 redis-7.0.2] vim 6381.conf
6380.conf配置修改
# bind 127.0.0.1 // 注释掉这一行
protected-mode no // 关闭保护模式
port 6380 // redis 端口
replicaof 192.168.137.22 6379 // 配置 master 的IP和端口
6381.conf配置修改
# bind 127.0.0.1 // 注释掉这一行
protected-mode no // 关闭保护模式
port 6381 // redis 端口
replicaof 192.168.137.22 6379 // 配置 master 的IP和端口
验证配置是否成功
//启动主服务端
redis-server ~/redis7.0.2/redis.conf
//启动从服务端
redis-server ~/config/redis-6380.conf
redis-server ~/config/redis-6381.conf
//从主客户端登录
redis-cli -p 6379
//从从客户端登录
redis-cli -p 6380
redis-cli -p 6381
验证结果
主客户端
从客户端
set前
set后
查看配置 info replication
127.0.0.1:6379> info replication
# Replication
role:master //角色为master
connected_slaves:2 //两个从
slave0:ip=127.0.0.1,port=6380,state=online,offset=432280,lag=0
slave1:ip=127.0.0.1,port=6381,state=online,offset=432280,lag=0
master_failover_state:no-failover
master_replid:e0fdb9166c3b0e0c0a96b943ea8a6953883f3b43
master_replid2:04e7a667558cbc8fb9823d08bf73a91cfc27a4ce
master_repl_offset:432280
second_repl_offset:432199
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:432199
repl_backlog_histlen:82
配置哨兵
哨兵没有主从概念,每一个哨兵都是一样的,所以配置三份除了端口信息其余都一样的就可以
[root@server1 redis-7.0.2] vim /redis-7.0.2/sentinel.conf
port 26379 // 哨兵端口
daemonize yes // 开启守护进程
sentinel monitor mymaster 192.168.137.22 6379 2 // 监控 master ip 端口
log 6379.log //log文件名
sentinel-6380.conf
port 26380 // 哨兵端口
sentinel-6381.conf
port 26381 // 哨兵端口
log的话 所有的log在一个log就放同一个log文件,想分开记录就放多个
然后关闭并重启所有的redis-server(只展示6379的指令)
redis-cli -p 6379 shutdown //关闭指令
redis-server ~/redis-7.0.2/redis.conf //开启
ps -aux|grep redis
kill //杀掉主redis服务端
然后进入6380.conf
127.0.0.1:6380>info replication
发现主服务器变了,变成了6381端口对应的redis服务器(这个谁变由raft算法决定)
查看结果
然后进log查看
vim sentinel_26379.log
//投票
1075284:X 10 Oct 2022 11:30:02.540 # +vote-for-leader 616d66ddb5fde8a2a0314e67a1c733dba217ac71 1
1075284:X 10 Oct 2022 11:30:02.540 * +sentinel-address-switch master mymaster 192.168.137.22 6379 ip 192.168.137.22 port 26381 for 616d66ddb5fde8a2a0314e67a1c733dba217ac71
1075284:X 10 Oct 2022 11:30:02.544 * Sentinel new configuration saved on disk
1075284:X 10 Oct 2022 11:30:02.631 * +sentinel-address-switch master mymaster 192.168.137.22 6379 ip 192.168.137.22 port 26380 for 616d66ddb5fde8a2a0314e67a1c733dba217ac71
1075284:X 10 Oct 2022 11:30:02.637 * Sentinel new configuration saved on disk
1075284:X 10 Oct 2022 11:30:02.926 * Sentinel new configuration saved on disk
1075284:X 10 Oct 2022 11:30:02.926 # +new-epoch 2
//没选举出来重新投票
1075284:X 10 Oct 2022 11:30:02.931 * Sentinel new configuration saved on disk
1075284:X 10 Oct 2022 11:30:02.931 # +vote-for-leader 616d66ddb5fde8a2a0314e67a1c733dba217ac71 2
1075284:X 10 Oct 2022 11:30:03.904 # +config-update-from sentinel 616d66ddb5fde8a2a0314e67a1c733dba217ac71 192.168.137.22 26380 @ mymaster 192.168.137.22 6379
//投出来以后 6381变成了新的主
1075284:X 10 Oct 2022 11:30:03.904 # +switch-master mymaster 192.168.137.22 6379 192.168.137.22 6381
1075284:X 10 Oct 2022 11:30:03.904 * +slave slave 192.168.137.22:6380 192.168.137.22 6380 @ mymaster 192.168.137.22 6381
截图如下
到这,我们的主从模式+哨兵模式的redis就搭建成功