资讯专栏INFORMATION COLUMN

优雅搭建redis-cluster

Scorpion / 500人阅读

摘要:前言记得年方二八时候,数数还是数得过来的,如今年逾二十八,数都数不清了,前几天在狗东哪里整了算法导论概率导论两本教科书看看学学,也好在研究机器学习的时候有解惑的根本。

前言

</>复制代码

  1. 记得年方二八时候,数数还是数得过来的,如今年逾二十八,数都数不清了,前几天在狗东哪里整了《算法导论》、《概率导论》两本教科书看看学学,也好在研究机器学习的时候有解惑的根本。redis-cluster正好成功的引起了我的兴趣,就当着等书之前的休闲折腾

redis早前没有现成的集群模块,如今流行起来了,功能也越来越强大了,下面我就来部署一下,当然这中间也会遇到很多问题的。不过没关系,有问题咱们解决即可

手动部署

根据官网介绍,手动部署集群需要进行一下操作

</>复制代码

  1. cd /usr/local/redis
  2. mkdir -p cluster/7000
  3. cp ./etc/redis.conf cluster/7000
  4. vi cluster/7000/redis.conf

这里我们针对关键的地方修改即可,具体情况如下

</>复制代码

  1. port 7000
  2. cluster-enabled yes
  3. cluster-config-file nodes-7000.conf
  4. cluster-node-timeout 5000
  5. appendonly yes

修改完成后,复制

</>复制代码

  1. cp -r cluster/7000 cluster/7001
  2. cp -r cluster/7000 cluster/7002
  3. cp -r cluster/7000 cluster/7003
  4. cp -r cluster/7000 cluster/7004
  5. cp -r cluster/7000 cluster/7005

然后依次修改每个节点配置文件的端口号,修改好配置,最后启动所有的节点

</>复制代码

  1. redis-server cluster/7000/redis.conf
  2. redis-server cluster/7001/redis.conf
  3. redis-server cluster/7002/redis.conf
  4. redis-server cluster/7003/redis.conf
  5. redis-server cluster/7004/redis.conf
  6. redis-server cluster/7005/redis.conf

这个时候虽然所有节点启动了,但是还不能称之为集群。下面我们要使用ruby的辅助工具redis-trib来将所有的节点联系起来,这个工具就是我们的redis安装源文件的src目录下的redis-trib.rb文件,但是这个文件运行需要ruby版redis的驱动

</>复制代码

  1. yum install ruby
  2. gem install redis

安装失败,redis依赖的ruby版本必须要大于2.2.0,下面我们来手动安装ruby2.4.2
先清理yum安装的ruby

</>复制代码

  1. yum remove ruby

下面通过RVM(Ruby Version Manager)来安装ruby

</>复制代码

  1. gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E37D2BAF1CF37B13E2069D6956105BD0E739499BDB
  2. curl -sSL https://get.rvm.io | bash -s stable
  3. rvm install 2.4.2
  4. gem install redis

安装成功后

</>复制代码

  1. ./src/redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
自动部署

以上是手动创建集群的方法,下面还有自动启动节点,创建集群,停止集群的服务,文件在redis安装目录下,为utils/create-cluster/create-cluster

</>复制代码

  1. cp utils/create-cluster/create-cluster /etc/init.d/create-cluster
  2. vi /etc/init.d/create-cluster

修改PROT并添加ROOT=/usr/local/redis

