redis 系列27 Cluster高可用 (集群搭建详解 3)

一. Cluster集群说明

  1.1 环境配置

群集IP 节点 密码 槽号
主库172.168.18.201   7000 123456 0 ~ 5000
主库172.168.18.201   7001 123456 5001~10000
主库172.168.18.201   7002 123456 10001~16383
从库 172.168.18.203 7000 123456  
从库 172.168.18.203 7001 123456  
从库 172.168.18.203 7002 123456  

 

  1.2配置介绍

    在搭建并使用Redis集群时,需要在普通的Redis服务下配置redis.conf文件,通过所需的参数配置,成为集群模式下的一个节点。下面是集群配置文件最小参数选项介绍:

    port 7000
    cluster-enabled yes
    cluster-config-file nodes.conf
    cluster-node-timeout 5000
    appendonly yes

    cluster-enabled 选项用于开实例的集群模式,nodes.conf.节点配置文件无须人为修改, 它由 Redis 集群在启动时创建, 并在有需要时自动进行更新。要让集群正常运作至少需要三个主节点,不过在刚开始试用集群功能时, 强烈建议使用六个节点: 其中三个为主节点, 而其余三个则是各个主节点的从节点。

 

二. 主库节点搭建步骤

  (1) 在主库201上,先为集群创建三个文件夹(7000 7001 7002),每个文件夹存放一份redis.conf文件,文件放在redis安装目录下。

    [root@hsr redis]# mkdir cluster-test
    [root@hsr redis]# cd cluster-test
    [root@hsr cluster-test]# mkdir 7000 7001 7002 
    [root@hsr cluster-test]# ls
    7000  7001  7002  

  (2)将原有的redis /bin目录下的redis.conf文件,复制到四个文件夹下

    [root@hsr cluster-test]# cp /usr/local/redis/bin/redis.conf  ./7000
    [root@hsr cluster-test]# cp /usr/local/redis/bin/redis.conf  ./7001
    [root@hsr cluster-test]# cp /usr/local/redis/bin/redis.conf  ./7002

  (3)将三个redis.conf文件配置好,按上面的参数来配置, 以7000的redis.conf为例,相关参数如下:

    [root@hsr 7000]# vim redis.conf
    92 port 7000
    814 cluster-enabled yes
    822 cluster-config-file nodes-7000.conf
    828  cluster-node-timeout 5000
    672 appendonly yes

  (4) 将原有的redis /bin目录下的 redis-server执行文件,复制到 cluster-test 文件夹下,目录结构如下:

    [root@hsr cluster-test]# cp ../bin/redis-server  redis-server
    [root@hsr cluster-test]# ls -l
    总用量 7080
    drwxr-xr-x 2 root root      24 12月 24 11:36 7000
    drwxr-xr-x 2 root root      24 12月 24 11:40 7001
    drwxr-xr-x 2 root root      24 12月 24 11:41 7002
    -rwxr-xr-x 1 root root 3624512 12月 24 11:46 redis-server

  (5) 启动三个主服务节点,以及查看节点进程

    [root@hsr cluster-test]# ./redis-server  ./7000/redis.conf
    1120:C 24 Dec 13:58:03.936 # Configuration loaded
    [root@hsr cluster-test]# ./redis-server  ./7001/redis.conf
    1125:C 24 Dec 13:58:09.412 # Configuration loaded
    [root@hsr cluster-test]# ./redis-server  ./7002/redis.conf

    [root@hsr cluster-test]# ps -ef | grep redis-server
    root       1121      1  0 13:58 ?        00:00:00 ./redis-server *:7000 [cluster]
    root       1126      1  0 13:58 ?        00:00:00 ./redis-server *:7001 [cluster]
    root       1131      1  0 13:58 ?        00:00:00 ./redis-server *:7002 [cluster]

 

