• Redis集群架构搭建——主从、哨兵、集群


    上一篇文章Ubuntu上通过源码方式安装Redis已经介绍了如何安装redis,在这篇文章中,将会教大家搭建Redis的几种高可用的架构:主从架构、哨兵集群、Cluster集群。

    本篇文章使用的redis版本为6.2.13,不同版本的配置可能有略微的区别,比如replicaof/slaveof。

    因为设备有限,只能在一台Ubuntu虚拟机上通过不同端口启动多个redis服务,

    注意:

    1、配置文件中配置的logfile、dir后面的路径要提前创建好

    2、启动redis的命令不要直接复制,否则可能会提示“没有那个文件或目录”,自己手敲的命令就可以正常执行(血的教训)

    目录

    一、搭建主从架构

    搭建主节点

    复制配置文件

    修改配置文件

    启动主节点

    搭建从节点

    复制配置文件

    修改配置文件 

    启动从节点

    二、搭建哨兵集群架构

    增加一个从节点

    搭建哨兵节点

    复制sentinel.conf

    修改设置

    启动哨兵节点

    查看集群信息

    测试哨兵选主

    三、搭建高可用集群架构

    创建所有节点

    创建一个集群

    四、集群水平扩展

    添加集群节点

    设置为从节点

    删除集群节点

    节点重新分片


    一、搭建主从架构

    主从架构的redis集群模式最低配置是一个master一个slave,所以要启动两个redis服务。

    搭建主节点

    复制配置文件

    切换到redis安装目录,复制一份配置文件

    cp redis.conf redis_6379.conf

    如下图所示:

    修改配置文件

    修改一下redis_6379.conf,通过Ctrl+F搜索并修改以下配置。

    1. # bind 127.0.0.1 -::1
    2. protected-mode no
    3. # 设置启动端口号
    4. port 6379
    5. # 设置后台启动
    6. daemonize yes
    7. # 进程ID保存的文件
    8. pidfile /var/run/redis_6379.pid
    9. # 设置日志文件名
    10. logfile "redis_6379.log"

    启动主节点

    按照上一步修改完redis_6379.config之后,通过下面的命令启动redis

    ./src/redis-server redis_6379.conf

    如图,查看日志文件,redis成功启动了

    搭建从节点

    复制配置文件

    切换到redis安装目录,复制一份配置文件,直接复制之前的6379文件,懒得重复修改一些设置。

    cp redis_6379.conf redis_6389.conf

    修改配置文件 

    修改一下redis_6389.conf,通过Ctrl+F搜索并修改以下配置。

    1. # 设置启动端口号
    2. port 6389
    3. # 从节点只能处理读操作,当前版本redis默认开启的配置
    4. replica-read-only yes
    5. # 配置redis主节点ip地址和端口号
    6. replicaof 192.168.254.128 6379
    7. # 进程ID保存的文件
    8. pidfile /var/run/redis_6389.pid
    9. # 保存数据的文件地址
    10. dir /usr/local/redis/6389/data
    11. # 日志文件的文件名
    12. logfile "/usr/local/redis/6389/logs/redis_6389.log"

    注意:为了避免文件找不到问题,需要先在/usr/local下创建对应的目录

    /redis/6389/data

    /redis/6389/logs

    启动从节点

    通过以下命令启动从节点

    ./src/redis‐server redis_6389.conf

    如下图,slave节点成功启动,并从主节点6379同步了数据。

    然后在主节点设置几个key,看一下是否会同步到从节点:

    通过redis-cli命令连接主节点(默认连接的是端口号是6379的redis节点),可以通过-p指定端口号。第一次使用redis-cli可能会提示安装redis-tools,复制命令回车即可。

    设置一个name

    从节点上获取name

    至此,redis主从架构的搭建就圆满完成了。

    二、搭建哨兵集群架构

    哨兵集群架构其实就是在主从架构的基础上,引入了哨兵节点,哨兵不处理客户端的读写请求,只负责监控主节点和从节点,当发现主节点挂了,会重新选举一个主节点,选举主节点的过程是通过多个哨兵投票得到的,只有超过半数的哨兵同意选举才能成立,所以哨兵的数量要设置成奇数,防止平票重新选举的情况发生。因此,哨兵集群架构最少要有3个哨兵节点。

    增加一个从节点

    在第一节主从架构的基础上,再搭建一个redis节点6399。

    从6389节点复制一份配置文件

    cp redis_6389.conf redis_6399.conf

    然后修改下面这些配置就可以了(Ctrl+F搜索替换6389为6399,能偷懒就偷懒~)

    1. port 6399
    2. pidfile /var/run/redis_6399.pid
    3. logfile "/usr/local/redis/6399/logs/redis_6399.log"
    4. dir /usr/local/redis/6399/data

    然后输入命令启动

    ./src/redis‐server redis_6399.conf

    同样的,它会从主节点6379同步数据。

    搭建哨兵节点

    复制sentinel.conf

    cp sentinel.conf sentinel_6380.conf 

    修改设置

    1. port 6380
    2. daemonize yes
    3. logfile "/usr/local/redis/6380/logs/redis_6380.log"
    4. dir /usr/local/redis/6380/data
    5. pidfile /var/run/redis_6380.pid
    6. # 配置主节点ip和端口号,最后一个2表示当哨兵节点中两个通过选举结果时,才设置候选节点为master
    7. # 一般设置成哨兵节点数/2 + 1
    8. sentinel monitor mymaster 192.168.254.128 6379 2

    然后按照类似的方法创建两个哨兵节点6390和6400

    复制一份sentinel_6380.conf配置文件

    cp sentinel_6380.conf sentinel_6390.conf

    替换6380为6390,然后同理创建6400

    启动哨兵节点

    1. src/redis-sentinel sentinel_6380.conf
    2. src/redis-sentinel sentinel_6390.conf
    3. src/redis-sentinel sentinel_6400.conf

    启动完成后,点击任意一个配置文件,发现文件末尾多了一段内容。

    查看集群信息

    连接6400端口的哨兵节点,通过redis的info命令查看到整个集群的信息

    1. redis-cli -p 6400
    2. info

    测试哨兵选主

    通过kill命令杀死redis主节点,看一下能否完成新的master选举。

    如上图,主节点已经下线了,连接其他两个从节点中任意一个,例如,连接6389

    发现6389被设置成了主节点

    至此,redis的哨兵集群架构也搭建完成了。

    三、搭建高可用集群架构

    在这里创建一共九个节点,按照1主2从的比例,刚好3组小集群。

    创建所有节点

    第一步:在redis安装目录下创建一个cluster目录,复制一份配置文件

    cp redis.conf ./cluster/redis_6500.conf

    然后修改redis_6500.conf

    1. #bind 127.0.0.1 -::1
    2. protected-mode no
    3. port 6500
    4. daemonize yes
    5. pidfile /var/run/redis_6500.pid
    6. logfile "/usr/local/redis-cluster/6500/logs/redis_6500.log"
    7. dir /usr/local/redis-cluster/6500/data
    8. appendonly yes
    9. # 取消以下设置的注释,并修改对应的值
    10. cluster-enabled yes
    11. cluster-config-file nodes-6500.conf
    12. cluster-node-timeout 15000

    接着,只需要复制/cluster/6500.conf就行了,Ctrl+F搜索替换6500为6501、6502、6503、6504、6505、6506、6507、6508,完成其余节点的创建。

    1. cp ./cluster/redis_6500.conf ./cluster/redis_6501.conf
    2. cp ./cluster/redis_6500.conf ./cluster/redis_6502.conf
    3. cp ./cluster/redis_6500.conf ./cluster/redis_6503.conf
    4. cp ./cluster/redis_6500.conf ./cluster/redis_6504.conf
    5. cp ./cluster/redis_6500.conf ./cluster/redis_6505.conf
    6. cp ./cluster/redis_6500.conf ./cluster/redis_6506.conf
    7. cp ./cluster/redis_6500.conf ./cluster/redis_6507.conf
    8. cp ./cluster/redis_6500.conf ./cluster/redis_6508.conf

    如图所示

    然后尝试启动一下其中任意一个服务,看一下日志是否有报错,保证配置文件没有问题。

    然后,依次启动6501-6508的节点。

    通过ps命令查看到所有节点都启动了

    创建一个集群

    通过命令将刚刚启动的9个节点加入到一个集群中。

    --cluster-replicas指定每个小集群的从节点数量,开头已经说了,是按照3组1主2从的结构搭建集群,所以这里指定的值为2

    ./src/redis-cli --cluster create 192.168.254.128:6500 192.168.254.128:6501 192.168.254.128:6502 192.168.254.128:6503 192.168.254.128:6504 192.168.254.128:6505 192.168.254.128:6506 192.168.254.128:6507 192.168.254.128:6508 --cluster-replicas 2

    如图,前面三个节点被设置成了主节点,因为多个主、从节点都在一台机器上,所以有黄色的Warning。

    根据提示输入yes开始创建集群,如图,集群就搭建好了

    注意:集群模式下连接redis客户端的命令有点不同

     ./src/redis-cli -c -h 192.168.254.128 -p 6505

    -c 表示通过集群模式连接

    -h 指定服务器ip地址

    为了保证节点数据的安全,集群的节点不会全部都部署在在本机,而且主、从节点一般不会是同一个服务器下的redis服务,因为一旦这台机器坏了,那么这个分片的数据将全部丢失。

    因为从节点只负责备份数据,不会处理请求,所以在连接从节点6505执行命令时,会自动重定向到他的主节点6501(6500-6502是主节点,也就是创建集群指定的前3个节点)。

    最后介绍两个命令

    1. cluster info # 查看集群信息
    2. cluster nodes # 查看集群的节点

    至此,Redis的高可用集群也搭建完成了。

    四、集群水平扩展

    在此之前,要在/user/local/redis-cluster目录下创建目录/6509/logs和/6509/data。

    复制一份之前的配置文件

    cp ./cluster/redis_6508.conf ./cluster/redis_6509.conf

    然后Ctrl+F替换

    最后Ctrl + S保存文件内容改变,保存成功右上角会有上传成功的提示。

    然后启动6509节点

    ./src/redis-server ./cluster/redis_6509.conf

    添加集群节点

    当有新的节点添加到cluster集群,默认是master节点,通过add-node命令来添加节点,第一个ip:端口号表示待加入的节点,第二个ip:端口号为集群中任意一个节点。

    添加刚刚创建的6509到集群

    redis-cli --cluster add-node 192.168.254.128:6509 192.168.254.128:6500

    设置为从节点

    连接6509

    redis-cli -c -h 192.168.254.128 -p 6509

    查看集群节点信息

    cluster nodes

     

     设置6509节点的主节点为6500

    cluster replicate 节点ID

    节点ID就是上图红框内的一长串字符串

    cluster replicate cbce6fa89b45e4406db54862fed9c1e452ddba4e

    然后再查看集群节点

    删除集群节点

    可以通过del-node命令删除集群中的节点,第一个参数是节点的ip:端口号,第二个参数是节点的ID

    redis-cli --cluster del-node 192.168.254.128:6509 25c2ccdd1bed9536475e9e1a0b9d17b001654aa1

    当删除主节点时,需要把数据迁移到其他从节点,保证数据不丢失,也就是通过下一个部分给节点重新分片。

    节点重新分片

    redis-cli --cluster reshared 192.168.254.128:6509

    好了,文章就分享到这里了,看完不要点赞+收藏哦~

  • 相关阅读:
    Docker概述与基本使用
    5.4服务器编程基本框架和两种高效的事件处理模式
    windows上搭建llama小型私有模型
    Nacos的注册和使用
    预提交和 Git Hooks:自动化高质量代码
    JVM原理
    开发者,10分钟学会Tomcat ?
    微服务 - Redis缓存 · 数据结构 · 持久化 · 分布式 · 高并发
    分享5款同类软件中的翘楚,属于是WIN10必备良品
    使用Nodejs搭建简单的Web网页并实现公网访问
  • 原文地址:https://blog.csdn.net/heyl163_/article/details/133131912