搭建redis集群

  • 多机器版本
  • 最少6台机器,分别在其中六台机器也部署一套redis
  1. #/bin/bash
  2. #创建redis主目录,数据库存放目录,日志目录,pid目录
  3. mkdir /data/redis
  4. mkdir /data/redis/data/6301
  5. mkdir /data/redis/logs
  6. mkdir /data/redis/pid
  7. #安装依赖
  8. yum install -y gcc tcl
  9. #下载redis安装包
  10. wget https://download.redis.io/releases/redis-6.0.8.tar.gz
  11. #解压安装包
  12. tar -xvf redis-6.0.8.tar.gz
  13. #移动文件到redis安装目录
  14. mv redis-6.0.8 /data/redis/
  15. #开始编译
  16. make && make install
  17. #测试编译
  18. make test
  19. #如果看到以下字样:表示无错误: \o/ All tests passed without errors!
  20. grep ^[a-Z] redis_6379.conf
  21. bind 192.168.13.212 # 允许通信ip
  22. protected-mode yes
  23. port 6301 # 其他集群机器分别也要不同6302、6303、6304、6305、6306
  24. tcp-backlog 511
  25. timeout 0
  26. tcp-keepalive 300
  27. daemonize yes # redis后台运行
  28. pidfile /var/run/redis_6301.pid # pid文件
  29. loglevel notice
  30. logfile "/data/redis_cluster/logs/redis_6301.log" # 集群日志文件
  31. databases 16
  32. always-show-logo no
  33. set-proc-title yes
  34. proc-title-template "{title} {listen-addr} {server-mode}"
  35. stop-writes-on-bgsave-error yes
  36. rdbcompression yes
  37. rdbchecksum yes
  38. dbfilename dump.rdb
  39. rdb-del-sync-files no
  40. dir ./ # 配置数据文件存放路劲
  41. replica-serve-stale-data yes
  42. replica-read-only yes
  43. repl-diskless-sync no
  44. repl-diskless-sync-delay 5
  45. repl-diskless-load disabled
  46. repl-disable-tcp-nodelay no
  47. replica-priority 100
  48. acllog-max-len 128
  49. maxmemory 64M
  50. lazyfree-lazy-eviction no
  51. lazyfree-lazy-expire no
  52. lazyfree-lazy-server-del no
  53. replica-lazy-flush no
  54. lazyfree-lazy-user-del no
  55. lazyfree-lazy-user-flush no
  56. oom-score-adj no
  57. oom-score-adj-values 0 200 800
  58. disable-thp yes
  59. appendonly no # 是否开启aof
  60. appendfilename "appendonly.aof"
  61. appendfsync everysec
  62. no-appendfsync-on-rewrite no
  63. auto-aof-rewrite-percentage 100
  64. auto-aof-rewrite-min-size 64mb
  65. aof-load-truncated yes
  66. aof-use-rdb-preamble yes
  67. lua-time-limit 5000
  68. cluster-enabled yes # 开启集群状态
  69. cluster-config-file nodes-6301.conf # 集群的配置
  70. cluster-node-timeout 15000 # 集群请求超时 默认15秒,可自行设置
  71. slowlog-log-slower-than 10000
  72. slowlog-max-len 128
  73. latency-monitor-threshold 0
  74. notify-keyspace-events ""
  75. hash-max-ziplist-entries 512
  76. hash-max-ziplist-value 64
  77. list-max-ziplist-size -2
  78. list-compress-depth 0
  79. set-max-intset-entries 512
  80. zset-max-ziplist-entries 128
  81. zset-max-ziplist-value 64
  82. hll-sparse-max-bytes 3000
  83. stream-node-max-bytes 4096
  84. stream-node-max-entries 100
  85. activerehashing yes
  86. client-output-buffer-limit normal 0 0 0
  87. client-output-buffer-limit replica 256mb 64mb 60
  88. client-output-buffer-limit pubsub 32mb 8mb 60
  89. hz 10
  90. dynamic-hz yes
  91. aof-rewrite-incremental-fsync yes
  92. rdb-save-incremental-fsync yes
  93. jemalloc-bg-thread yes
  94. #启动redis
  95. /data/redis/redis-6.0.8/src/redis-server /data/redis/redis_6301.conf &
  • 主要配置
port  6301                       # 端口6302、6303、6304、6305、6306
bind 192.168.11.11               # 允许通信ip
daemonize yes                    # redis后台运行
pidfile /usr/local/redis-cluster/redis1/redis_7001.pid # pidfile文件对应6302、6303、6304、6305、6306
cluster-enabled yes              # 开启集群
cluster-config-file nodes_7001.conf # 集群的配置 配置文件首次启动自动生成 6302、6303、6304、6305、6306
cluster-node-timeout 15000       # 请求超时 默认15秒,可自行设置
appendonly yes                 # 开启aof
logfile "/usr/local/redis-cluster/redise1/logs/redis_7001.log" # 配置日志输入路劲 6302、6303、6304、6305、6306
dir "/usr/local/redis-cluster/redis1/data"  # 配置数据文件存放路劲

创建集群

  • 找一台机器做master控制集群节点,或者也可以在redis集群中其中一台安装master节点
yum -y install ruby ruby-devel rubygems rpm-build
rvm -v
gem install redis
yum install -y rubygems
redis-cli --cluster create 192.168.13.1:6301 192.168.13.2:6302 192.168.13.3:6303 192.168.13.4:6304 192.168.13.5:6305 192.168.13.6:6306 --cluster-replicas 1