</>复制代码

  1. #!/bin/bash
  2. # Settings
  3. PORT=6999
  4. TIMEOUT=2000
  5. NODES=6
  6. REPLICAS=1
  7. ROOT=/usr/local/redis
  8. # You may want to put the above config parameters into config.sh in order to
  9. # override the defaults without modifying this script.
  10. if [ -a config.sh ]
  11. then
  12. source "config.sh"
  13. fi
  14. # Computed vars
  15. ENDPORT=$((PORT+NODES))
  16. if [ "$1" == "start" ]
  17. then
  18. while [ $((PORT < ENDPORT)) != "0" ]; do
  19. PORT=$((PORT+1))
  20. echo "Starting $PORT"
  21. $ROOT/bin/redis-server --port $PORT --cluster-enabled yes --cluster-config-file nodes-${PORT}.conf --cluster-node-timeout $TIMEOUT --appendonly yes --appendfilename appendonly-${PORT}.aof --dbfilename dump-${PORT}.rdb --logfile ${PORT}.log --daemonize yes
  22. done
  23. exit 0
  24. fi
  25. if [ "$1" == "create" ]
  26. then
  27. HOSTS=""
  28. while [ $((PORT < ENDPORT)) != "0" ]; do
  29. PORT=$((PORT+1))
  30. HOSTS="$HOSTS 127.0.0.1:$PORT"
  31. done
  32. $ROOT/src/redis-trib.rb create --replicas $REPLICAS $HOSTS
  33. exit 0
  34. fi
  35. if [ "$1" == "stop" ]
  36. then
  37. while [ $((PORT < ENDPORT)) != "0" ]; do
  38. PORT=$((PORT+1))
  39. echo "Stopping $PORT"
  40. $ROOT/bin/redis-cli -p $PORT shutdown nosave
  41. done
  42. exit 0
  43. fi
  44. if [ "$1" == "watch" ]
  45. then
  46. PORT=$((PORT+1))
  47. while [ 1 ]; do
  48. clear
  49. date
  50. $ROOT/bin/redis-cli -p $PORT cluster nodes | head -30
  51. sleep 1
  52. done
  53. exit 0
  54. fi
  55. if [ "$1" == "tail" ]
  56. then
  57. INSTANCE=$2
  58. PORT=$((PORT+INSTANCE))
  59. tail -f ${PORT}.log
  60. exit 0
  61. fi
  62. if [ "$1" == "call" ]
  63. then
  64. while [ $((PORT < ENDPORT)) != "0" ]; do
  65. PORT=$((PORT+1))
  66. $ROOT/bin/redis-cli -p $PORT $2 $3 $4 $5 $6 $7 $8 $9
  67. done
  68. exit 0
  69. fi
  70. if [ "$1" == "clean" ]
  71. then
  72. rm -rf *.log
  73. rm -rf appendonly*.aof
  74. rm -rf dump*.rdb
  75. rm -rf nodes*.conf
  76. exit 0
  77. fi
  78. if [ "$1" == "clean-logs" ]
  79. then
  80. rm -rf *.log
  81. exit 0
  82. fi
  83. echo "Usage: $0 [start|create|stop|watch|tail|clean]"
  84. echo "start -- Launch Redis Cluster instances."
  85. echo "create -- Create a cluster using redis-trib create."
  86. echo "stop -- Stop Redis Cluster instances."
  87. echo "watch -- Show CLUSTER NODES output (first 30 lines) of first node."
  88. echo "tail -- Run tail -f of instance at base port + ID."
  89. echo "clean -- Remove all instances data, logs, configs."
  90. echo "clean-logs -- Remove just instances logs."

启动节点,创建集群就可以用一下命令来实现了

</>复制代码

  1. service create-cluster start
  2. service create-cluster create

停止集群

</>复制代码

  1. service create-cluster stop

还有watchtailcleanclean-logs命令,这里就不一一说明了,这个教程就写到这吧

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/17656.html

相关文章

  • Redis5.0集群版搭建

    摘要:上一篇文章已经把单机版的搭建的过程介绍完了,接下来介绍集群版的搭建方法。搭建成功,下面这个图片主要是讲述了,谁谁谁分配了什么槽,占用了那些节点。终于把集群搭建好了,下面让我们一起进行测试一下。 ##### 上一篇文章已经把单机版的Redis搭建的过程介绍完了,接下来介绍Redis集群版的搭建方法。 首先我们回到local目录在这个目录里面创建一个redis-cluster目录:mkdi...

    Chao 评论0 收藏0
  • Easy Building Redis-cluster (轻松搭建reids集群)

    摘要:纲要集群介绍集群搭建集群介绍额,这块还是不废话了看官网吧说的很清楚。 纲要: redis3.0集群介绍 redis3.0集群搭建 redis集群介绍 额,这块还是不废话了,看官网吧,说的很清楚。 redis集群搭建 下载并解压redis安装包: wget http://download.redis.io/rele... tar zxf redis-3.2.9.tar.gz && ...

    cgspine 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<