Redis master-slave replication y centinelas en Docker

Replicación maestro-esclavo

  1. Instalar wegt

    yum -y install wget
    
  2. Descargar el archivo de configuración de redis

    wget http://download.redis.io/redis-stable/redis.conf
    
  3. Y haga tres copias, dos de las cuales están subordinadas y una es principalmente

    [root@localhost conf]# ls
    redis.conf  redis-master.conf  redis-slave1.conf  redis-slave2.conf
    
  4. Modificar archivo de configuración

    • Archivo de configuración del host

      # 允许所有IP访问Redis
      bind 0.0.0.0
      
    • Dos archivos de configuración esclavos

      # 允许所有IP访问Redis
      bind 0.0.0.0
      # 设置主机的地址:IP 端口。接下去通过--lin进行地址解析,docker自动将master解析为地址
      replicaof master 6379
      

      Consejo: La segunda configuración tampoco se puede especificar en el archivo de configuración slaveof master 6379, pero ingrese el comando en redis0-cli , pero cada vez que el esclavo se reinicie, debe volver a ingresar el comando para especificar el host

  5. Comience el contenedor

    • Anfitrión

      docker run --name redis-master \
      -v /mydata/redis-test/conf/redis-master.conf:/usr/local/etc/redis/redis.conf \
      -d redis redis-server /usr/local/etc/redis/redis.conf
      
    • Esclavo 1

      docker run --name redis-slave1 \
      -v /mydata/redis-test/conf/redis-slave1.conf:/usr/local/etc/redis/redis.conf \
      --link redis-master:master \
      -d redis redis-server /usr/local/etc/redis/redis.conf
      
    • Esclavo 2

      docker run --name redis-slave2 \
      -v /mydata/redis-test/conf/redis-slave2.conf:/usr/local/etc/redis/redis.conf \
      --link redis-master:master \
      -d redis redis-server /usr/local/etc/redis/redis.conf
      
  6. Ver el estado maestro-esclavo de Redis

    进入哨兵容器
    docker exec -it 容器名/容器ID redis-cli
    查看主从状态
    info replication
    

--link: --link 关联容器名/关联容器ID:alias. Entre ellos, alias es el alias del contenedor fuente debajo del enlace.

De esta manera, el contenedor puede comunicarse a través del alias o el nombre del contenedor asociado (ID del contenedor asociado), porque Docker realizará automáticamente la resolución DNS

Modo centinela

Centinela individual

  1. Descargar el archivo de configuración centinela

    wget http://download.redis.io/redis-stable/sentinel.conf
    
  2. Modificar archivo de configuraciónsentinel.conf

    # 参数说明:mymaster:哨兵名称;master 6379:被监控主机IP和端口;1:执行故障恢复操作前至少需要几个哨兵节点同意
    # 因为当前只配了一个哨兵,所以设为1,一般以一主二仆要配置三个哨兵,那么最后一个值就配为2
    sentinel monitor mymaster master 6379 1
    
    # 配置日志文件,默认会在容器/data下,如果不需要可以不管
    logfile "sentinel.log"
    
  3. Ejecutando centinela

    docker run --name redis-sentinel \
    -v /mydata/redis-test/conf/sentinel.conf:/usr/local/etc/redis/sentinel.conf \
    --link redis-master:master \
    -d redis redis-sentinel /usr/local/etc/redis/sentinel.conf
    

El método anterior es para una situación en la que solo hay un centinela. En este momento, el centinela también puede estar caído, lo que resulta en una falla en la recuperación

Multi-centinela

La siguiente demostración configura tres centinelas

  1. Descargar el archivo de configuración centinela

    wget http://download.redis.io/redis-stable/sentinel.conf
    
  2. Modificar archivo de configuración

    # 关闭安全模式
    protected-mode no
    
    # 最后一个值修改为2,即需要两个哨兵节点投票同意才能故障恢复
    sentinel monitor mymaster master 6379 2
    
  3. Haz tres copias

    [root@localhost conf]# ls
    sentinel1.conf  sentinel2.conf  sentinel3.conf
    
  4. Comience tres contenedores centinela

    docker run --name redis-sentinel1 \
    -v /mydata/redis-test/conf/sentinel1.conf:/usr/local/etc/redis/sentinel.conf \
    --link redis-master:master \
    -d redis redis-sentinel /usr/local/etc/redis/sentinel.conf
    
    docker run --name redis-sentinel2 \
    -v /mydata/redis-test/conf/sentinel2.conf:/usr/local/etc/redis/sentinel.conf \
    --link redis-master:master \
    --link redis-sentinel1:sentinel \
    -d redis redis-sentinel /usr/local/etc/redis/sentinel.conf
    
    docker run --name redis-sentinel3 \
    -v /mydata/redis-test/conf/sentinel3.conf:/usr/local/etc/redis/sentinel.conf \
    --link redis-master:master \
    --link redis-sentinel2:sentinel \
    -d redis redis-sentinel /usr/local/etc/redis/sentinel.conf
    

    Tenga en cuenta que los dos últimos contenedores necesitan más configuración y el antiguo centinela --link, de lo contrario los centinelas no pueden comunicarse

  5. Verificar el funcionamiento del centinela

    # 进入哨兵容器
    docker exec -it 哨兵容器名/哨兵容器ID bash
    # 进入哨兵
    redis-cli -p 26379
    # 查看哨兵运行情况
    info sentinel
    

Supongo que te gusta

Origin www.cnblogs.com/JMWan233/p/12681608.html
Recomendado
Clasificación