Redis三主三从集群搭建三台机器

文章来源:一氧化碳中毒   发布时间:2021-6-20 13:29:46   点击数:
  介绍redis三种模式一、主从模式

Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况。为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结构。下图为一主两从结构。

怎样实现主从复制?1.从服务器初始化时进行全量同步2.初始化完成后执行增量同步优点:实现数据备份,做到读写分离缺点:当主节点发生故障掉线时,需要人工进行:故障转移

二、哨兵模式

可以说是主从复制的升级版本,增加了一个新的角色。由一个或多个哨兵实例组成的哨兵系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器。

Server1掉线后之后:

优点:如果Master异常,则会进行Master-slave转换,自动实现故障转移。将其中一个Slave作为Master,之前的Master重新上线后作为Slave、

缺点:如果是从节点下线了,哨兵是不会对其进行故障转移的,连接从节点的客户端也无法获取到新的可用从节点

三、集群模式

任何两个节点之间都是相互连通的。客户端可以与0任何一个节点相连接,然后就可以访问集群中的任何一个节点。对其进行存取和其他操作。一般集群建议搭建三主三从架构,三主提供服务,三从提供备份功能。每一个节点都存有这个集群所有主节点以及从节点的信息

掉线判断:过程是集群中所有master参与,如果半数以上master节点与某个master节点通信超时(cluster-node-timeout),认为该master节点挂掉.

什么时候整个集群不可用(cluster_state:fail)?(1)如果集群任意master挂掉,且当前master没有slave.集群进入fail状态,(2)如果集群超过半数以上master挂掉,无论是否有slave,集群进入fail状态.

优点:有效的解决了redis在分布式方面的需求遇到单机内存。并发和流量瓶颈等问题时,可采用集群方案达到负载均衡的目的。可实现动态扩容。自动故障转移

缺点:架构新,实践较少今天这里为大家讲解的是集群模式(也称为三主三从模式)先介绍一下,我们的服务器信息(3台服务器,cpu,内存、数据盘等不作要求)

...21master...22slaves1...22slaves2一、上传解压先在每台机器上部署单机redis

1、上传2、解压

[root

masterservers]#pwd/opt/servers[root

masterservers]#tar-zxvfredis-5.0.8.tar.gz-C/opt/servers/

3、安装redis的相关依赖这里三台机器都需要安装

[root

slaves2~]#yum-yinstallgcc-c++tcl

4、进入redis编译

[root

masterservers]#cdredis-5.0.8/[root

masterredis-5.0.8]#makemakeinstall

5、修改redis配置文件创建日志文件cd/opt/servers/redis-5.0.8/mkdir-p/opt/servers/redis-5.0.8/logsmkdir-p/opt/servers/redis-5.0.8/redisdata编辑vimredis.conf

#设置ipbind本机ip#设置让redis开启后可以在后台运行,除非kill-9,如果设置为no,exit后redis就关闭daemonizeyes#保存redis的pid,这是默认路径,可自行修改pidfile/var/run/redis_.pid#保存日志文件logfile"/opt/servers/redis-5.0.8/logs/redis.log"#本地数据库存放路径dir/opt/servers/redis-5.0.8/redisdata#密码设置#主节点密码设置#requirepassabcD配置集群这里先不要设置密码

6、启动

[root

node01redis-5.0.8]#cd/opt/servers/redis-5.0.8/src/[root

node01src]#redis-server../redis.confps-ef

grepredis在这里插入图片描述二、开始将单机模式变成三主三从集群

1、每台创建其中两实例对应的配置文件、日志文件及数据文件的存放目录

mkdir–p/opt/servers/redis-5.0.8/1mkdir–p/opt/servers/redis-5.0.8/mkdir–p/opt/servers/redis-5.0.8/logmkdir–p/opt/servers/redis-5.0.8/redisdata1mkdir–p/opt/servers/redis-5.0.8/redisdata

2、拷贝配置文件将redis.conf分别拷贝到1、中

cp/opt/servers/redis-5.0.8/redis.conf/opt/servers/redis-5.0.8/1

3、修改配置文件vim/opt/servers/redis-5.0.8/1/redis.conf

#设置ipbind本机ip#开启集群模式cluster-enabledyes#设置集群模式config文件(是集群自动创建,用于记录集群节点信息以及持久化参数)cluster-config-filenodes-1.conf#设置让redis开启后可以在后台运行,除非kill-9,如果设置为no,exit后redis就关闭daemonizeyes#设置端口port1#保存redis的pid,这是默认路径,可自行修改pidfile/var/run/redis_1.pid#保存日志文件logfile"/opt/servers/redis-5.0.8/logs/redis-1.log"#本地数据库存放路径dir/opt/servers/redis-5.0.8/redisdata1

cp/opt/servers/redis-5.0.8/1/redis.conf/opt/servers/redis-5.0.8//vim/opt/servers/redis-5.0.8//redis.conf

#设置集群模式config文件(是集群自动创建,用于记录集群节点信息以及持久化参数)cluster-config-filenodes-.conf#设置端口port#保存redis的pid,这是默认路径,可自行修改pidfile/var/run/redis_id#保存日志文件logfile"/opt/servers/redis-5.0.8/logs/redis-og"#本地数据库存放路径dir/opt/servers/redis-5.0.8/redisdata

