Redis安装(单机及各类集群,阿里云) (5)

PS:页面中显示了哨兵监控的Redis集群master(哨兵可以监控多个Redis集群),对应Redis集群master0的相关信息(如name,状态,主服务器ip:port,以及从服务器数量,对应哨兵数量)等。

哨兵集群的应用

哨兵集群在应用中的使用与哨兵类似,不过这次需要在应用中配置哨兵集群(即配置多个哨兵地址)。

扩展

忍不住多说两句。

哨兵的持久化信息是保存在哨兵配置中的。

哨兵之间的通信是通过Redis的pubsub机制实现的(包括互相发现)。详见:

分片集群(多主多从的混合架构)

前面哨兵说得再骚气,也逃不过一个瓶颈,那就是Redis写瓶颈。毕竟是一主多从的。

所以当写压力超过Redis单例上限时,就需要Redis分片集群了。毕竟多主可以多个Redis主实例进行写操作,所以可以突破主从架构的写瓶颈。

当然多主多从的混合架构,才是目前的主流(即每个主,都有从服务器用于确保可用性)。

而混合架构会比单纯的多主无从架构,复杂一些。所以这里直接上多主多从的混合架构。

配置修改

为了开启分片集群,需要修改每个Redis的配置(即之前的redis.conf)

# 配置文件进行了精简,完整配置可自行和官方提供的完整conf文件进行对照。端口号自行对应修改 #后台启动的意思 daemonize yes #端口号(如果同一台服务器上启动,注意要修改为不同的端口) port 6379 # IP绑定,redis不建议对公网开放,直接绑定0.0.0.0没毛病。这里直接外网测试吧,比较方便,生产环境不要这样。 #bind 0.0.0.0 # 这个文件会自动生成(如果同一台服务器上启动,注意要修改为不同的端口)。多台服务器,直接默认即可 #pidfile /var/run/redis_6379.pid # 关闭保护模式(默认是开启的) protected-mode no # 新增配置 # 数据保存目录 dir /developer/redis/data # 开启AOF appendonly yes # just for cluster # 开启集群 cluster-enabled yes # 集群配置会自动生成在上述的data目录 cluster-config-file cluster_node_00.conf # 集群节点失联时长判断 cluster-node-timeout 5000 # 如果是在单台集群部署集群,需要设置pidfile。这里由于每个服务器都只有一个实例,故采用默认设置(6379)

上述新增配置,均有注释。这里简单提一下,这个配置只是令单个Redis实例有了成为Redis集群实例的资格。当这些Redis实例构成集群时,集群的配置信息会由集群生成,并由每个Redis实例保存至配置中设置的目录中。

这里简单展示一下,集群生成的配置(切记,这个配置只有集群启动后才有。这里只是提前展示一下):

node0 2e1714431f76910db0e1808ce3a3a9b645d2c38f 172.26.40.225:6379@16379 master - 0 1577441663610 7 connected 0-99 10923-16383 cf755c2ca1757c1828b8da972fc7841305b9b41f 172.26.40.224:6379@16379 master - 0 1577441665000 2 connected 5461-10922 29c4fc9d4807c1e25a56b1cc0c9387ba1e6f5831 172.26.40.226:6379@16379 slave 45c1607ecf3d80f08cf6056d53f73a529ffc17de 0 1577441664000 1 connected 7aaa3b4a7dc9ad6c2348f9d6227c4c555e24f3fb 172.26.40.228:6379@16379 slave 2e1714431f76910db0e1808ce3a3a9b645d2c38f 0 1577441665615 7 connected 24c8fefdb293087adb40eaa45cd9213a8d7d5191 172.26.40.227:6379@16379 slave cf755c2ca1757c1828b8da972fc7841305b9b41f 0 1577441664613 5 connected 45c1607ecf3d80f08cf6056d53f73a529ffc17de 172.26.40.223:6379@16379 myself,master - 0 1577441664000 1 connected 100-5460 vars currentEpoch 7 lastVoteEpoch 0 node1 2e1714431f76910db0e1808ce3a3a9b645d2c38f 172.26.40.225:6379@16379 master - 1577441665696 1577441663000 7 connected 0-99 10923-16383 45c1607ecf3d80f08cf6056d53f73a529ffc17de 172.26.40.223:6379@16379 master - 0 1577441664000 1 connected 100-5460 29c4fc9d4807c1e25a56b1cc0c9387ba1e6f5831 172.26.40.226:6379@16379 slave 45c1607ecf3d80f08cf6056d53f73a529ffc17de 0 1577441664687 1 connected 24c8fefdb293087adb40eaa45cd9213a8d7d5191 172.26.40.227:6379@16379 slave cf755c2ca1757c1828b8da972fc7841305b9b41f 0 1577441664000 5 connected 7aaa3b4a7dc9ad6c2348f9d6227c4c555e24f3fb 172.26.40.228:6379@16379 slave 2e1714431f76910db0e1808ce3a3a9b645d2c38f 1577441665696 1577441663000 7 connected cf755c2ca1757c1828b8da972fc7841305b9b41f 172.26.40.224:6379@16379 myself,master - 0 1577441663000 2 connected 5461-10922 vars currentEpoch 7 lastVoteEpoch 0 node5 7aaa3b4a7dc9ad6c2348f9d6227c4c555e24f3fb 172.26.40.228:6379@16379 myself,slave 2e1714431f76910db0e1808ce3a3a9b645d2c38f 0 1577441661000 6 connected cf755c2ca1757c1828b8da972fc7841305b9b41f 172.26.40.224:6379@16379 master - 1577441665165 1577441663696 2 connected 5461-10922 2e1714431f76910db0e1808ce3a3a9b645d2c38f 172.26.40.225:6379@16379 master - 0 1577441663000 7 connected 0-99 10923-16383 45c1607ecf3d80f08cf6056d53f73a529ffc17de 172.26.40.223:6379@16379 master - 0 1577441664000 1 connected 100-5460 24c8fefdb293087adb40eaa45cd9213a8d7d5191 172.26.40.227:6379@16379 slave cf755c2ca1757c1828b8da972fc7841305b9b41f 0 1577441664665 5 connected 29c4fc9d4807c1e25a56b1cc0c9387ba1e6f5831 172.26.40.226:6379@16379 slave 45c1607ecf3d80f08cf6056d53f73a529ffc17de 0 1577441664163 1 connected vars currentEpoch 7 lastVoteEpoch 0 启动Redis实例

在配置完成后,需要将每个组成Redis集群的实例,通过以下指令,分别启动。

/developer/redis-5.0.3/src/redis-server /developer/redis/conf/redis.conf

当然,集群启动后,也还是可以动态增删节点的。所以不必太过担心。

这里的启动与验证,与之前Redis启动是一样的,这里不再赘述。

创建集群

在集群基本构成的各个Redis实例节点都正常启动后,接下来就是将它们串联起来,构成Redis集群。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyywxf.html