centos7系统使用docker容器搭建redis cluster集群
一、下载redis镜像
二、手动创建容器并搭建集群(使用宿主机ip)
1、循环创建节点文件夹和配置文件
for i in $(seq 0 5); do \ mkdir -p node${i}/conf; \ mkdir -p node${i}/data; \ done
2、配置文件内容
vi node1/conf/redis.conf
daemonize no protected-mode no port 6380 dbfilename dump6380.rdb appendonly yes appendfilename appendonly6380.aof cluster-enabled yes cluster-config-file redis-node0.conf cluster-node-timeout 500 cluster-announce-ip 192.168.100.20 cluster-announce-port 6380 cluster-announce-bus-port 16380
3、复制配置文件,修改端口,port、cluster-announce-port、cluster-announce-bus-port都修改
for i in $(seq 1 5); do \ cp node0/conf/redis.conf node${i}/conf/; done
4、创建容器
for i in $(seq 0 5); do \ docker run -it -d \ --name redis-node${i} \ -p $((6380+i)):$((6380+i)) -p $((16380+i)):$((16380+i)) \ -v /home/redis/node${i}/conf/redis.conf:/usr/local/etc/redis/redis.conf \ -v /home/redis/node${i}/data:/data \ redis redis-server /usr/local/etc/redis/redis.conf; \ done
5、进入容器
docker exec -it redis-node0 bash
6、构建cluster集群
redis-cli --cluster create 192.168.100.20:6380 192.168.100.20:6381 192.168.100.20:6382 192.168.100.20:6383 192.168.100.20:6384 192.168.100.20:6385 --cluster-replicas 1
三、docker-compose创建容器并搭建集群
1、创建.sh文件创建目录和文件
vi gen-redis-cluster.sh
for i in $(seq 1 6); \ do \ mkdir -p node$((6400+i))/conf/ mkdir -p node$((6400+i))/data/ touch node$((6400+i))/conf/redis.conf cat > node$((6400+i))/conf/redis.conf << EOF port 6379 bind 0.0.0.0 protected-mode no daemonize no dbfilename dump$((6400+i)).rdb appendonly yes appendfilename appendonly$((6400+i)).aof cluster-enabled yes cluster-config-file node$((6400+i)).conf cluster-node-timeout 500 cluster-announce-ip 192.20.2.${i} cluster-announce-port 6379 cluster-announce-bus-port 16379 EOF done
2、创建docker-compose.yml文件
version: '3.8' services: redis1: image: 'redis' container_name: redis-node6401 volumes: - ./node6401/conf/redis.conf:/usr/local/etc/redis/redis.conf - ./node6401/data:/data ports: - 6401:6379 - 16401:16379 command: redis-server /usr/local/etc/redis/redis.conf networks: redis-cluster: ipv4_address: 192.20.2.1 redis2: image: 'redis' container_name: redis-node6402 volumes: - ./node6402/conf/redis.conf:/usr/local/etc/redis/redis.conf - ./node6402/data:/data ports: - 6402:6379 - 16402:16379 command: redis-server /usr/local/etc/redis/redis.conf networks: redis-cluster: ipv4_address: 192.20.2.2 redis3: image: 'redis' container_name: redis-node6403 volumes: - ./node6403/conf/redis.conf:/usr/local/etc/redis/redis.conf - ./node6403/data:/data ports: - 6403:6379 - 16403:16379 command: redis-server /usr/local/etc/redis/redis.conf networks: redis-cluster: ipv4_address: 192.20.2.3 redis4: image: 'redis' container_name: redis-node6404 volumes: - ./node6404/conf/redis.conf:/usr/local/etc/redis/redis.conf - ./node6404/data:/data ports: - 6404:6379 - 16404:16379 command: redis-server /usr/local/etc/redis/redis.conf networks: redis-cluster: ipv4_address: 192.20.2.4 redis5: image: 'redis' container_name: redis-node6405 volumes: - ./node6405/conf/redis.conf:/usr/local/etc/redis/redis.conf - ./node6405/data:/data ports: - 6405:6379 - 16405:16379 command: redis-server /usr/local/etc/redis/redis.conf networks: redis-cluster: ipv4_address: 192.20.2.5 redis6: image: 'redis' container_name: redis-node6406 volumes: - ./node6406/conf/redis.conf:/usr/local/etc/redis/redis.conf - ./node6406/data:/data ports: - 6406:6379 - 16406:16379 command: redis-server /usr/local/etc/redis/redis.conf networks: redis-cluster: ipv4_address: 192.20.2.6 networks: redis-cluster: external: true
3、创建自定义docker网络
docker network create -d bridge --subnet 192.20.2.0/24 --gateway 192.20.2.254 redis-cluster
4、使用docker-compose创建容器
docker-compose up -d
5、进入容器
docker exec -it redis-node6401 bash
6、构建cluster集群
redis-cli --cluster create 192.20.2.1:6379 192.20.2.2:6379 192.20.2.3:6379 192.20.2.4:6379 192.20.2.5:6379 192.20.2.6:6379 --cluster-replicas 1
注:构建集群很可能会通信失败,多尝试