宿主机IP:192.168.123.181
方案一:host网络模式
1、新建6个容器节点
for port in `seq 4001 4006`; do
docker run -itd --name redis-${port} --network host -v ~/redis-data/${port}/data:/data redis --cluster-enabled yes --cluster-config-file nodes.conf --port ${port};
done
2、进入任意一节点
docker exec -it redis-4001 /bin/bash
3、集群操作(3主3从)
redis-cli --cluster create 192.168.123.181:4001 192.168.123.181:4002 192.168.123.181:4003 192.168.123.181:4004 192.168.123.181:4005 192.168.123.181:4006 --cluster-replicas 1
4、执行redis连接操作
redis-cli -c -h 192.168.123.181 -p 4001
方案二:桥接网络,redis配置cluster-announce-ip宿主机IP
1、新建基础目录
cd ~ && mkdir redis-cluster && cd ./redis-cluster && touch redis-cluster.conf
2、编辑redis-cluster
cat >redis-cluster.conf<<EOF
port ${PORT}
cluster-enabled yes
protected-mode no
cluster-config-file nodes.conf
cluster-node-timeout 5000
#对外ip(将ip更改为宿主机IP)
cluster-announce-ip 宿主机IP
cluster-announce-port ${PORT}
cluster-announce-bus-port 1${PORT}
appendonly yes
EOF
3、新建集群目录
cd ~/redis-cluster
for port in `seq 3001 3006`; do
mkdir -p ./${port}/conf && PORT=${port} envsubst < ./redis-cluster.conf > ./${port}/conf/redis.conf && mkdir -p ./${port}/data;
done
4、新建6个容器节点
for port in `seq 3001 3006`; do
docker run -itd -p ${port}:${port} -p 1${port}:1${port} -v ~/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf -v ~/redis-cluster/${port}/data:/data --restart always --name redis-${port} --net redis-net --sysctl net.core.somaxconn=1024 redis redis-server /usr/local/etc/redis/redis.conf;
done
5、进入任意一节点
docker exec -it redis-3001 bash
6、集群操作(3主3从)
redis-cli --cluster create 192.168.123.181:3001 192.168.123.181:3002 192.168.123.181:3003 192.168.123.181:3004 192.168.123.181:3005 192.168.123.181:3006 --cluster-replicas 1
6、执行redis连接操作
redis-cli -c -h 192.168.123.181 -p 3001