以下为你整理Redis 集群的搭建过程,安装环境是CentOS 7系统、Ruby、Redis。建议先阅读Redis Sentinel集群部署一文。
Ruby redis-trib 是 Redis 官方推出的管理 Redis 集群的工具,使用 Ruby 实现。如果是编译最新版的 Redis,需要相应版本的 Ruby 环境。 版本兼容的情况下,直接通过 yum 安装: yum install ruby 版本不兼容的情况下,可通过 RVM 工具安装。 # 安装依赖 yum install gcc-c++ patch readline readline-devel zlib zlib-devel \ libyaml-devel libffi-devel openssl-devel make \ bzip2 autoconf automake libtool bison iconv-devel sqlite-devel \ # 导入 GPG gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB # 安装 RVM curl -sSL https://get.rvm.io | bash -s stable # 加载 RVM 环境 source /etc/profile.d/rvm.sh rvm reload # 验证依赖 rvm requirements run # 安装 Ruby rvm install 2.3.3 # 设置默认版本 rvm use 2.3.5 --default # 验证当前版本 ruby --version # ruby 2.3.5p376 (2017-09-14 revision 59905) [x86_64-linux]
Redis yum install redis redis-trib
Ruby 与 Redis 接口 gem install redis
搭建集群 1.创建集群的目录 redis-cluster,然后在其里面分别创建 6 个目录: mkdir -p /data/redis-cluster/9001/ ... mkdir -p /data/redis-cluster/9006/ 2.将 /etc/redis.conf 文件复制到每个新建的目录里面: cp /etc/redis.conf /data/redis-cluster/9001/ ... cp /etc/redis.conf /data/redis-cluster/9006/ 3.修改每一个复制的 redis.conf 配置里面的参数 # 后台运行 daemonize yes # 端口 (900* 表示端口号一一对应) port 900* # 绑定 IP,只接受当前 IP,如果要接受全部 IP 则配置为 0.0.0.0 bind 192.168.1.83 # 指定数据文件存放位置,对应每一个新建的目录下 dir /data/redis-cluster/900*/ # 启动集群模式 cluster-enabled yes # 集群配置文件,自动创建(900* 表示端口号一一对应) cluster-config-file node-900*.conf # 集群超时时间 cluster-node-timeout 5000 # 开启 aof 持久化模式 appendonly yes # 每次有写操作的时候都同步 appendfsync always 4.启动 6 个 Redis 实例 redis-server /data/redis-cluster/9001/redis.conf ... redis-server /data/redis-cluster/9006/redis.conf 5.将 6 个 Redis 实例加入到集群 redis-trib create --replicas 1 192.168.1.83:9001 192.168.1.83:9002 192.168.1.83:9003 192.168.1.83:9004 192.168.1.83:9005 192.168.1.83:9006
创建集群成功 >>> Creating cluster >>> Performing hash slots allocation on 6 nodes... Using 3 masters: 192.168.1.83:9001 192.168.1.83:9002 192.168.1.83:9003 Adding replica 192.168.1.83:9004 to 192.168.1.83:9001 Adding replica 192.168.1.83:9005 to 192.168.1.83:9002 Adding replica 192.168.1.83:9006 to 192.168.1.83:9003 Can I set the above configuration? (type 'yes' to accept): yes >>> Nodes configuration updated >>> Assign a different config epoch to each node >>> Sending CLUSTER MEET messages to join the cluster Waiting for the cluster to join... >>> Performing Cluster Check (using node 192.168.1.83:9001) [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered. 注:如果出现 ERR Slot 16011 is already busy 错误,则是由于上一次配置集群失败留下的配置信息导致的。只要删除每个节点目录里的 node-900*.conf 文件删除并重新启动 redis-server 即可。
连接任意一台客户端进行验证,并查看集群信息、节点信息 redis-cli -c -h 192.168.1.83 -p 9001 192.168.1.83:9001> CLUSTER INFO cluster_state:ok cluster_slots_assigned:16384 cluster_slots_ok:16384 cluster_slots_pfail:0 cluster_slots_fail:0 cluster_known_nodes:6 cluster_size:3 cluster_current_epoch:6 cluster_my_epoch:1 cluster_stats_messages_sent:17000 cluster_stats_messages_received:17000 192.168.1.83:9001> CLUSTER NODES cf427dffcc0355bde3720ac7119cbff2eac45633 192.168.1.83:9002 master - 0 1528270078637 2 connected 5461-10922 31feb2be2955c12a29052232c8334c542581a30f 192.168.1.83:9003 master - 0 1528270079651 3 connected 10923-16383 c01c9dabfcbd39e8c760a258a2ccb39b322a1970 192.168.1.83:9001 myself,master - 0 0 1 connected 0-5460 08034c8a4d995b002ce559b275606ffffe896a0b 192.168.1.83:9004 slave c01c9dabfcbd39e8c760a258a2ccb39b322a1970 0 1528270079143 4 connected c513bf1ca862a4bdaaa3ea8d95679950d6ae8e26 192.168.1.83:9006 slave 31feb2be2955c12a29052232c8334c542581a30f 0 1528270078233 6 connected 0cae84633230a7d033888c9adf0c8c4487f71938 192.168.1.83:9005 slave cf427dffcc0355bde3720ac7119cbff2eac45633 0 1528270078637 5 connected
相关主题 |