前提说明:
有三台阿里云服务器,准备搭建 3主3从的redis集群。 不使用 redis-cluster的随机配置主从,打算自定义主从关系。
即 每台服务器上,交叉搭建2个redis服务,1主1从,保证任何一台挂掉后,至少还有1主或1从,存活。
使用 docker-compose创建 redis服务。
文件如下:
version: '3'
services:
#1.Redis
redis_6300:
image: redis:5.0.5
privileged: true
restart: always
container_name: keda-redis-master-6300
environment:
- TZ=Asia/Shanghai
- LANG=en_US.UTF-8
# v3 版本以上, 指定与部署和运行服务相关的配置, deploy 部分是 docker stack 使用的, docker stack 依赖 docker swarm
volumes:
- "/usr/docker/software/redis-cluster/6300/data/:/data"
- "/usr/docker/software/redis-cluster/6300/conf/redis.conf:/usr/local/etc/redis/redis.conf"
- "/usr/docker/software/redis-cluster/6300/etc/rc.local:/etc/rc.local"
- "/etc/localtime:/etc/localtime"
network_mode: host
command: [ "redis-server", "/usr/local/etc/redis/redis.conf" ]
#1.Redis
redis_6301:
image: redis:5.0.5
privileged: true
restart: always
container_name: keda-redis-slave-6300
environment:
- TZ=Asia/Shanghai
- LANG=en_US.UTF-8
# v3 版本以上, 指定与部署和运行服务相关的配置, deploy 部分是 docker stack 使用的, docker stack 依赖 docker swarm
volumes:
- "/usr/docker/software/redis-cluster/6300/data/:/data"
- "/usr/docker/software/redis-cluster/6300/conf/redis.conf:/usr/local/etc/redis/redis.conf"
- "/usr/docker/software/redis-cluster/6300/etc/rc.local:/etc/rc.local"
- "/etc/localtime:/etc/localtime"
network_mode: host
command: [ "redis-server", "/usr/local/etc/redis/redis.conf" ]
1、每个宿主机上,都创建了对应的 6300 和6301目录,用于存放,redis的配置文件。然后将 redis docker 挂载到该目录下,并使用自定义的配置文件,启动。
宿主机目录如:
/usr/docker/software/redis-cluster/6300/
/usr/docker/software/redis-cluster/6301/
对应的两个 redis.conf 配置文件。端口分别为 6300和6301. 并开启了 集群。具体配置文件信息,可参考:
【SpringCloud分布式框架搭建】docker-compose安装redis5 集群。并集成到springCloud中
2、将 docker-compose.yml 文件放在 宿主机的对应的目录里。如:
/usr/docker/software/redis-cluster/
然后,分别进入每个阿里云服务器,cd 到该目录下, 使用 docker-compose up 创建redis docker容器
3、此时,已经成功在3台服务器上,创建了6个redis服务。但还没创建集群
4、在任意一台服务器上, 进入任意一个redis docker容器
docker exec -it keda-redis-slave-6300 bash
5、先创建 只有3主的redis 集群:
redis-cli -a Keda123456 --cluster create 47.xx.xx.148:6300 47.xx.xx.44:6300 101.xx.xx.170:6300 --cluster-replicas 0
--cluster-replicas 0 : 表示 没有从,都是主。
6、开始 为每一个 主redis,配置对应的 从redis.
redis-cli -a Keda123456 --cluster add-node 101.xxx.xx.170:6301 47.xxx.xxx.148:6300 --cluster-slave --cluster-master-id d905ba81axxxxxxxxxxxxxxxxxxbde34dc69321d
redis-cli -a Keda123456 --cluster add-node 47.xxx.xx.148:6301 47.xxx.xxx.44:6300 --cluster-slave --cluster-master-id 8fc4eabf8xxxxxxxxxxxxxxxxxxc8c6e851adfe831
redis-cli -a Keda123456 --cluster add-node 47.xxx.xx.44:6301 101.xxx.xx.170:6300 --cluster-slave --cluster-master-id 5eb87dfxxxxxxxxxxxxxxxxxxxxxxxd2f49f6e2f