docker-compose搭建redis主从/哨兵
redis主从
# pwd /opt/redis # cat docker-compose.yaml version: '3' services: master: image: redis container_name: redis-master ports: - 6380:6379 command: redis-server --requirepass 123456 --masterauth 123456 slave1: image: redis container_name: redis-slave-1 ports: - 6381:6379 command: redis-server --slaveof redis-master 6379 --requirepass 123456 --masterauth 123456 slave2: image: redis container_name: redis-slave-2 ports: - 6382:6379 command: redis-server --slaveof redis-master 6379 --requirepass 123456 --masterauth 123456 # docker-compose up -d Starting redis-master ... done Starting redis-slave-2 ... done Starting redis-slave-1 ... done # docker-compose ps Name Command State Ports ------------------------------------------------------------------------------- redis-master docker-entrypoint.sh redis ... Up 0.0.0.0:6380->6379/tcp redis-slave-1 docker-entrypoint.sh redis ... Up 0.0.0.0:6381->6379/tcp redis-slave-2 docker-entrypoint.sh redis ... Up 0.0.0.0:6382->6379/tcp
将搭建的Sentinel容器需要能访问到以上3个容器,故需要在形成Sentinel的Dokcer-compose 使用外置的 redis-default 网桥
-
查看docker网络(需要查看当前新增的redis主从是使用的那个网络
# docker network ls NETWORK ID NAME DRIVER SCOPE 64630836a7f9 bridge bridge local 282ef599a12f harbor_harbor bridge local c49f1c02a518 harbor_harbor-clair bridge local e1f17d619ae2 host host local e557a1341187 none null local 696f490bc877 redis-compose_default bridge local 1e6a34740c3b redis_default bridge local # 这个网络 docker inspect redis-master
# pwd /opt/redis/sentinel # cat docker-compose.yaml version: '3' services: sentinel1: image: redis container_name: redis-sentinel-1 ports: - 26379:26379 command: redis-sentinel /usr/local/etc/redis/sentinel.conf volumes: - ./sentinell.conf:/usr/local/etc/redis/sentinel.conf sentinel2: image: redis container_name: redis-sentinel-2 ports: - 26380:26379 command: redis-sentinel /usr/local/etc/redis/sentinel.conf volumes: - ./sentinel2.conf:/usr/local/etc/redis/sentinel.conf sentinel3: image: redis container_name: redis-sentinel-3 ports: - 26381:26379 command: redis-sentinel /usr/local/etc/redis/sentinel.conf volumes: - ./sentinel3.conf:/usr/local/etc/redis/sentinel.conf networks: default: external: name: redis_default
# cat sentinel1.conf port 26379 dir /tmp sentinel monitor mymaster 172.26.0.4 6379 2 sentinel auth-pass mymaster 123456 sentinel down-after-milliseconds mymaster 30000 sentinel parallel-syncs mymaster 1 sentinel failover-timeout mymaster 180000 sentinel deny-scripts-reconfig yes # cp sentinel1.conf sentinel2.conf # cp sentinel2.conf sentinel3.conf
# docker exec -it redis-master /bin/bash root@78451b42d8d4:/data# redis-cli -h localhost localhost:6379> auth 123456 OK localhost:6379> info replication # Replication role:master connected_slaves:2 slave0:ip=172.27.0.4,port=6379,state=online,offset=1862,lag=0 slave1:ip=172.27.0.3,port=6379,state=online,offset=1862,lag=0 master_failover_state:no-failover master_replid:08f6e165fa55a1d3e696c5ad3fcdc0ea6c571cdf master_replid2:0000000000000000000000000000000000000000 master_repl_offset:1862 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:1862

浙公网安备 33010602011771号