使用Docker Compose搭建高可用Redis集群( 二 )


3. Redis服务器docker-compose.yml文件

  • 192.168.0.210服务器上部署两个Redis服务(Redis主服务1、Redis从服务2)的docker-compose-redis.yml文件
version: '3'services:##redis主配置redisMaster:image: redis:latestrestart: alwayscontainer_name: redis-mastercommand: redis-server /usr/local/etc/redis/redis.conf##将26381映射到26381上ports:- "26381:26381"volumes:##数据目录,要确保先创建好- /opt/container/redis/master/data:/data- /opt/container/redis/master/conf/redis.conf:/usr/local/etc/redis/redis.conf- /opt/container/redis/master/logs:/logs- "/etc/localtime:/etc/localtime"- "/usr/share/zoneinfo/Asia/Shanghai:/etc/timezone"##redis从配置redisSlave1:image: redis:latestrestart: alwayscontainer_name: redis-slave-1command: redis-server /usr/local/etc/redis/redis.conf##将26382映射到26382上ports:- "26382:26382"volumes:##数据目录,要确保先创建好- /opt/container/redis/slave1/data:/data- /opt/container/redis/slave1/conf/redis.conf:/usr/local/etc/redis/redis.conf- /opt/container/redis/slave1/logs:/logs- "/etc/localtime:/etc/localtime"- "/usr/share/zoneinfo/Asia/Shanghai:/etc/timezone"sentinel:image: redis:latestrestart: alwayscontainer_name: redis-sentinelports:- 36381:36381command: redis-sentinel /opt/redis/sentinel/sentinel.confvolumes:- /opt/container/redis/sentinel/data:/data- /opt/container/redis/sentinel/conf/sentinel.conf:/opt/redis/sentinel/sentinel.conf- /opt/container/redis/sentinel/logs:/logs- "/etc/localtime:/etc/localtime"- "/usr/share/zoneinfo/Asia/Shanghai:/etc/timezone"sentinel1:image: redis:latestrestart: alwayscontainer_name: redis-sentinel-1ports:- 36382:36382command: redis-sentinel /opt/redis/sentinel/sentinel1.confvolumes:- /opt/container/redis/sentinel1/data:/data- /opt/container/redis/sentinel1/conf/sentinel1.conf:/opt/redis/sentinel/sentinel1.conf- /opt/container/redis/sentinel1/logs:/logs- "/etc/localtime:/etc/localtime"- "/usr/share/zoneinfo/Asia/Shanghai:/etc/timezone"
  • 192.168.0.195服务器上部署Redis服务(Redis从服务3)的docker-compose-redis-slave.yml文件
version: '3'services:##redis从2配置redisSlave2:image: redis:latestrestart: alwayscontainer_name: redis-slave-2command: redis-server /usr/local/etc/redis/redis.conf##将26383映射到26383上ports:- "26383:26383"volumes:##数据目录,要确保先创建好- /opt/container/redis/slave2/data:/data- /opt/container/redis/slave2/conf/redis.conf:/usr/local/etc/redis/redis.conf- /opt/container/redis/slave2/logs:/logs- "/etc/localtime:/etc/localtime"- "/usr/share/zoneinfo/Asia/Shanghai:/etc/timezone"sentinel2:image: redis:latestrestart: alwayscontainer_name: redis-sentinel-2ports:- 36383:36383command: redis-sentinel /opt/redis/sentinel/sentinel2.confvolumes:- /opt/container/redis/sentinel2/data:/data- /opt/container/redis/sentinel2/conf/sentinel2.conf:/opt/redis/sentinel/sentinel2.conf- /opt/container/redis/sentinel2/logs:/logs- "/etc/localtime:/etc/localtime"- "/usr/share/zoneinfo/Asia/Shanghai:/etc/timezone"4. 准备Redis服务的配置文件
  • 192.168.0.210主Redis配置文件,配置端口26381 , Redis密码 , 并将配置文件redis.conf上传至/opt/container/redis/master/conf目录
Appendonly yesport 26381appendfilename appendonly.aofappendfsync everysecauto-aof-rewrite-min-size 10Mauto-aof-rewrite-percentage 100requirepass "设置密码" masterauth "设置密码" replica-read-only no
  • 192.168.0.210从Redis配置文件,配置端口26382,密码,并将配置文件redis.conf上传至/opt/container/redis/slave1/conf目录
appendonly yesport 26382appendfilename appendonly.aofappendfsync everysecauto-aof-rewrite-min-size 10Mauto-aof-rewrite-percentage 100requirepass "设置密码" replicaof 192.168.0.210 26381masterauth "设置密码" replica-read-only no
  • 192.168.0.195从Redis配置文件 , 配置端口26383,密码,并将配置文件redis.conf上传至/opt/container/redis/slave2/conf目录
appendonly yesport 26383appendfilename appendonly.aofappendfsync everysecauto-aof-rewrite-min-size 10Mauto-aof-rewrite-percentage 100requirepass "设置密码" replicaof 192.168.0.210 26381masterauth "设置密码" replica-read-only no4. 准备Redis哨兵的配置文件,每个Redis服务对应一个哨兵配置
  • 192.168.0.210主Redis哨兵配置文件,配置哨兵sentinel实例运行的端口36381,Redis密码,并将配置文件sentinel.conf上传至/opt/container/redis/sentinel/conf目录
【使用Docker Compose搭建高可用Redis集群】# 哨兵sentinel实例运行的端口port 36381daemonize nopidfile /var/run/redis-sentinel.piddir /tmpsentinel monitor mymaster 192.168.0.210 26381 2sentinel auth-pass mymaster "Redis密码"# 指定多少毫秒之后 主节点没有应答哨兵sentinel 此时 哨兵主观上认为主节点下线 默认30秒sentinel down-after-milliseconds mymaster 30000# 指定了在发生failover主备切换时最多可以有多少个slave同时对新的master进行同步,这个数字越?。?完成failover所需的时间就越长sentinel parallel-syncs mymaster 1# 故障转移的超时时间sentinel failover-timeout mymaster 180000sentinel deny-scripts-reconfig yes


推荐阅读