zoukankan      html  css  js  c++  java
  • linux-redis cluster集群(redis5.x)

    1、查看redis安装目录:

    [root@iZwz97y9qoykzzotubitq3Z redis-5.0.5]# ll
    total 472
    -rw-rw-r-- 1 root root 106874 May 16 2019 00-RELEASENOTES
    -rw-rw-r-- 1 root root 53 May 16 2019 BUGS
    -rw-rw-r-- 1 root root 2381 May 16 2019 CONTRIBUTING
    -rw-rw-r-- 1 root root 1487 May 16 2019 COPYING
    drwxrwxr-x 6 root root 4096 Feb 6 11:38 deps
    -rw-r--r-- 1 root root 203457 Feb 21 23:31 dump.rdb
    -rw-rw-r-- 1 root root 11 May 16 2019 INSTALL
    -rw-rw-r-- 1 root root 151 May 16 2019 Makefile
    -rw-rw-r-- 1 root root 6888 May 16 2019 MANIFESTO
    -rw-rw-r-- 1 root root 20555 May 16 2019 README.md
    -rw-rw-r-- 1 root root 61821 Feb 15 13:12 redis.conf
    -rwxrwxr-x 1 root root 275 May 16 2019 runtest
    -rwxrwxr-x 1 root root 280 May 16 2019 runtest-cluster
    -rwxrwxr-x 1 root root 341 May 16 2019 runtest-moduleapi
    -rwxrwxr-x 1 root root 281 May 16 2019 runtest-sentinel
    -rw-rw-r-- 1 root root 9710 May 16 2019 sentinel.conf
    drwxrwxr-x 3 root root 4096 Feb 24 16:07 src
    drwxrwxr-x 11 root root 4096 May 16 2019 tests
    drwxrwxr-x 8 root root 4096 May 16 2019 utils

    2、在当前目录创建redis_cluster

    [root@iZwz97y9qoykzzotubitq3Z redis-5.0.5]mkdir redis_cluster

    3、将src目录下所有文件拷贝到redis_cluster/node6379~6384下

    [root@iZwz97y9qoykzzotubitq3Z redis-5.0.5]# cp -r ./src/ redis_cluster/node6379

    [root@iZwz97y9qoykzzotubitq3Z redis-5.0.5]# cp -r ./src/ redis_cluster/node6380

    [root@iZwz97y9qoykzzotubitq3Z redis-5.0.5]# cp -r ./src/ redis_cluster/node6381

    [root@iZwz97y9qoykzzotubitq3Z redis-5.0.5]# cp -r ./src/ redis_cluster/node6382

    [root@iZwz97y9qoykzzotubitq3Z redis-5.0.5]# cp -r ./src/ redis_cluster/node6383

    [root@iZwz97y9qoykzzotubitq3Z redis-5.0.5]# cp -r ./src/ redis_cluster/node6384

    4、将redis.conf拷贝到redis_cluster/node6379下

    [root@iZwz97y9qoykzzotubitq3Z redis-5.0.5]# cp -r redis.conf ./redis_cluster/node6379

    5、修改nodes6379目录下redis.conf文件,以nodes6379为例:

    [root@iZwz97y9qoykzzotubitq3Z redis-5.0.5]# vim ./redis_cluster/node6379/redis.conf

    进行如下配置:
    # bind 127.0.0.1

    protected-mode no

    port 6379(对应node序号进行更改,6380,6381...)

    pidfile /var/run/redis_6379.pid(对应node序号进行更改,6380,6381...)

    dbfilename dump6379.rdb (对应node序号进行更改,6380,6381...)

    masterauth root123456

    requirepass root123456 (注意此处是空格,而不是“=”)

    cluster-enabled yes

    cluster-config-file nodes-6379.conf (对应node序号进行更改,6380,6381...)

    cluster-node-timeout 15000

    然后wq!保存退出。

    6、将redis_cluster/node6379/redis.conf拷贝到node6380~6084下

    [root@iZwz97y9qoykzzotubitq3Z redis_cluster]# cp -r node6379/redis.conf  node6380/

    [root@iZwz97y9qoykzzotubitq3Z redis_cluster]# cp -r node6379/redis.conf  node6381/

    [root@iZwz97y9qoykzzotubitq3Z redis_cluster]# cp -r node6379/redis.conf  node6382/

    [root@iZwz97y9qoykzzotubitq3Z redis_cluster]# cp -r node6379/redis.conf  node6383/

    [root@iZwz97y9qoykzzotubitq3Z redis_cluster]# cp -r node6379/redis.conf  node6384/

    7、以此修改redis.conf文件,以node6380为例:

    [root@iZwz97y9qoykzzotubitq3Z redis_cluster]# vim node6380/redis.conf

    输入“ :%s/6379/6380/g”,回车结束,最后wq!保存退出(6379整体替换为6380);

    注:node6381~6384 按上述操作整体替换即可。

    8、以此启动node6379~6384节点,以node6379为例

    [root@iZwz97y9qoykzzotubitq3Z redis_cluster]# node6379/redis-server node6379/redis.conf
    12051:C 24 Feb 2020 22:32:36.650 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
    12051:C 24 Feb 2020 22:32:36.650 # Redis version=5.0.5, bits=64, commit=00000000, modified=0, pid=12051, just started
    12051:C 24 Feb 2020 22:32:36.650 # Configuration loaded
    注:启动时,必须加载各自节点下的redis.conf

    9、查看各节点的启动状态

    [root@iZwz97y9qoykzzotubitq3Z redis_cluster]# ps -aux | grep redis
    root 425 0.1 0.1 156456 3304 ? Ssl 20:53 0:06 node6383/redis-server *:6383 [cluster]
    root 849 0.1 0.1 156456 3300 ? Ssl 20:54 0:06 node6384/redis-server *:6384 [cluster]
    root 31077 0.1 0.1 163112 3332 ? Ssl 20:49 0:07 node6379/redis-server *:6379 [cluster]
    root 32046 0.1 0.1 162600 3288 ? Ssl 20:51 0:06 node6380/redis-server *:6380 [cluster]
    root 32390 0.1 0.1 156456 3248 ? Ssl 20:52 0:06 node6381/redis-server *:6381 [cluster]
    root 32669 0.1 0.1 156456 3344 ? Rsl 20:53 0:06 node6382/redis-server *:6382 [cluster]

    10、配置集群

    [root@iZwz97y9qoykzzotubitq3Z node6379]# ./redis-cli --cluster create 39.xx.130.xx:6379 39.xx.130.xx:6380 39.xx.130.xx:6381 39.xx.130.xx:6382 39.xx.130.xx:6383 39.xx.130.xx:6384 --cluster-replicas 1 -a root123456

    若最终出现下面信息,则说明配置成功!

    [OK] All nodes agree about slots configuration.

    >>> Check for open slots...

    >>> Check slots coverage...

    [OK] All 16384 slots covered.

    注:redis5版本可以直接使用redis-cli命令配置集群(内部集成ruby)

    --cluster-replicas 1:表示主从比例1:1 (一台主机对应有一台从机)

    --cluster-replicas 2:表示主从比例1:2 (一台主机对应有两台从机)

    -a root123456:配置集群时所需的认证密码 (-a:auth简写,root123456:redis服务器认证密码)

    11、测试redis-cluster

    [root@iZwz97y9qoykzzotubitq3Z node6379]# ./redis-cli -c -a root123456
    Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
    127.0.0.1:6379> set foo bar
    -> Redirected to slot [12182] located at 127.0.0.1:6381
    OK
    127.0.0.1:6381> set hello world
    -> Redirected to slot [866] located at 127.0.0.1:6379
    OK
    127.0.0.1:6379> get foo
    -> Redirected to slot [12182] located at 127.0.0.1:6381
    "bar"
    127.0.0.1:6381> get hello
    -> Redirected to slot [866] located at 127.0.0.1:6379
    "world"
    存值时,根据key进行算法后,将数据存入对应的节点中(每个节点对应有hash槽的范围)

    12、查看节点信息

    127.0.0.1:6379> cluster nodes
    79b4f44b41c07275182241da6325e3ffb354867b 127.0.0.1:6383@16383 slave 1a3fe89294ea018880d59c9c080297f8870bd3c8 0 1582556062000 5 connected
    0f6150af547cfc3aaaaff3fabe19421a93862150 127.0.0.1:6381@16381 master - 0 1582556062299 3 connected 10923-16383
    0a9350c59941f1ef0f1eb147a971528a926dbfd1 127.0.0.1:6382@16382 slave 0aba59f4fd0341df1dc06bd38d3dade90b7f8ae4 0 1582556064304 4 connected
    6c97a66fe6f90e76c65b16e9eef52b0a64b5e588 127.0.0.1:6384@16384 slave 0f6150af547cfc3aaaaff3fabe19421a93862150 0 1582556063000 6 connected
    1a3fe89294ea018880d59c9c080297f8870bd3c8 127.0.0.1:6380@16380 master - 0 1582556063302 2 connected 5461-10922
    0aba59f4fd0341df1dc06bd38d3dade90b7f8ae4 127.0.0.1:6379@16379 myself,master - 0 1582556060000 1 connected 0-5460

    注:说明6379(主)与6382(从)配对

    13、模拟将node6379节点停掉

     重新打开一个tab

    [root@iZwz97y9qoykzzotubitq3Z ~]# ps -aux | grep redis
    root 425 0.1 0.1 156456 3248 ? Ssl 20:53 0:08 node6383/redis-server *:6383 [cluster]
    root 849 0.1 0.1 156456 3304 ? Ssl 20:54 0:08 node6384/redis-server *:6384 [cluster]
    root 19850 0.0 0.0 24856 1600 pts/0 S+ 22:50 0:00 ./redis-cli -c -a root123456
    root 23411 0.0 0.0 112712 964 pts/1 R+ 22:58 0:00 grep --color=auto redis
    root 31077 0.1 0.1 163112 3364 ? Ssl 20:49 0:08 node6379/redis-server *:6379 [cluster]
    root 32046 0.1 0.1 162600 3288 ? Ssl 20:51 0:08 node6380/redis-server *:6380 [cluster]
    root 32390 0.1 0.1 156456 3264 ? Ssl 20:52 0:08 node6381/redis-server *:6381 [cluster]
    root 32669 0.1 0.1 156456 3260 ? Ssl 20:53 0:08 node6382/redis-server *:6382 [cluster]

    [root@iZwz97y9qoykzzotubitq3Z ~]# kill -9 31077

    [root@iZwz97y9qoykzzotubitq3Z ~]# ps -aux | grep redis
    root 425 0.1 0.1 156456 3248 ? Ssl 20:53 0:08 node6383/redis-server *:6383 [cluster]
    root 849 0.1 0.1 156456 3304 ? Ssl 20:54 0:08 node6384/redis-server *:6384 [cluster]
    root 19850 0.0 0.0 24856 1600 pts/0 S+ 22:50 0:00 ./redis-cli -c -a root123456
    root 23990 0.0 0.0 112712 960 pts/1 R+ 22:59 0:00 grep --color=auto redis
    root 32046 0.1 0.1 162600 3288 ? Rsl 20:51 0:08 node6380/redis-server *:6380 [cluster]
    root 32390 0.1 0.1 156456 3264 ? Ssl 20:52 0:08 node6381/redis-server *:6381 [cluster]
    root 32669 0.1 0.1 156456 3260 ? Ssl 20:53 0:08 node6382/redis-server *:6382 [cluster]

    再连接6381节点:

    [root@iZwz97y9qoykzzotubitq3Z node6379]# ./redis-cli -c -p 6381  -a root123456

    127.0.0.1:6381> get hello
    -> Redirected to slot [866] located at 127.0.0.1:6382
    "world"

    127.0.0.1:6382> cluster nodes
    0a9350c59941f1ef0f1eb147a971528a926dbfd1 127.0.0.1:6382@16382 myself,master - 0 1582557176000 7 connected 0-5460
    1a3fe89294ea018880d59c9c080297f8870bd3c8 127.0.0.1:6380@16380 master - 0 1582557180461 2 connected 5461-10922
    79b4f44b41c07275182241da6325e3ffb354867b 127.0.0.1:6383@16383 slave 1a3fe89294ea018880d59c9c080297f8870bd3c8 0 1582557179458 5 connected
    0f6150af547cfc3aaaaff3fabe19421a93862150 127.0.0.1:6381@16381 master - 0 1582557178000 3 connected 10923-16383
    6c97a66fe6f90e76c65b16e9eef52b0a64b5e588 127.0.0.1:6384@16384 slave 0f6150af547cfc3aaaaff3fabe19421a93862150 0 1582557178456 6 connected
    0aba59f4fd0341df1dc06bd38d3dade90b7f8ae4 127.0.0.1:6379@16379 master,fail - 1582556349063 1582556347000 1 disconnected

    分析:当6379节点还是正常时,get hello应该是重定向到6379节点上的。而现在重定向到6382节点上,

    说明之前6382是6379的从节点。但此时6382是主节点了,6379恢复正常后,也只能是从节点了。

    127.0.0.1:6381> get hello
    -> Redirected to slot [866] located at 127.0.0.1:6379
    "world"

  • 相关阅读:
    给字符数组赋值的方法
    linux服务之varnish
    Java实现第八届蓝桥杯承压计算
    Java实现第八届蓝桥杯承压计算
    Java实现第八届蓝桥杯迷宫
    Java实现第八届蓝桥杯纸牌三角形
    Java实现第八届蓝桥杯纸牌三角形
    Java实现第八届蓝桥杯分巧克力
    Java实现第八届蓝桥杯迷宫
    Java实现第八届蓝桥杯分巧克力
  • 原文地址:https://www.cnblogs.com/yuefeng123/p/12359506.html
Copyright © 2011-2022 走看看