首页 > 编程知识 正文

redis集群三种方式,redis 集群和哨兵

时间:2023-05-04 01:21:46 阅读:159317 作者:4591

docker构建redis哨兵模式集群1、构建redis 1、2、从集群构建docker网络,执行redis容器以进行容器间的相互通信2、显示主ip地址4、显示主ip地址

一、构建docker网络,构建redis一主二从集群, dockernetworkcreateredis2. redis容器docker run-it-d-- network redis-- restart=always-- name redis-mastis-masted ork redis---restart=always---name redis-slave-1-p 638033606379-p 26380336026339 redis---restart=always 79查看79redis3.master的ip地址[ root @ a liyun~grep IP address ' secondaryipaddresses ' : null,' IP address ' 3360 ' 172.17 ' IPaddress'3360'172.17. 4 .添加第一个slave节点进入redis-slave-1容器内部[ root @ a liyun~~ ] # docker exec-it redis-slave bash root @ 38493 fef3e 003 redis-CLI 127.0.0.133606379 slave of 172.17.0.26379 ok 127.0.0.133606379 info replication 复制角色: slave master _ host :172.17.0.2 master _ port 33606379 master _ link _ status 3360 _ p master _ lt s :0 slave _ repl _ offset :14 slave _ priority 3360100 slave _ read _ only 33601 connected _ slaves 33600 master _ read 23360000000000000000000000000000 master _ repl _ offset :14 second _ repl _ of set 3:14

请注意,已成功添加了第一个备用节点

5 .添加第二个slave节点#进入第二个slave节点(添加成功(root@aliyun ) ) # docker exec-it redis-slave-2/ZJ DDP/bash root @ 7d 4124 EB 4f 7b 333333 redis-CLI 127.0.0.133606379 slave of 172.17.0.0.26379 ok 127.0.0.13360606379 info replicatinfo 复制角色: slave master _ host :172.17.0.2 master _ port 33606379 master _ link _ status 3360 _ p master _ lt s :0 slave _ repl _ offset :42 slave _ priority 3360100 slave _ read _ only 33601 connected _ slaves 33600 master _ read 233600000000000000000000000000000 master _ repl _ offset :42 second _ repl _ of set 3:42 byte _ offset 336043 repl _ backlog _ hist len :0添加成功

登录master查看信息[ root @ a liyun~~ ] # docker exec-it redis-master/ZJ DDP/bash root @ FB 8299058 EAD 3360/data # redis

:6379> info replication# Replicationrole:masterconnected_slaves:2slave0:ip=172.17.0.3,port=6379,state=online,offset=574,lag=1slave1:ip=172.17.0.4,port=6379,state=online,offset=574,lag=1master_replid:afd4ad72b47ce253b15470232f20ae5e4f768b29master_replid2:0000000000000000000000000000000000000000master_repl_offset:574second_repl_offset:-1repl_backlog_active:1repl_backlog_size:1048576repl_backlog_first_byte_offset:1repl_backlog_histlen:574

信息中可以看到两个slave的信息(ip、端口、状态等内容)

7.测试主从同步

在master节点存数据,看slave节点是否能获取到

[root@aliyun ~]# docker exec -it redis-master /zjddp/bashroot@fb8299058ead:/data# redis-cli127.0.0.1:6379> set name 12345OK127.0.0.1:6379> get name"12345"127.0.0.1:6379> exitroot@fb8299058ead:/data# exitexit

进入slave1节点查看数据(同步成功)

[root@aliyun ~]# docker exec -it redis-slave-1 /zjddp/bashroot@38493fef3e03:/data# redis-cli127.0.0.1:6379> get name"12345"127.0.0.1:6379> exitroot@38493fef3e03:/data# exitexit

进入slave2节点查看数据(同步成功)

[root@aliyun ~]# docker exec -it redis-slave-2 /zjddp/bashroot@7d4124eb4f7b:/data# redis-cli127.0.0.1:6379> get name"12345"127.0.0.1:6379> 二、搭建哨兵 1.在每个容器中安装vim,psutils #需要进入容器中执行apt-get updateapt-get install vimapt-get install procps 2.在每个容器中创建哨兵文件 #sentinel.confport 26379daemonize yeslogfile "sentinel.log"sentinel monitor mymaster 172.17.0.2 6379 2

其中,sentinel monitor mymaster 172.17.0.2 6379 2配置的含义是:该哨兵节点监控172.17.0.2:6379这个主节点,该主节点的名称是mymaster,最后的2的含义与主节点的故障判定有关:至少需要2个哨兵节点同意,才能判定主节点故障并进行故障转移

启动哨兵(每个节点都需要启动)

哨兵节点的启动有两种方式,二者作用是完全相同的:

redis-sentinel sentinel.confredis-server sentinel --sentinel

下面可以看到redis-sentinel已经启动

root@7d4124eb4f7b:/data# ps -efUID PID PPID C STIME TTY TIME CMDredis 1 0 0 06:16 pts/0 00:00:11 redis-server *:6379root 1370 0 0 09:02 ? 00:00:01 redis-sentinel *:26379 [sentinel]root 1380 0 0 09:03 pts/1 00:00:00 /zjddp/bashroot 1390 1380 0 09:10 pts/1 00:00:00 ps -ef 3.查看哨兵信息 root@7d4124eb4f7b:/data# redis-cli -p 26379127.0.0.1:26379> info sentinel# Sentinelsentinel_masters:1sentinel_tilt:0sentinel_running_scripts:0sentinel_scripts_queue_length:0sentinel_simulate_failure_flags:0master0:name=mymaster,status=ok,address=172.17.0.2:6379,slaves=2,sentinels=3127.0.0.1:26379> 4.演示故障转移 [root@aliyun ~]# docker stop redis-masterredis-master

随便进入一个slave节点内部

[root@aliyun ~]# docker exec -it redis-slave-2 /zjddp/bashroot@7d4124eb4f7b:/data# redis-cli127.0.0.1:6379> info replication# Replicationrole:slavemaster_host:172.17.0.2master_port:6379master_link_status:down(这里可以看到master状态为down)master_last_io_seconds_ago:-1master_sync_in_progress:0slave_repl_offset:149730master_link_down_since_seconds:14slave_priority:100slave_read_only:1connected_slaves:0master_replid:afd4ad72b47ce253b15470232f20ae5e4f768b29master_replid2:0000000000000000000000000000000000000000master_repl_offset:149730second_repl_offset:-1repl_backlog_active:1repl_backlog_size:1048576repl_backlog_first_byte_offset:43repl_backlog_histlen:149688127.0.0.1:6379> info replication# Replicationrole:slavemaster_host:172.17.0.3(这里可以看到master的ip已经发生了改变)master_port:6379master_link_status:up(状态正常)master_last_io_seconds_ago:1master_sync_in_progress:0slave_repl_offset:150428slave_priority:100slave_read_only:1connected_slaves:0master_replid:c9bea460cf62fdc27109798770e115609594e541master_replid2:afd4ad72b47ce253b15470232f20ae5e4f768b29master_repl_offset:150428second_repl_offset:149731repl_backlog_active:1repl_backlog_size:1048576repl_backlog_first_byte_offset:43repl_backlog_histlen:150386

redis主节点挂掉,两个slave会进行选举,时间为30秒

再将之前的master节点start,会发现之前的master已经成为slave节点

[root@aliyun ~]# docker start redis-master[root@aliyun ~]# docker exec -it redis-master /zjddp/bashroot@fb8299058ead:/data# redis-cli127.0.0.1:6379> info replication# Replicationrole:slavemaster_host:172.17.0.3master_port:6379master_link_status:upmaster_last_io_seconds_ago:1master_sync_in_progress:0

进去当前的master节点看下当前信息

[root@aliyun ~]# docker exec -it redis-slave-1 /zjddp/bashroot@38493fef3e03:/data# redis-cli127.0.0.1:6379> info replication# Replicationrole:masterconnected_slaves:2slave0:ip=172.17.0.4,port=6379,state=online,offset=268053,lag=1slave1:ip=172.17.0.2,port=6379,state=online,offset=268053,lag=1master_replid:c9bea460cf62fdc27109798770e115609594e541master_replid2:afd4ad72b47ce253b15470232f20ae5e4f768b29master_repl_offset:268323second_repl_offset:149731repl_backlog_active:1repl_backlog_size:1048576repl_backlog_first_byte_offset:1repl_backlog_histlen:268323127.0.0.1:6379> info sentinel127.0.0.1:6379> exitroot@38493fef3e03:/data# redis-cli -p 26379127.0.0.1:26379> info sentinel# Sentinelsentinel_masters:1sentinel_tilt:0sentinel_running_scripts:0sentinel_scripts_queue_length:0sentinel_simulate_failure_flags:0master0:name=mymaster,status=ok,address=172.17.0.3:6379,slaves=2,sentinels=3127.0.0.1:26379>

到此就结束了!!!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。