使用redis部署集群
2017-02-24 12:12
330 查看
我们现在在一台服务器上,通过6个端口来模拟一下redis集群部署,要搭建出的模型为:三个主数据库7001,7002,7003,它们各有一个从数据库7004,7005,7006。
首先创建目录/usr/local/redis-cluster,然后在其中创建6个目录7001-7006:
然后先复制一份redis配置文件redis.conf到7001目录下,执行vi命令编辑redis.conf,需要修改的地方为:
将编辑好后的redis.conf各复制一份到7002-7006目录下,再分别修改为对应的端口号7002-7006,为了方便可以使用全文替换:执行vi命令后,按冒号进入最后行模式,然后执行%s/7001/700*/g。
由于redis集群需要使用到ruby命令,所以我们需要先安装ruby,ubuntu下安装ruby的方式如下:
然后执行如下命令安装redis和ruby的接口:
然后分别启动6个redis实例:(我的redis-server程序安装在/usr/local/bin/,请对应你自己的)
开启好后可以执行ps -el|grep redis查看是否启动成功。
然后执行redis的src目录下的redis-trib.rb命令,其中create代表创建集群,–replicas代表主从结点比例,1代表一主一从:
通过集群方式启动服务,输入info命令可以查看主从信息:
输入cluster info命令可以查看集群信息:
通过cluster nodes命令可以查看集群结点信息:(redis会给主库结点分配哈希槽)
现在打开多个终端,分别连接7001,7002,7003端口的redis服务:
然后在7001中执行set k1 v1,会发现k1被存放到7003的哈希槽12706中,此时在7001,7002中执行keys *看不到k1,但是可以通过get k1访问到k1,而且会被重定向到7003端口的redis服务:
现在,我们在7001中执行set k4 v4,发现k4被存放到了7002,然后我们退出7002服务,启动7002的从库即7005,执行get k4,会发现仍然需要重定向到7002去获取,这是不合理的。我们需要在从库7005中执行READONLY命令,然后再获取k4,就可以直接从从库7005中获取了:(但是好在在jedis中不需要这样设置)
首先创建目录/usr/local/redis-cluster,然后在其中创建6个目录7001-7006:
然后先复制一份redis配置文件redis.conf到7001目录下,执行vi命令编辑redis.conf,需要修改的地方为:
daemonize yes(后台运行) port 700* (分别对每个机器的端口号进行设置) bind 192.168.202.131 (必须绑定当前的主机IP) dir /usr/local/redis-cluster/700*/ (指定数据文件dump.rdb的存放位置,必须指明,否则数据可能丢失) cluster-enabled yes(启动集群模式) cluster-config-file nodes700*.conf (700*最好和port对应上) cluster-node-timeout 5000 (过期时间,可选) appendonly yes (启动aof持久化,可选)
将编辑好后的redis.conf各复制一份到7002-7006目录下,再分别修改为对应的端口号7002-7006,为了方便可以使用全文替换:执行vi命令后,按冒号进入最后行模式,然后执行%s/7001/700*/g。
由于redis集群需要使用到ruby命令,所以我们需要先安装ruby,ubuntu下安装ruby的方式如下:
sudo apt-get update sudo apt-get install ruby sudo apt-get install rubygems
然后执行如下命令安装redis和ruby的接口:
gem install redis
然后分别启动6个redis实例:(我的redis-server程序安装在/usr/local/bin/,请对应你自己的)
/usr/local/bin/redis-server /usr/local/redis-cluster/7001/redis.conf /usr/local/bin/redis-server /usr/local/redis-cluster/7002/redis.conf /usr/local/bin/redis-server /usr/local/redis-cluster/7003/redis.conf /usr/local/bin/redis-server /usr/local/redis-cluster/7004/redis.conf /usr/local/bin/redis-server /usr/local/redis-cluster/7005/redis.conf /usr/local/bin/redis-server /usr/local/redis-cluster/7006/redis.conf
开启好后可以执行ps -el|grep redis查看是否启动成功。
然后执行redis的src目录下的redis-trib.rb命令,其中create代表创建集群,–replicas代表主从结点比例,1代表一主一从:
./usr/redis/redis-3.2.6/src/redis-trib.rb create --replicas 1 192.168.202.131 7001 192.168.202.131 7002 192.168.202.131 7003 192.168.202.131 7004 192.168.202.131 7005 192.168.202.131 7006
通过集群方式启动服务,输入info命令可以查看主从信息:
输入cluster info命令可以查看集群信息:
通过cluster nodes命令可以查看集群结点信息:(redis会给主库结点分配哈希槽)
现在打开多个终端,分别连接7001,7002,7003端口的redis服务:
然后在7001中执行set k1 v1,会发现k1被存放到7003的哈希槽12706中,此时在7001,7002中执行keys *看不到k1,但是可以通过get k1访问到k1,而且会被重定向到7003端口的redis服务:
现在,我们在7001中执行set k4 v4,发现k4被存放到了7002,然后我们退出7002服务,启动7002的从库即7005,执行get k4,会发现仍然需要重定向到7002去获取,这是不合理的。我们需要在从库7005中执行READONLY命令,然后再获取k4,就可以直接从从库7005中获取了:(但是好在在jedis中不需要这样设置)
相关文章推荐
- 使用Tomcat-redis-session-manager来实现Tomcat集群部署中的Session共享
- Redis从单机到集群,一步步教你环境部署以及使用
- window下使用Redis Cluster部署Redis集群
- 使用Docker Compose部署基于Sentinel的高可用Redis集群
- Linux 下Redis集群安装部署及使用详解(在线和离线两种安装+相关错误解决方案)
- Linux 下Redis集群安装部署及使用详解(在线和离线两种安装+相关错误解决方案)
- 使用Docker Compose部署基于Sentinel的高可用Redis集群
- 使用Tomcat+Redis来实现集群部署中的Session共享问题
- Linux下Redis集群安装部署及使用详解
- 在Kubernetes集群中使用Redis部署PHP留言簿应用程序
- 使用Docker Compose部署基于Sentinel的高可用Redis集群
- Linux 下Redis集群安装部署及使用详解
- 使用Tomcat-redis-session-manager来实现Tomcat集群部署中的Session共享
- 使用Tomcat+Redis来实现集群部署中的Session共享问题
- 使用Tomcat+Redis来实现集群部署中的Session共享问题
- 使用Codis来部署Redis集群
- Redis基本概念、基本使用与单机集群部署
- 使用 Docker 部署和迁移多节点的 ElasticSearch-Logstash-Kibana 集群
- window下redis的使用以及服务器集群配置
- redis 3.0的集群部署