mkdir /home/redis-cluster
cd /home/redis-cluster
vim build.sh
#!/bin/bash
IP=192.168.119.101
for port in `seq 6111 6116`; do
mkdir -p ./${port}/conf
`cat >> ./${port}/conf/redis.conf <<EOF
port ${port}
protected-mode no
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip ${IP}
cluster-announce-port ${port}
cluster-announce-bus-port 1${port}
appendonly yes
masterauth mypassword
requirepass mypassword
EOF`
mkdir -p ./${port}/data
docker run -d -it \
-v /home/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \
-v /home/redis-cluster/${port}/data:/data \
--restart always --privileged=true --name redis-${port} --net host \
redis:latest redis-server /usr/local/etc/redis/redis.conf
done
构建集群
redis-cli --cluster create 192.168.66.101:6111 192.168.66.101:6112 192.168.66.101:6113 192.168.66.101:6114 192.168.66.101:6115 192.168.66.101:6116 --cluster-replicas 1 -a mypassword
docker exec -it redis-6111 /bin/bash -c "redis-cli --cluster create 192.168.119.101:6111 192.168.119.101:6112 192.168.119.101:6113 192.168.119.101:6114 192.168.119.101:6115 192.168.119.101:6116 --cluster-replicas 1 -a mypassword"
用jedis连接redis集群
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
···
@Configuration
public class RedisCluterConfig {
@Autowired
private RedisProperties redisProperties;
@Bean
public JedisCluster jedisCluster(){
JedisPoolConfig i2 = new JedisPoolConfig();
i2.setMaxTotal(-1);
i2.setMinIdle(2);
i2.setMaxIdle(-1);
i2.setTestOnBorrow(true);
i2.setTestOnReturn(true);
Set<HostAndPort> set = new HashSet<>();
List<String> nodes = redisProperties.getCluster().getNodes();
if(nodes!=null&&nodes.size()>0){
for(int i=0;i<nodes.size();i++){
String[] hostPort = nodes.get(i).split(":");
if(hostPort!=null&&hostPort.length>0){
HostAndPort hp = new HostAndPort(hostPort[0],Integer.valueOf(hostPort[1]));
set.add(hp);
}
}
}
JedisCluster jedisCluster = new JedisCluster(set, 10000, 10000, 100, "mypassword", i2);
/*JedisCluster jedisCluster = new JedisCluster(set);*/
return jedisCluster;
}
}