三. 从库节点搭建步骤

  (1) 在从库203上,先为集群创建四个文件夹(7000 7001 7002 7003),每个文件夹存放一份redis.conf文件,文件放在redis安装目录下。

    [root@xuegod64 redis]# pwd
    /usr/local/redis
    [root@xuegod64 redis]# mkdir cluster-test
    [root@xuegod64 redis]# cd cluster-test
    [root@xuegod64 cluster-test]# mkdir 7000 7001 7002 
    [root@xuegod64 cluster-test]# ls
    7000  7001  7002  

  (2)将原有的redis 目录下的redis.conf文件,复制到四个文件夹下

    [root@xuegod64 cluster-test]# cp /usr/local/redis/redis.conf  ./7000
    [root@xuegod64 cluster-test]# cp /usr/local/redis/redis.conf  ./7001
    [root@xuegod64 cluster-test]# cp /usr/local/redis/redis.conf  ./7002

  (3)将三个redis.conf文件配置为从节点, 以7000节点为例,参数如下:

     -- 7000的redis.conf
      92 port 7000
      280 slaveof 172.168.18.201 7000
      263 dir "/usr/local/redis/cluster-test/7000"
      813 cluster-enabled no
      821 cluster-config-file nodes-7000.conf
      827  cluster-node-timeout 5000

  (4) 将原有的redis 目录下的 redis-server执行文件,复制到 cluster-test 文件夹下,目录结构如下:

    [root@xuegod64 cluster-test]# cp ../redis-server redis-server
    [root@xuegod64 cluster-test]# ls -l
    总用量 5620
    drwxr-xr-x 2 root root      24 12月 27 16:17 7000
    drwxr-xr-x 2 root root      24 12月 27 16:16 7001
    drwxr-xr-x 2 root root      24 12月 27 16:14 7002
    -rwxr-xr-x 1 root root 5753704 12月 27 16:19 redis-server

  (5) 启动三个从服务节点,以及查看节点进程

    [root@xuegod64 cluster-test]# ls
    7000  7001  7002  dump.rdb  redis-server
    [root@xuegod64 cluster-test]# ./redis-server ./7000/redis.conf
    [root@xuegod64 cluster-test]# ./redis-server ./7001/redis.conf
    [root@xuegod64 cluster-test]# ./redis-server ./7002/redis.conf
    [root@xuegod64 cluster-test]# ps -ef | grep redis-server
    root      50134      1  6 16:51 ?        00:00:04 ./redis-server *:7000
    root      50143      1  4 16:52 ?        00:00:01 ./redis-server *:7001
    root      50149      1  5 16:52 ?        00:00:01 ./redis-server *:7002

  (6) 在主库200上查看各主节点的复制信息

127.0.0.1:7000> info replication
# Replication
role:master
connected_slaves:1
slave0:ip=172.168.18.203,port=7000,state=online,offset=210,lag=1

127.0.0.1:7001> info replication
# Replication
role:master
connected_slaves:1
slave0:ip=172.168.18.203,port=7001,state=online,offset=196,lag=0

127.0.0.1:7002> info replication
# Replication
role:master
connected_slaves:1
slave0:ip=172.168.18.203,port=7002,state=online,offset=84,lag=0

  (7)在从库203上查看从节点的复制信息,以7000从节点为例

    [root@xuegod64 redis]# ls
    appendonly.aof  cluster-test  dump.rdb  redis-benchmark  redis-cli  redis.conf  redis.log  redis-server
    [root@xuegod64 redis]# ./redis-cli -h 127.0.0.1 -p 7000 -a 123456
    127.0.0.1:7000> info replication
    # Replication
    role:slave
    master_host:172.168.18.201
    master_port:7000
    master_link_status:up

 

四. 集群设置

  (1) 主节点握手

    在主节点7000的客户端,通过与7001,7002主节点握手来形成集群节点,以及握手成功后查看群集状态。

    [root@hsr bin]# ./redis-cli -c -p 7000 -a 123456
    127.0.0.1:7000> cluster meet 127.0.0.1 7001
    OK
    127.0.0.1:7000> cluster meet 127.0.0.1 7002
    OK
   127.0.0.1:7000> cluster nodes
  0eed9cc9122d2724365550b70965c2a8e281043d 127.0.0.1:7002@17002 master - 0 1545632759414 2 connected
  aeaaeacb8b4d4c4a3bca3c6f52fc4b363e68f083 127.0.0.1:7001@17001 master - 0 1545632758405 0 connected
  142116fa16006f39865ebe604d1580c119fa0fea 127.0.0.1:7000@17000 myself,master - 0 1545632756000 1 connected

  (2)分配槽

    给各主节点分配槽范围,全部分配完后,此时查看群集状态为OK(已上线),再查看槽分配信息

  [root@hsr bin]# ./redis-cli -h 127.0.0.1 -p 7000 -a 123456 cluster addslots {0..5000}
     OK
  [root@hsr bin]# ./redis-cli -h 127.0.0.1 -p 7001 -a 123456 cluster addslots {5001..10000}
    OK
  [root@hsr bin]# ./redis-cli -h 127.0.0.1 -p 7002 -a 123456 cluster addslots {10001..16383}
    OK
    127.0.0.1:7000> cluster info
    cluster_state:ok
  127.0.0.1:7000> cluster nodes
  a9e82a7870ac31c221a4d13b28ba9897bb12257c 127.0.0.1:7000@17000 myself,master - 0 1545704528000 0 connected 0-5000
  3b10786d21bbeb66e3517e8d3daa3ee2ce16705e 127.0.0.1:7001@17001 master - 0 1545704529806 1 connected 5001-10000
  7bd0cbd26392d1e98ffe9d46ae153c944d8f398d 127.0.0.1:7002@17002 master - 0 1545704529000 2 connected 10001-16383

 

    

  

 

posted on 2022-12-27 10:42  花阴偷移  阅读(6)  评论(0编辑  收藏  举报

导航