Docker Compose搭建Redis一主二从三尖兵高可用集群
win10配置CUDA+Tensorflow2.0的一些经验
一、Docker Compose引见
Docker官方的网站是如许引见Docker Compose的:
Compose是用于定义和运转多容器Docker应用程序的东西。经由过程Compose,您可以运用YAML文件来设置应用程序的效劳。然后,运用一个敕令,就可以从设置中建立并启动一切效劳。
这里Docker Compose给我的感觉就是便利、疾速。只需编写一个docker-compose.yml文件,然后经由过程敕令docker-compose up -d,这里就可以搭建多个效劳起来,异常合适搭建集群环境。
二、装置Docker Compose东西
经由过程敕令装置Compose东西,装置Compose的条件是装置了Docker环境,怎样装置和疾速运用Docker,可以翻看我之前的那篇博客--,这里不做赘述了。
sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
给装置剧本增加实行权限
sudo chmod +x /usr/local/bin/docker-compose
这里可以运用敕令检察是不是装置胜利
docker-compose -v
到这里Compose东西就装置好了
三、运用Compose搭建Redis主从效劳器
主从复制:主节点担任写数据,从节点担任读数据,主节点按期把数据同步到从节点保证数据的一致性。
从机能方面,redis复制功用增加了读的机能,理论上说,每增加一倍的效劳器,全部体系的读才能就增加一倍。
挑选好途径,经由过程敕令建立文件夹redis,然后进入文件夹建立docker-compose.yml,或许在当地建立,然后经由过程Xftp东西上传至效劳器。docker-compose.yml写入以下内容。
version: '2' services: master: image: redis ## 镜像 container_name: redis-master ##容器别号 command: redis-server --requirepass 123456 ##redis暗码 ports: - "6379:6379" ##暴露端口 networks: - sentinel-master slave1: image: redis container_name: redis-slave-1 ports: - "6380:6379" command: redis-server --slaveof redis-master 6379 --requirepass 123456 --masterauth 123456 depends_on: - master networks: - sentinel-master slave2: image: redis container_name: redis-slave-2 ports: - "6381:6379" command: redis-server --slaveof redis-master 6379 --requirepass 123456 --masterauth 123456 depends_on: - master networks: - sentinel-master
启动redis集群
docker-compose up -d
docker ps检察运转的实例,这里我们须要用到主节点的ip地点,注重不是电脑的ip哦,是节点的ip地点。
docker inspect 主节点容器id
这里先记住这个ip地点,背面运用到尖兵须要绑定这个主节点的ip。
四、尖兵sentinel形式搭建
上面我们已搭建好了主从形式,当主效劳器宕机后,须要手动把一台效劳器切换成主效劳器,这里须要人工干预,省事辛苦,还会形成一段时候内效劳不可用。这不是一种引荐的体式格局,更多时刻,我们优先斟酌
尖兵形式。 尖兵是redis高可用的解决方案,由一个或多个Sentinel实例构成的Sentinel体系可以看管恣意多个主效劳器以及这些主效劳器部属的一切从效劳器,它可以在被看管的主效劳器下线时,自动将该主效劳器部属的某个优先的从效劳器升级为新的主效劳器,由这个主效劳器替代已下线的主效劳器继承处置惩罚敕令要求。 尖兵的功用: 1.监控:尖兵会不断地监控检测主节点和从节点是不是运作一般。 2.自动毛病转移:当主节点不能一般事情时,尖兵会入手下手自动毛病转移操纵,它会将失效主节点的个中一个从节点升级为新的主节点,并让其他从节点改成复制新的主节点。 3.关照:尖兵可以将毛病转移的效果发送给客户端。 4.设置提供者:客户端在初始化时,经由过程衔接尖兵来取得当前Redis效劳的主节点地点。 这里建立sentinel文件夹,然后一样编写docker-compose.yml文件
version: '2' services: sentinel1: image: redis ## 镜像 container_name: redis-sentinel-1 ports: - "26379:26379" command: redis-sentinel /usr/local/etc/redis/sentinel.conf volumes: - "./sentinel.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_sentinel-master
继承在此目次编写文件,编写sentinel.conf文件
port 26379 dir /tmp #172.18.0.3填写本身的主节点ip sentinel monitor mymaster 172.18.0.3 6379 2 sentinel auth-pass mymaster 123456 sentinel down-after-milliseconds mymaster 30000 sentinel parallel-syncs mymaster 1 sentinel failover-timeout mymaster 10000 sentinel deny-scripts-reconfig yes
对敕令的诠释
第三行示意Redis监控一个叫做mymaster的运转在172.18.0.3:6379的master,投票抵达2则示意master以及挂掉了。
第四行设置主节点的暗码。
第五行示意在一段时候范围内sentinel向master发送的心跳PING没有复兴则以为master不可用了。
第六行的parallel-syncs示意设置在毛病转移以后,同时可以从新设置运用新master的slave的数目。数字越低,更多的时候将会用毛病转移完成,然则假如slaves设置为效劳旧数据,你可能不愿望一切的slave同时从新同步master。由于主从复制关于slave黑白壅塞的,当住手从master加载批量数据时有一个少焉耽误。经由过程设置选项为1,确信每次只要一个slave是不可抵达的。
第七行示意10秒内mymaster还没活过来,则以为master宕机了。
建立好文件后,复制好三份
cp sentinel.conf sentinel1.conf
cp sentinel.conf sentinel2.conf
cp sentinel.conf sentinel3.conf
启动redis尖兵形式
docker-compose up -d
五、毛病转移测试
上面既然说到了尖兵可以自动转移毛病,也就是当主节点宕机的时刻,它们能经由过程选举制度,在从节点中选出一个节点来替代主节点。
我们先来看看主节点此时的信息,这里a288c55db497是我主节点容器的ip,这里先是进入容器,再进入redis客户端,再输入暗码,然后运用info检察节点信息。
这里可以看到这个节点的身份是master也就是主节点,然后有两个衔接着的从节点
如今我们停掉这个节点,看看尖兵是不是可以完成毛病转移
docker stop a288c55db497
然后挑选个中一个从节点进入客户端,输入info检察信息
这里发明个中一台从节点已变成主节点了,而且衔接的从节点,也变成了一个。
相识Docker Compose可参考:
相识Redis主从尖兵可参考:
如何构建阿里小蜜算法模型的迭代闭环?