【SpringCloud分布式框架搭建】docker-compose安装redis5 集群,自定义主从关系(二)

前提说明:

有三台阿里云服务器,准备搭建 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

注: 前一个ip 为从redis的公网Ip。 后一个为 主redis 的公网Ip.  最后一串码,为 创建 3主集群时,分别出现的 id。

7、自从 创建 自定义 redis集群,完毕

在使用,redis 集群时。可能会一直出现超时异常,解决方法如下:
【异常】阿里云ECS自己搭建Redis集群,不停的出现JedisCluster连接超时的问题

发布了111 篇原创文章 · 获赞 28 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/weixin_42697074/article/details/103593593