Redis技术学习 https://www.itkc8.com
一、本文目的
演示在一台机器上搭建3主3从的redis集群,通过演示了解redis集群的搭建,使用和注意事项
二、搭建说明
1、同一台机器搭建3主3从的伪集群
2、使用端口7111~7116,集群端口为端口前+1,如果使用端口7111,则其集群通信端口为17111,
redis.config的配置如下:
daemonize | port | pidfile | logfile | cluster-enabled | cluster-config-file | cluster-node-timeout | |
7111 | yes | 7111 | /var/run/redis7111.pid | "redis7111.log" | yes | nodes-7111.conf | 5000 |
7112 | yes | 7112 | /var/run/redis7112.pid | "redis7112.log" | yes | nodes-7112.conf | 5000 |
7113 | yes | 7113 | /var/run/redis7113.pid | "redis7113.log" | yes | nodes-7113.conf | 5000 |
7114 | yes | 7114 | /var/run/redis7114.pid | "redis7114.log" | yes | nodes-7114.conf | 5000 |
7115 | yes | 7115 | /var/run/redis7115.pid | "redis7115.log" | yes | nodes-7115.conf | 5000 |
7116 | yes | 7116 | /var/run/redis7116.pid | "redis7116.log" | yes | nodes-7116.conf | 5000 |
3、需要打开7111~7116、17111~17116一共12个端口
三、搭建过程
1、安装搭建说明修改配置文件及打开所有端口,并启动6个redis
2、创建redis集群是使用ruby命令,故需要安装以下软件
1
2
3
4
5
6
7
8
9
安装 ruby 和 rubygems(注意: 需要 ruby 的版本在 1.8.7 以上)
# yum install ruby rubygems
检查 ruby 版本:
# ruby -v
ruby 1.8.7 (2013-06-27 patchlevel 374) [x86_64-linux]
gem 安装 redis ruby 接口:
# gem install redis
3、执行创建集群的命令(可在任何一个redis的src目录下执行)
a) redis-trib.rb 创建集群的rube命令
b) create 创建集群
c) replicas 每个master包含一个slaver
d) 192.168.146.131:7111 每个redis实例的ip+端口,每个实例根据空格分开
1 2 3 |
|
4、系统分配Master、Slaver集群关系
5、Slot插槽分配结果
四、集群的测试
1、设置key
2、 在另外一个集群机器上读取刚设置的key
3、查看集群间的关系、Master/Slaver之间的关系
五、总结
- 集群中各台机器的配置信息一致,Master/Slaver关系是在创建集群时由系统分配
- redis集群公用16384个slot,分配给不同的Master
- 每个key最终都会位于某一个slot,读取key时会先转向到某一个slot,然后读取其中的值
- 新增集群或减少集群(如新增或减少Master)会重新分配slot
- 集群的Master/Slaver不知道怎么做容灾,自动切换等,等待进一步研究
六、参考资料
- http://blog.csdn.net/zhu_tianwei/article/details/44928779
- http://blog.csdn.net/zhu_tianwei/article/details/45009647
- http://5i.io/redis-3-0-cluster-configuration/
一、本文目的
介绍集群的基本情况及常用命令
二、集群的特点
3、集群优缺点
三、集群客户端命令(redis-cli -c -p port)
集群
cluster info :打印集群的信息
cluster nodes :列出集群当前已知的所有节点( node),以及这些节点的相关信息。
节点
cluster meet <ip> <port> :将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。
cluster forget <node_id> :从集群中移除 node_id 指定的节点。
cluster replicate <node_id> :将当前节点设置为 node_id 指定的节点的从节点。
cluster saveconfig :将节点的配置文件保存到硬盘里面。
槽(slot)
cluster addslots <slot> [slot ...] :将一个或多个槽( slot)指派( assign)给当前节点。
cluster delslots <slot> [slot ...] :移除一个或多个槽对当前节点的指派。
cluster flushslots :移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。
cluster setslot <slot> node <node_id> :将槽 slot 指派给 node_id 指定的节点,如果槽已经指派给
另一个节点,那么先让另一个节点删除该槽>,然后再进行指派。
cluster setslot <slot> migrating <node_id> :将本节点的槽 slot 迁移到 node_id 指定的节点中。
cluster setslot <slot> importing <node_id> :从 node_id 指定的节点中导入槽 slot 到本节点。
cluster setslot <slot> stable :取消对槽 slot 的导入( import)或者迁移( migrate)。
键
cluster keyslot <key> :计算键 key 应该被放置在哪个槽上。
cluster countkeysinslot <slot> :返回槽 slot 目前包含的键值对数量。
cluster getkeysinslot <slot> <count> :返回 count 个 slot 槽中的键
四、集群中Master的下线及恢复
1、Master下线后,其对应的Slaver节点会自动变为Master节点
2、原来的Master重启后变成Slaver节点,并是原来Master节点的Slaver节点
Redis技术学习 https://www.itkc8.com