centos版本:centos7
redis版本:4.0.11
使用一台虚拟机模拟6个redis节点,3个master,3个slave
搭建redis 集群
要让集群正确运行 需要 3个主节点,再刚开始搭建集群的时候 需要6各节点 其中三个为主节点 另外3个为主节点的从节点
mkdir 7001 7002 7003 8001 8002 8003
-f覆盖 -if 强制覆盖 重名文件 cp -f /opt/redis4/redis.conf /usr/cluster/7001 cp -f /opt/redis4/redis.conf /usr/cluster/7002 cp -f /opt/redis4/redis.conf /usr/cluster/7003 cp -f /opt/redis4/redis.conf /usr/cluster/8001 cp -f /opt/redis4/redis.conf /usr/cluster/8002 cp -f /opt/redis4/redis.conf /usr/cluster/8003
cd /usr/cluster/7001 vim redis.conf
bing 0.0.0.0 #设置当前服务器的IP 0.0.0.0 任何人都可以访问 port 7001 #端口号 cluster-enabled yes #开启集群 cluster-config-file nodes.conf cluster-node-timeout 5000 #设置请求超时时间,默认为15秒 appendonly yes #aof日志开启,每次进行写操作都记录日志 pidfile "/usr/cluster/7001/redis.pid" logfile "/usr/cluster/7001/redis.log" daemonize yes #设置后台运行redis dir "/usr/cluster/7001" dbfilename dump_7000.rdb requirepass password(自己设置密码)
yum -y install ruby rubygems gpg2 --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3 #如果下载失败 再次执行 curl -L get.rvm.io | bash -s stable source /usr/local/rvm/scripts/rvm rvm install ruby-2.3.3 (此过程耗时过长,耐心等待~) rvm use 2.3.3 --default gem install redis
redis-server /usr/cluster/7000/redis.conf
ps -ef|grep redis | grep cluster
redis-trib.rb create --replicas 1 127.0.0.1:7001 127.0.0.1:7002 27.0.0.1:7003 127.0.0.1:8001 127.0.0.1:8002 127.0.0.1:7003
Check for open slots... Check slots coverage...
redis-cli -h 127.0.0.1 -c -p 7001 (加参数 -c 可以连接到集群,因为redis.conf将bind改为了ip地址,所以 -h 不可以省略)
连接到7000端口使用set存测试值
由于前面配置文件 可能配置了密码 会导致 启动报错
[ERR] Sorry, can't connect to node 127.0.0.1:7000
我的是在这个如果找不到client.rb
可以再虚拟机搜索这个文件 一定是 redis 下面的
/usr/local/rvm/gems/ruby-2.3.3/gems/redis-4.2.5/lib/redis/client.rb
使用redis-trib.rb
是没有 -a
这个参数的就必须修改 client.rb
require_relative "errors" require "socket" require "cgi" class Redis class Client # Defaults are also used for converting string keys to symbols. DEFAULTS = { url: -> { ENV["REDIS_URL"] }, scheme: "redis", host: "127.0.0.1", port: 6379, path: nil, read_timeout: nil, write_timeout: nil, connect_timeout: nil, timeout: 5.0, #修改passowrd 改成你自己设置的 密码 password: "", db: 0, driver: nil, id: nil, tcp_keepalive: 0, reconnect_attempts: 1, reconnect_delay: 0, reconnect_delay_max: 0.5, inherit_socket: false, logger: nil, sentinels: nil, role: nil }.freeze
有密码,这里加了-a
,如果有密码时创建集群必须携带此参数,
redis-cli -a 输入自己的密码 --cluster create 127.0.0.1:7001 127.0.0.1:7002 27.0.0.1:7003 127.0.0.1:8001 127.0.0.1:8002 127.0.0.1:7003