redis集群部署
服务应用
本次搭建redis服务给联通服务
redis集群架构
redis采用docker搭建的一主两从、哨兵模式。架构如下图所示:
master ip:192.168.132.2 port: 6379
slave1 ip:192.168.132.3 port: 6379
slave2 ip:192.168.132.4 port: 6379
sentinel1 ip:192.168.132.2 port: 26379
sentinel2 ip:192.168.132.3 port: 26379
sentinel3 ip:192.168.132.4 port: 26379
哨兵模式介绍:
- 监控(Monitoring):Sentinel会不断地检查你的主服务器和从服务器是否运作正常。
- 提醒(Notification):当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。
- 自动故障迁移(Automatic failover):当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作, 它会将失效主服务器的其中一个从服务器升级为新的主服务器, 并让失效主服务器的其他从服务器改为复制新的主服务器;
- 配置提供者: Sentinel充当客户端服务发现的授权来源:客户端连接到Sentinels,以询问负责给定服务的当前Redis主服务器的地址。 如果发生故障转移,Sentinels将报告新地址。(这也是客户端接入入口)
搭建步骤
本次服务采用docker-compose启动,故先定义相关yml文件。
部署文件都在三台虚拟机的/home/work/online/redis下
-
定义redis.conf
# redis.conf可以通过命令直接下载下来 wget -c http://download.redis.io/redis-stable/redis.conf # 注意需要修改配置中bind的配置为: bind 0.0.0.0 # 否则可能会导致master宕机时,sentinel无法进行选举。 logfile /var/log/redis.log. # 定义日志文件位置
-
定义三台主机上的sentinel.conf配置文件
# sentinel端口 port 26379 # 日志文件 logfile "sentinel_26379.log" # 备份或日志文件存放位置 dir "/data" # 定义master 不可达持续多少毫秒后开始定义为节点下线,默认30s sentinel down-after-milliseconds mymaster 30000 # 在故障转移期间同时与新的master同步的slave数量 sentinel parallel-syncs mymaster 1 # 定义进行故障转移的超时时间,默认3分钟 sentinel failover-timeout mymaster 180000 # 定义监控的master节点 sentinel monitor mymaster 10.16.3.2 6379 2
-
定义三台主机的docker-compose.yml启动文件,以下配置为master(192.168.132.2)下的配置,另外两台除了container_name需要修改,其他配置不变
version: '3.7' services: master: image: redis container_name: redis-master restart: always command: redis-server ports: - "6379:6379" volumes: - "/tmp/data:/data" - "/tmp/log:/var/log" - "/home/work/online/redis/redis.conf:/usr/local/etc/redis/redis.conf" sentinel1: image: redis container_name: redis-sentinel-1 ports: - "26379:26379" command: redis-sentinel /usr/local/etc/redis/sentinel.conf volumes: - "./sentinel1.conf:/usr/local/etc/redis/sentinel.conf" - "/home/work/online/redis/redis.conf:/usr/local/etc/redis/redis.conf"
配置完成后,分别在三台主机的/home/work/online/redis下直接执行docker-compose up -d启动即可。