本文共 8530 字,大约阅读时间需要 28 分钟。
实现redis集群搭建,以及的应用java程序连接测试。
1.redis-3.2.0
2.Centos6.4yum install gcc-c++yum install -y tcl
wget http://download.redis.io/releases/redis-3.2.0.tar.gz
tar -zxvf redis-3.2.0.tar.gz -C /opt/modules/
cd /opt/modules/redis-3.2.0make && make install
(1)创建目录
cd /opt/modules/redis-3.2.0[root@bigdata redis-3.2.0]# mkdir mycluster[root@bigdata redis-3.2.0]# cd mycluster/[root@bigdata mycluster]# mkdir 6380 6381 6382 6383 6384 6385
(2)复制配置文件到各个目录下面
[root@bigdata redis-3.2.0]# cp redis.conf mycluster/6380[root@bigdata redis-3.2.0]# cp redis.conf mycluster/6381[root@bigdata redis-3.2.0]# cp redis.conf mycluster/6382[root@bigdata redis-3.2.0]# cp redis.conf mycluster/6383[root@bigdata redis-3.2.0]# cp redis.conf mycluster/6384[root@bigdata redis-3.2.0]# cp redis.conf mycluster/6385
(3)修改6个配置文件redis.conf对应内容
port 6380 //端口6381,6382,6383,6384,6385 bind 本机ip //默认ip为127.0.0.1 需要改为其他节点机器可访问的ip 否则创建集群时无法访问对应的端口,无法创建集群daemonize yes //redis后台运行pidfile /var/run/redis_6380.pid //pidfile文件对应6380,6381,6382,6383,6384,6385cluster-enabled yes //开启集群 把注释#去掉cluster-config-file nodes_7000.conf //集群的配置 配置文件首次启动自动生成 6380,6381,6382,6383,6384,6385cluster-node-timeout 15000 //请求超时 默认15秒,可自行设置appendonly yes //aof日志开启 有需要就开启,它会每次写操作都记录一条日志
可能遇到报错: https://blog.csdn.net/u010886217/article/details/104650885
[root@bigdata redis-3.2.0]# redis-server mycluster/6380/redis.conf[root@bigdata redis-3.2.0]# redis-server mycluster/6381/redis.conf[root@bigdata redis-3.2.0]# redis-server mycluster/6382/redis.conf[root@bigdata redis-3.2.0]# redis-server mycluster/6383/redis.conf[root@bigdata redis-3.2.0]# redis-server mycluster/6384/redis.conf[root@bigdata redis-3.2.0]# redis-server mycluster/6385/redis.conf
[root@bigdata redis-3.2.0]# ps -aux | grep redisWarning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQroot 33891 0.0 0.3 137656 9804 ? Ssl 12:31 0:01 redis-server 192.168.0.9:6380 [cluster]root 33895 0.0 0.3 137656 9784 ? Ssl 12:31 0:01 redis-server 192.168.0.9:6381 [cluster]root 33899 0.0 0.3 137656 9796 ? Ssl 12:31 0:01 redis-server 192.168.0.9:6382 [cluster]root 33904 0.0 0.2 137656 7760 ? Ssl 12:31 0:01 redis-server 192.168.0.9:6383 [cluster]root 33909 0.0 0.2 137656 7740 ? Ssl 12:31 0:01 redis-server 192.168.0.9:6384 [cluster]root 33913 0.0 0.2 137656 7760 ? Ssl 12:31 0:01 redis-server 192.168.0.9:6385 [cluster]root 33930 0.0 0.1 13340 3076 pts/6 S+ 12:34 0:00 redis-cli -h 192.168.0.9 -c -p 6380root 33955 0.0 0.1 13340 3072 pts/1 S+ 12:35 0:00 redis-cli -h 192.168.0.9 -c -p 6385root 34010 0.0 0.0 103268 892 pts/7 S+ 13:03 0:00 grep redis
yum -y install ruby ruby-devel rubygems rpm-build
备注:这一步可能时间有些长,耐心等待
gem install redis --version 3.2.0
redis-trib.rb create --replicas 1 192.168.0.9:6380 192.168.0.9:6381 192.168.0.9:6382 192.168.0.9:6383 192.168.0.9:6384 192.168.0.9:6385
[root@bigdata mycluster]# redis-trib.rb create --replicas 1 192.168.0.9:6380 192.168.0.9:6381 192.168.0.9:6382 192.168.0.9:6383 192.168.0.9:6384 192.168.0.9:6385
>>> Creating cluster >>> Performing hash slots allocation on 6 nodes... Using 3 masters: 192.168.0.9:6380 192.168.0.9:6381 192.168.0.9:6382 Adding replica 192.168.0.9:6383 to 192.168.0.9:6380 Adding replica 192.168.0.9:6384 to 192.168.0.9:6381 Adding replica 192.168.0.9:6385 to 192.168.0.9:6382 M: c972db1e5df4e1ffe495e42c03fc8d27ca99d15b 192.168.0.9:6380 slots:0-5460 (5461 slots) master M: dbc30ef2574f11b8c7ffe9fad9de39fefbc62659 192.168.0.9:6381 slots:5461-10922 (5462 slots) master M: efe2c2c197eceec0864c3d09e4878c9d2264b990 192.168.0.9:6382 slots:10923-16383 (5461 slots) master S: 586c9d258380b71d5ec8a7301ba3c79cd27d143b 192.168.0.9:6383 replicates c972db1e5df4e1ffe495e42c03fc8d27ca99d15b S: ea9b8edb48b9f657380f785d91f5eca66335953b 192.168.0.9:6384 replicates dbc30ef2574f11b8c7ffe9fad9de39fefbc62659 S: 40bada33e11e058ade5b7523315aee866acd21dd 192.168.0.9:6385 replicates efe2c2c197eceec0864c3d09e4878c9d2264b990 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.0.9:6380) M: c972db1e5df4e1ffe495e42c03fc8d27ca99d15b 192.168.0.9:6380 slots:0-5460 (5461 slots) master M: dbc30ef2574f11b8c7ffe9fad9de39fefbc62659 192.168.0.9:6381 slots:5461-10922 (5462 slots) master M: efe2c2c197eceec0864c3d09e4878c9d2264b990 192.168.0.9:6382 slots:10923-16383 (5461 slots) master M: 586c9d258380b71d5ec8a7301ba3c79cd27d143b 192.168.0.9:6383 slots: (0 slots) master replicates c972db1e5df4e1ffe495e42c03fc8d27ca99d15b M: ea9b8edb48b9f657380f785d91f5eca66335953b 192.168.0.9:6384 slots: (0 slots) master replicates dbc30ef2574f11b8c7ffe9fad9de39fefbc62659 M: 40bada33e11e058ade5b7523315aee866acd21dd 192.168.0.9:6385 slots: (0 slots) master replicates efe2c2c197eceec0864c3d09e4878c9d2264b990 [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered.(1)在6380端口的redis登录
[root@bigdata mycluster]# redis-cli -h 192.168.0.9 -c -p 6380 192.168.0.9:6380> set k1 1-> Redirected to slot [12706] located at 192.168.0.9:6382OK
(2)另外客户端去获取k1
[root@bigdata ~]# redis-cli -h 192.168.0.9 -c -p 6385192.168.0.9:6385> get k1-> Redirected to slot [12706] located at 192.168.0.9:6382"1"
备注:
-c 可连接到集群 -h 主机ip:因为上面 redis.conf 将 bind 改为了ip地址,所以 -h 参数不可以省略192.168.0.9:6382> cluster nodesdbc30ef2574f11b8c7ffe9fad9de39fefbc62659 192.168.0.9:6381 master - 0 1583314735242 2 connected 5461-10922efe2c2c197eceec0864c3d09e4878c9d2264b990 192.168.0.9:6382 myself,master - 0 0 3 connected 10923-1638340bada33e11e058ade5b7523315aee866acd21dd 192.168.0.9:6385 slave efe2c2c197eceec0864c3d09e4878c9d2264b990 0 1583314739314 6 connectedc972db1e5df4e1ffe495e42c03fc8d27ca99d15b 192.168.0.9:6380 master - 0 1583314738299 1 connected 0-5460586c9d258380b71d5ec8a7301ba3c79cd27d143b 192.168.0.9:6383 slave c972db1e5df4e1ffe495e42c03fc8d27ca99d15b 0 1583314737279 4 connectedea9b8edb48b9f657380f785d91f5eca66335953b 192.168.0.9:6384 slave dbc30ef2574f11b8c7ffe9fad9de39fefbc62659 0 1583314741356 5 connected
redis.clients jedis 2.9.0
public static JedisCluster getJedisCluster() throws IOException { JedisCluster cluster =null; try { Setnodes = new LinkedHashSet (); //一般选用slaveof从IP+端口进行增删改查,不用master nodes.add(new HostAndPort("192.168.0.9", 6380)); nodes.add(new HostAndPort("192.168.0.9", 6381)); nodes.add(new HostAndPort("192.168.0.9", 6382)); nodes.add(new HostAndPort("192.168.0.9", 6383)); nodes.add(new HostAndPort("192.168.0.9", 6384)); nodes.add(new HostAndPort("192.168.0.9", 6385)); // Jedis连接池配置 JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); // 最大空闲连接数, 默认8个 jedisPoolConfig.setMaxIdle(100); // 最大连接数, 默认8个 jedisPoolConfig.setMaxTotal(500); //最小空闲连接数, 默认0 jedisPoolConfig.setMinIdle(0); // 获取连接时的最大等待毫秒数(如果设置为阻塞时BlockWhenExhausted),如果超时就抛异常, 小于零:阻塞不确定的时间, 默认-1 jedisPoolConfig.setMaxWaitMillis(2000); // 设置2秒 //对拿到的connection进行validateObject校验 jedisPoolConfig.setTestOnBorrow(true); //未设置auth Password// JedisCluster jedis = new JedisCluster(nodes, jedisPoolConfig); cluster = new JedisCluster(nodes, jedisPoolConfig); //设置auth Password //JedisCluster jedis = new JedisCluster(nodes,5000,3000,10,{auth_password}, new JedisPoolConfig());// System.out.println(cluster.get("k1")); }catch(Exception e) { e.printStackTrace(); }finally {// if(null !=cluster)// cluster.close(); } return cluster; }
1.https://www.cnblogs.com/wuxl360/p/5920330.html