1.配置流程


1.集群最少有3个节点。redis集群是有3个主节点,3个子节点。
2.创建集群节点
 在虚机
    192.168.247.130 创建/nh/redis/6380/ /nh/redis/6381/
    192.168.247.129 创建/nh/redis/6382/ /nh/redis/6383/
    192.168.247.128 创建/nh/redis/6384/ /nh/redis/6385/
3.每个文件夹底下创建文件redis.conf内容为:
    daemonize yes
    port 6380   #需要修改
    dir /nh/redis/6380/  #需要修改
    pidfile redis.pid
    logfile redis.log
    loglevel verbose
    cluster-enabled yes
    cluster-config-file nodes.conf
    cluster-node-timeout 5000
    cluster-require-full-coverage no
    appendonly no
    protected-mode no  
4.cd到每一个文件夹内,执行../../src/redis-server ./redis.conf
启动多个redis服务。在目录下会出现nodes.conf这样的文件,有类似的信息。
[82462] 26 Nov 11:56:55.329 * No cluster configuration found, I'm 97a3a64667477371c4479320d683e4c8db5858b1
5.搭建每个服务之间的联系,创建集群,因为redis依赖ruby,如果没有,需要安装。
yum install ruby(如果没有安装ruby)
然后安装 gem 因为下面需要用到其命令
yum install ruby rubygems(如果没有安装gem )
gem install redis
构建集群之间的联系(注意防火墙)
./src/redis-trib.rb create --replicas 1 192.168.247.130:6380 192.168.247.130:6381 192.168.247.129:6382 
192.168.247.129:6383 192.168.247.128:6384 192.168.247.128:6385
打印日志
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
..............
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
6.在客户端进行测试
./redis-cli -c -p 6380 -h 192.168.247.130
./redis-cli -p 7000 cluster nodes 获取所有的节点
./redis-trib.rb add-node 192.168.247.130:6386 192.168.247.130:6380 为6380添加端口6386的子节点
7.redis官方提供了一个简易创建集群的脚本
在redis-3.2.0/utils/create-cluster 下
./create-cluster start
./create-cluster create
自动创建 3masters 3 slaves

redis cluster的每个节点需要提供两个tcp接口,必须6390这种是用于server和client之间进行连接使用的,
还有一个高端口比如16390这种接口,用于失败重新选择master,配置更新,身份确认之类。

2.分片


启动集群,redis会自动分片
./src/redis-cli -p 6380 cluster nodes
 ........
 可以将一个实例的slot分配到其他机器
./redis-trib.rb reshard 192.168.247.130:6380
可以使用脚本
./redis-trib.rb reshard --from <node-id> --to <node-id> --slots <number of slots> --yes <host>:<port>

3.客户端连接


java连接redis_cluster   {% link add2web https://github.com/BinaryVinc/add2web %}
虚机的网络连接方式 NAT不支持cluster,
hostonly用jedis连接的时候nodes的地址是127.0.0.1,不合适。
最好使用桥接方式。