4、启动先在每台机器上启动

cd/opt/servers/redis-5.0.8/src/redis-server../1/redis.confredis-server..//redis.conf

5、查看集群状态是否正常

[root

masterredis-5.0.8]#ps-ef

grepredisroot:51?00:00:00src/redis-servermaster:1[cluster]root:51?00:00:00src/redis-servermaster:[cluster]root:52pts/:00:00grep--color=autoredis

这里大家注意一下:如果使用5.0版本以上的redis创建集群的命令就有所不同了,原因是因为redis5.0使用redis-cli作为创建集群的命令,使用c语言实现,不再使用ruby语言。6、这里我先为大家直接讲一下redis5.0版本的,后面在为大家扩展5.0以下redis版本,创建集群的方式。

[root

masterredis-5.0.8]#src/redis-cli--clustercreate...21:1...21:...22:1...22:...23:1...23:--cluster-replicas1Performinghashslotsallocationon6nodes...Master[0]-Slots0-Master[1]-Slots-Master[2]-Slots-3Addingreplica...22:to...21:1Addingreplica...23:to...22:1Addingreplica...21:to...23:1M:2cda3eec9cba7dec3a5e3e...21:1slots:[0-](slots)masterS:6f3d94bf87df35ba99ecb92d603...21:replicatesac7ba62e1df2dcfcdeM:cb6e27f0baebce99cbbc3c...22:1slots:[-](slots)masterS:2f77ca17db87a256ca...22:replicates2cda3eec9cba7dec3a5e3eM:ac7ba62e1df2dcfcde...23:1slots:[-3](slots)masterS:bdaee76fffdcddbd1fb2d2...23:replicatescb6e27f0baebce99cbbc3cCanIsettheaboveconfiguration?(typeyestoaccept):yesNodesconfigurationupdatedAssignadifferentconfigepochtoeachnodeSendingCLUSTERMEETmessagestojointheclusterWaitingfortheclustertojoin.........PerformingClusterCheck(usingnode...21:1)M:2cda3eec9cba7dec3a5e3e...21:1slots:[0-](slots)master1additionalreplica(s)S:2f77ca17db87a256ca...22:slots:(0slots)slavereplicates2cda3eec9cba7dec3a5e3eS:bdaee76fffdcddbd1fb2d2...23:slots:(0slots)slavereplicatescb6e27f0baebce99cbbc3cM:cb6e27f0baebce99cbbc3c...22:1slots:[-](slots)master1additionalreplica(s)S:6f3d94bf87df35ba99ecb92d603...21:slots:(0slots)slavereplicatesac7ba62e1df2dcfcdeM:ac7ba62e1df2dcfcde...23:1slots:[-3](slots)master1additionalreplica(s)[OK]Allnodesagreeaboutslotsconfiguration.Checkforopenslots...Checkslotscoverage...[OK]All4slotscovered.

7、登入,并且设置主从的密码

[root

masterredis-5.0.8]#src/redis-cli-hmaster-p1-cmaster:1configsetmasterauthabcDOKmaster:1configsetrequirepassabcDOKmaster:1authabcDOKmaster:1CONFIGrewriteOKmaster:1setname-Redirectedtoslot[]locatedat...22:1OK...22:1keys*1)"name"...22:1master:1authabcDOK#重写配置master:1CONFIGrewriteOKmaster:1setname-Redirectedtoslot[]locatedat...22:1OK...22:1keys*1)"name"#查看集群的详细信息...22:1clusterinfocluster_state:okcluster_slots_assigned:4cluster_slots_ok:4cluster_slots_pfail:0cluster_slots_fail:0cluster_known_nodes:6cluster_size:3cluster_current_epoch:6cluster_my_epoch:3cluster_stats_messages_ping_sent:cluster_stats_messages_pong_sent:cluster_stats_messages_meet_sent:5cluster_stats_messages_sent:cluster_stats_messages_ping_received:cluster_stats_messages_pong_received:cluster_stats_messages_meet_received:1cluster_stats_messages_received:...22:1#查看主从之间的关系...22:1clusternodesbdaee76fffdcddbd1fb2d2...23:

slavecb6e27f0baebce99cbbc3c016119818036connectedcb6e27f0baebce99cbbc3c...22:1

2myself,master-016119818043connected-2f77ca17db87a256ca...22:

slave2cda3eec9cba7dec3a5e3e016119818054connectedac7ba62e1df2dcfcde...23:1

2master-connected-32cda3eec9cba7dec3a5e3e...21:1

2master-016119818041connected0-6f3d94bf87df35ba99ecb92d603...21:

slaveac7ba62e1df2dcfcde016119818055connected在这里插入图片描述扩展:

如果你们使用redis的5.0版本以前后可能会出现这个错误:

(error)CLUSTERDOWNHashslotnotserved

1、准备redis-trib.rb的运行环境相关连接:

转载请注明:http://www.lwblm.com/bzbk/12020.html