我做了一个导航站(域名是挂路灯的全拼gualudeng.com),里面精选了各种影视,动漫,黑科技,实用工具,搞笑有趣的站点,动动大家可爱的小手,点进来看看吧,良心站点。
注意事项redis集群不支持服务别名,所以需要在docker-compose文件中固定ip。
redis集群是可以自动进行主从切换的。不用自己去配置哨兵。
同时redis集群提供自己的hash数据分片算法。不像mysql需要使用mycat中间件去实现。
1.目录结构
├── docker-compose.yml
├── redis1
│ ├── master
│ │ └── redis.conf
│ └── slave1
│ └── redis.conf
├── redis2
│ ├── master
│ │ └── redis.conf
│ └── slave1
│ └── redis.conf
├── redis3
│ ├── master
│ │ └── redis.conf
│ └── slave1
│ └── redis.conf
└── start.sh
2.docker文件
version: "3"
services:
redis1-master:
image: redis
container_name: redis1-master
networks:
mynetwork:
ipv4_address: 172.19.0.2
volumes:
- /vagrant_data/redis_cluster/redis1/master:/usr/local/etc/redis
command:
- sh
- -c
- |
redis-server /usr/local/etc/redis/redis.conf
redis1-slave1:
image: redis
container_name: redis1-slave1
networks:
mynetwork:
ipv4_address: 172.19.0.3
volumes:
- /vagrant_data/redis_cluster/redis1/slave1:/usr/local/etc/redis
command:
- sh
- -c
- |
redis-server /usr/local/etc/redis/redis.conf
redis2-master:
image: redis
container_name: redis2-master
networks:
mynetwork:
ipv4_address: 172.19.0.4
volumes:
- /vagrant_data/redis_cluster/redis2/master:/usr/local/etc/redis
command:
- sh
- -c
- |
redis-server /usr/local/etc/redis/redis.conf
redis2-slave1:
image: redis
container_name: redis2-slave1
networks:
mynetwork:
ipv4_address: 172.19.0.5
volumes:
- /vagrant_data/redis_cluster/redis2/slave1:/usr/local/etc/redis
command:
- sh
- -c
- |
redis-server /usr/local/etc/redis/redis.conf
redis3-master:
image: redis
container_name: redis3-master
networks:
mynetwork:
ipv4_address: 172.19.0.6
volumes:
- /vagrant_data/redis_cluster/redis3/master:/usr/local/etc/redis
command:
- sh
- -c
- |
redis-server /usr/local/etc/redis/redis.conf
redis3-slave1:
image: redis
container_name: redis3-slave1
networks:
mynetwork:
ipv4_address: 172.19.0.7
volumes:
- /vagrant_data/redis_cluster/redis3/slave1:/usr/local/etc/redis
command:
- sh
- -c
- |
redis-server /usr/local/etc/redis/redis.conf
networks:
mynetwork:
ipam:
config:
- subnet: 172.19.0.0/16
3.脚本文件
#!/bin/bash
docker-compose up -d
master='redis1-master'
passwd='fang'
cluster=(172.19.0.2 172.19.0.4 172.19.0.6 172.19.0.3 172.19.0.5 172.19.0.7)
cmd="redis-cli -a $passwd --cluster create "
for c in ${cluster[@]};do
cmd+=$c":6379 "
done
cmd+="--cluster-replicas 1"
docker exec -it $master sh -c "$cmd"
4.配置文件
#配置文件只需开启
requirepass fang
masterauth fang
cluster-enabled yes