Redis简单集群
前提准备:
1>>>开放云服务器web控制台对应的端口和对应防火墙端口
2>>>2台阿里云服务器(公网IP:120.25.172.196,120.78.177.101)
一台腾讯云服务器(公网IP:111.231.106.5)
其中(120.25.172.196作为主,其他两台作为从)
第一步:先把单机Redis跑起来,分别先启动三台没有集群的Redis
主要修改3个配置如下:
bind 0.0.0.0 (原本是127.0.0.1,bind不是绑定意思而是允许哪个IP访问这个跑起来redis,0.0.0.0代表任意IP)
requirepass xu123456 (设置密码,客户端需要用,在小黑窗打命令如下redis-cli -a xu123456)
masterauth xu123456 (设置从节点追随主节点密码,设成和上面一样)
》》》带配置启动Redis服务:redis-server ~/redisfile/redis.conf
第二步:在其中从节点客户端打开redis
在120.78.177.101 进入redis-cli 客户端小黑窗后,执行replicaof 120.25.172.196 6379 追随master
image.png image.png在111.231.106.5 进入redis-cli 客户端小黑窗后,执行replicaof 120.25.172.196 6379 追随master
额外:上面集群了,当主节点挂了的时候,需要手动维护把从节点变成主节点,把从节点变成主节点命令为:replicaof no one,如果有哨兵机制那么,大半夜挂了的话,可以程序代替人,进行切换。哨兵主要起到监控和故障转移作用
设置哨兵步骤
1,redis-server 26379.conf --sentinel
image.png
其中26379.conf 只有两行:
port 26379
sentinel monitor mymaster 120.25.172.196 6379 2
(一)如果你设置了密码哨兵也要再加上一行否则一直sdown(血的教训(⊙﹏⊙)),成功以后有slave日志
sentinel auth-pass mymaster xu123456
image.png
(二)哨兵直接的通信默认是内网IP,所以无法通信需要公开外网IP,需要再加一行配置
sentinel announce-ip "120.25.172.196" #这个是公布Redis 对外用这个公网IP
具体解释:mymaster任意给的名字,127.0.0.1 6379 代表监控的服务,2代表选举势力
假如集群中有5个sentinel,票数被设置为2,当2个sentinel认为一个master已经不可用了以后,将会触发failover,但是,进行failover的那个sentinel必须先获得至少3个sentinel的授权才可以实行failover。
如果票数被设置为5,要达到ODOWN状态,必须所有5个sentinel都主观认为master为不可用,要进行failover,那么得获得所有5个sentinel的授权。