1,拉去最新redis镜像

docker pull redis

2,docker 容器网络

2.1创建虚拟网卡

创建虚拟网卡,主要是用于redis-cluster能于外界进行网络通信,一般常用桥接模式。

docker network create myredis

附:删除网卡信息:docker network rm myredis

2.2查看Docker 网卡信息

docker network ls

2.3查看docker网络详细信息

docker network inspect myredis

3,编写配置文件

执行命令:

for port in $(seq 6379 6384); 
do 
mkdir -p /home/redis/node-${port}/conf
touch /home/redis/node-${port}/conf/redis.conf
cat << EOF > /home/redis/node-${port}/conf/redis.conf
port ${port}
requirepass 1234
bind 0.0.0.0
protected-mode no
daemonize no
appendonly yes
cluster-enabled yes 
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip  47.101.158.4
cluster-announce-port ${port}
cluster-announce-bus-port 1${port}
EOF
done
  • port:节点端口;
  • requirepass:设置密码,访问时需要验证
  • protected-mode:保护模式,默认值 yes,即开启。开启保护模式以后,需配置 bind ip 或者设置访问密码;关闭保护模式,外部网络可以直接访问;
  • daemonize:是否以守护线程的方式启动(后台启动),默认 no;
  • appendonly:是否开启 AOF 持久化模式,默认 no;
  • cluster-enabled:是否开启集群模式,默认 no;
  • cluster-config-file:集群节点信息文件;
  • cluster-node-timeout:集群节点连接超时时间;
  • cluster-announce-ip:集群节点 IP
    • 注意: 如果你想要你的redis集群可以供外网访问,这里直接填 服务器的IP 地址即可
    • 如若为了安全,只是在服务器内部进行访问,这里还需要做一些修改。
  • cluster-announce-port:集群节点映射端口;
  • cluster-announce-bus-port:集群节点总线端口。

命令执行完,结果如下:

4,启动redis容器

for port in $(seq 6379 6384); \
do \
 docker run -it -d -p ${port}:${port} -p 1${port}:1${port} \
 --privileged=true -v /home/redis/node-${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \
 --privileged=true -v /home/redis/node-${port}/data:/data \
 --restart always --name redis-${port} --net myredis \
 --sysctl net.core.somaxconn=1024 redis redis-server /usr/local/etc/redis/redis.conf
done

5,创建redis集群

5.1进入redis容器

docker exec -it redis-6379 /bin/bash #redis-6379是容器名

5.2创建集群

#redis-cli  -a 之前设置的密码 --cluster create 配置文件中的IP地址:6379 IP地址:6380 IP地址:6381 IP地址:6382 IP地址:6383 IP地址:6384   --cluster-replicas 1
redis-cli  -a 1234 --cluster create 47.101.158.4:6379 47.101.158.4:6380 47.101.158.4:6381 47.101.158.4:6382 47.101.158.4:6383 47.101.158.4:6384   --cluster-replicas 1

5.3启动并查看集群节点相关信息

redis-cli -c -a 1234          #启动集群

cluster info                 #查看集群信息

cluster nodes 查看所有节点相关信息

本机测试,6379进去,6381出来

问题1:docker network create myredis :无法创建虚拟网卡

Error response from daemon: Failed to Setup IP tables: Unable to enable SKIP DNAT rule: (iptables failed: iptables –wait -t nat -I DOCKER -i br-64ec33dddde8 -j RETURN: iptables: No chain/target/match by that name.

解决办法,重启docker:service docker restart
Logo

华为云1024程序员节送福利,参与活动赢单人4000元礼包,更有热门技术干货免费学习

更多推荐