范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

dockercompose搭建Redis哨兵模式

  环境:Ubuntu 20.04 64版/Centos7
  docker版本:20.10.16
  docker-compose版本:1.25.1
  redis镜像版本:docker.io/redis:6.2.5-alpineDocker版本变化说明:
  Docker从1.13.x开始分为社区版CE和企业版EE,版本号也改为按照时间线来发布,比如17.03就是2017年3月。
  Docker的linux发行版的软件仓库目前为https://download.docker.com, 软件包名字改为docker-ce和docker-ee。ubuntu安装docker
  Docker的社区版(Docker Community Edition)叫做docker-ce。老版本的Docker包叫做docker或者docker-engine,docker官网推荐的安装方式都是下载docker安装脚本安装。
  卸载旧版docker (若未安装过可省略此步):
  sudo apt-get remove docker docker.io docker-engine
  安装最新版本docker:curl -sSL https://get.docker.com/ | sh
  或者
  curl -fsSL get.docker.com -o get-docker.sh
  sudo sh get-docker.sh
  确认Docker安装成功,拉取一个单机版本redis的docker:
  docker run -d -p 6379:6379 -v ~/redisdata:/data redis:6.2.5 redis-server --appendonly yescentos安装docker
  安装软件包
  yum install -y yum-utils device-mapper-persistent-data lvm2
  设置yum源
  yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  查看有哪些版本可以装(知道要安装的版本号可直接跳过)
  yum list docker-ce --showduplicates | sort -r
  安装docker,注意需要输入完整的版本号
  yum install docker-ce-20.10.9-3.el8
  安装完成后,将docker加入开机自启动
  systemctl start docker
  systemctl enable docker
  检查是否安装成功
  docker version两种dockercompose安装方式
  daocloud下载最新版的docker-compose文件
  sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/ docker-compose
  从github上下载docker-compose二进制文件安装
  github.com下载最新版的docker-compose文件
  sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
  添加可执行权限
  sudo chmod +x /usr/local/bin/docker-compose
  测试安装结果
  docker-compose --version
  2.pip安装
  sudo pip install docker-compose主从模式
  建立文件目录: mkdir -p /redisMasterSlave
  创建文件 docker-compose.ymlversion: "3" services:   master:     environment:       - TZ=Asia/Shanghai     image: docker.io/redis:6.2.5-alpine     container_name: redis_master     restart: always     command: redis-server --requirepass redisMima1 --masterauth redisMima1     ports:       - 6379:6379   slave1:     environment:       - TZ=Asia/Shanghai     image: docker.io/redis:6.2.5-alpine     container_name: redis_slave_1     restart: always     command: redis-server --slaveof redis_master 6379 --requirepass redisMima1  --masterauth redisMima1     ports:       - 6380:6379    slave2:     environment:       - TZ=Asia/Shanghai     image: docker.io/redis:6.2.5-alpine     container_name: redis_slave_2     restart: always     command: redis-server --slaveof redis_master 6379 --requirepass redisMima1 --masterauth redisMima1     ports:       - 6381:6379
  启动命令:docker-compose -f docker-compose.yml -p redisMima1 up -d
  查看实例中的redis角色的命令
  docker exec redis_master redis-cli -a redisMima1  info replication
  不用进到容器里看,直接在shell下执行即可, 其中redis_master为容器名, -a指定redis密码 哨兵模式
  哨兵模式是基于主从的, 建立文件目录如下    redisMasterSlave       docker-compose.yml       redis_sentinel.yml       sentinel1           sentinel.conf       sentinel2           sentinel.conf       sentinel3           sentinel.conf
  只需要准备三件事 docker-compose.yml
  docker-compose.yml配置与主从模式一样,可直接拷贝 redis_sentinel.yml
  redis_sentinel.yml配置如下 version: "3" services:   sentinel1:     environment:        - TZ=Asia/Shanghai     image: docker.io/redis:6.2.5-alpine     container_name: redis_sentinel_1     restart: always     command: redis-sentinel /usr/local/etc/redis/conf/sentinel.conf     ports:       - 26379:26379     volumes:       - ./sentinel1/:/usr/local/etc/redis/conf/      sentinel2:     environment:        - TZ=Asia/Shanghai     image: docker.io/redis:6.2.5-alpine     container_name: redis_sentinel_2     restart: always     command: redis-sentinel /usr/local/etc/redis/conf/sentinel.conf     ports:       - 26380:26379     volumes:       - ./sentinel3/:/usr/local/etc/redis/conf/       sentinel3:     environment:        - TZ=Asia/Shanghai     image: docker.io/redis:6.2.5-alpine     container_name: redis_sentinel_3     restart: always     command: redis-sentinel /usr/local/etc/redis/conf/sentinel.conf     ports:       - 26381:26379     volumes:       - ./sentinel3/:/usr/local/etc/redis/conf/          networks:   default:     external:       name: redis_default
  注意networks配是主从模式的网络, 查看主从的任意一台实例可知网络, 查看命令 docker inspect redis_master |grep Networks -A 15
  结果如下 ip为 172.19.0.4
  3. sentinel.conf
  以下的是sentinel1#下的sentinel.conf port 26379 dir "/tmp" sentinel monitor mymaster 172.19.0.4 6379 2 sentinel auth-pass mymaster root sentinel down-after-milliseconds mymaster 30000 sentinel parallel-syncs mymaster 1 sentinel failover-timeout mymaster 180000 sentinel deny-scripts-reconfig yes
  sentinel2#与sentinel3#下的配置文件的port分别改为26380, 26381, 其它一样
  注意其中的172.19.0.2是master的docker网络的ip
  启动命令 docker network create redis_default docker-compose -f redis_sentinel.yml -p redis up -d
  完成后查看容器运行情况 docker ps 为方便试错, 将常用命令写成脚本run_REDIS#!/bin/bash if [ $# -gt 1 ] then   echo "wrong arg numbers"   exit fi op=$1 if test -z "$op" then   echo "null arg" elif [ $op == "stop" ] then   docker stop redis_master redis_slave_1 redis_slave_2 redis_sentinel_1 redis_sentinel_2 redis-sentinel-3 elif [ $op == "stop1" ] then   docker stop redis_master redis_slave_1 redis_slave_2 elif [ $op == "stop2" ] then   docker stop redis_sentinel_1 redis_sentinel_2 redis_sentinel_3 elif [ $op == "clear" ] then   docker container rm redis_master redis_slave_1 redis_slave_2 redis_sentinel_1 redis_sentinel_2 redis_sentinel_3 elif [ $op == "clear1" ] then   docker container rm redis_master redis_slave_1 redis_slave_2 elif [ $op == "clear2" ] then   docker container rm redis_sentinel_1 redis_sentinel_2 redis_sentinel_3 elif [ $op == "start1" ] then   docker start redis_master redis_slave_1 redis_slave_2 elif [ $op == "start2" ] then   docker start redis_sentinel_1 redis_sentinel_2 redis_sentinel_3 elif [ $op == "up1" ] then   docker-compose -f docker-compose.yml -p redis up -d elif [ $op == "up2" ] then   docker-compose -f redis_sentinel.yml -p redis up -d elif [ $op == "info-master" ] then   docker exec redis_master redis-cli -a root info replication elif [ $op == "info-slave-1" ] then   docker exec redis_slave_1 redis-cli -a root info replication elif [ $op == "info-slave-2" ] then   docker exec redis_slave_2 redis-cli -a root info replication elif [ $op == "test" ] then   echo "test pass" else   echo "arg invalid: $1" fi
  启动主从docker-compose: ./run_REDIS up1
  启动哨兵docker-compose: ./run_REDIS up2
  启动主从容器: ./run_REDIS start1
  启动哨兵容器: ./run_REDIS start2
  停止主从与哨兵所有容器: ./run_REDIS stop
  停止主从容器: ./run_REDIS stop1
  停止哨兵容器: ./run_REDIS stop2
  清除主从与哨兵所有容器: ./run_REDIS clear
  清除主从所有容器: ./run_REDIS clear1
  清除哨兵所有容器: .run_REDIS clear2
  现在可以很方便地试错了~ 搭建哨兵模式过程中的常见问题指定sentinel.conf配置文件映射到容器内时直接使用文件映射, 这么做有可能导致哨兵没有写入配置文件的权限, 表现为WARNING: Sentinel was not able to save the new configuration on disk!!!: Device or resource busy. 解决方案:使用文件夹映射 看似搭建起来了, 可当stop掉master后哨兵却不会选举新的主节点, 可能是哨兵改写了sentinel.conf后使用了一样的myid. 解决方案: stop掉哨兵, 删掉myid那一行, 重新启动哨兵. myid会自动重新生成. 从库没有权限打开临时文件, 表现为同步时大量出现 Opening the temp file needed for MASTER <-> REPLICA synchronization: Permission denied 的log记录. 解决方案: sudo -u root ./redis-server [配置文件] 方式启动

Coinbase迈出交易加密期货的第一步Coinbase今天宣布,它已向美国全国期货协会申请成为注册期货佣金商。这表明该交易所正在寻求从单纯的现货交易转向利润丰厚的衍生品交易业务,在这种业务中,人们可以押注未来价格。典型手机慢速度快门平移跟拍8月30日晚上七点半多在小区北门路口拍摄平移跟拍照片分享如附图。ISO2300,S16sISO2300,S16sISO2300,S18sXHD,12。5MB,ISO1225,S12手机慢速度快门平移跟拍8月28日晚上六点半左右在小区北门路口拍摄平移跟拍,先由ISO100,S18s,陆续变暗了调整ISO值,200400,8002000,感觉拍摄够多了,结束回家。照片分享如附图。IS手机慢速度快门跟拍旋转8月30日晚上七点半左右在小区北门路口拍摄慢速度快门跟拍旋转,照片分享如附图。XHD,12。6MB,ISO860,S120s上图裁切整理,3。4MBXHD,13。0MB,ISO33Coinbase将为Facebook新的数字钱包子公司Novi提供加密托管服务今天,Coinbase宣布将为Facebook新的数字钱包子公司Novi的试点项目提供加密托管服务。Paxos写了一篇关于试点的文章,称这一消息代表了数字资产的潮流转变,因为这是第银行不打算创建自己的DeFi协议替代方案摩根大通企业发展主管称,尽管投资银行在去中心化金融领域拥有大量机会,但银行不一定要建立自己的系统或现有DeFi协议的替代方案。随着主要金融机构进入DeFi领域,一些私人基础设施将是DeFi空投如何激励多个以太坊钱包空投是DeFi用户数量几乎每天都在不断打破记录的关键原因之一,它们已成为平台感谢用户参与的最受欢迎的方式之一。Uniswap在领先的分散式交换DeFi,也许是最大的DeFi平台来做DeFi代币Ampleforth在Avalanche上发布最初的变基代币之一Ampleforth(AMPL)现在在快速增长的Avalanche网络上运行。Ampleforth协议通过将波动性从价格转移到供应量来每天调整总供应量,并且该协议比特币跳水未浇熄新政热情萨尔瓦多总统亲自带货数字钱包应用尽管在萨尔瓦多周二正式将比特币列为法币后,比特币当日晚间价格出现高台跳水,但这仍未浇熄萨尔瓦多政府拥抱比特币的热情。当地时间周三,萨尔瓦多总统在推特上亲自带货该国的比特币数字钱包应印度储备银行前副行长力促印度接受加密货币印度储备银行前副行长将加密货币视为一种应税资产或商品。印度储备银行(RBI)前副行长对该国的金融和加密生态系统发表了看法,并表示需要接受数字资产。9月7日,RamaSubraman比特币作为数字黄金具有巨大的上升潜力在一份提交给美国证券交易委员会的报告中,比尔米勒的对冲基金米勒机会信托的基金经理表示,作为数字黄金,比特币具有巨大的上升潜力。该报告表示,尽管比特币有波动性,但它的风险回报率是有吸
赛迪观点算法滥用的社会危害及治理建议算法是数字社会发展的重要基石,通过将人们解决问题的逻辑经验等以代码形式固化,建立起基于人工智能技术网络平台运行的一系列规则。随着数据挖掘人脸识别人机交互等技术在经济社会的深入应用,想拍出神仙级别的照片?iPhone只需要这样设置就行果粉是否曾怀疑过自己的手机能不能拍出漂亮的照片?每次看到别人手机所拍出的照片就会很羡慕?殊不知,iPhone的原相机也能拍出神仙级别的照片,其实只要这样设置就行了!教你iPhone国产墨水屏读书平板评测,10英寸背光大屏,支持看漫画听书随着智能时代的到来,传统阅读方式逐渐被电子产品所取代,近些年消费者更是热衷于水墨屏电子书相比纸质书籍,电子书不仅携带方便内容丰富,有些产品还具备书写和护眼等功能,能带给用户更舒适的新一代KindlePaperwhite电子书阅读器来了有史以来最大屏幕今天,亚马逊宣布推出全新KindlePaperwhite电子书阅读器,搭载多项技术升级,为用户提供更加舒适便捷的阅读体验。与前代产品相比,全新KindlePaperwhite配备了仅需499元,便可组建家用NAS,海康G1Master体验分享现在是大数据时代,绝大多数的人们每天都会产生很多数据,其中相片,视频这类数据占据绝大多数,很多数据越积越多,还不舍的删除,往往很多用户会存入网盘。不过放在网盘真的不放心,像当年的3实现无缝网络连接,蒲公英X4C路由器作为一名对网络知识有基础了解的数码爱好者,我试用过几款贝锐推出的网络产品,发现贝锐公司是属于一间技术型的公司,它家的产品非常注重产品的实用性,贝锐公司对新网络技术和由新技术转化的产股市里庄家真的会故意做空打压筹码吗,他们就不怕被别人抢走廉价筹码吗?打压是会出现的,只是不是所有的时候都会进行打压。对于大多数庄股来说,打压拿货是常用的手段,主力先拿少数的货,然后用拿到的货向下打压,这个过程中会带出筹码。所以边打边接,实在不行了,按黑龙江的经济水平来说,哈尔滨目前的消费水平高吗?这个问题,我觉得只要是在哈尔滨生活过的人,都会有目共睹的!毕竟每个人的消费理念是不同的!就拿哈尔滨人来讲,其实很多有钱人的!如果在他们眼里的话,我觉得消费应该还算可以的吧!但是讲真奇葩本葩!立陶宛要求民众扔掉中国手机亚太日报丁宁据路透社报道,立陶宛国防部近日建议消费者避免购买中国手机,并建议人们扔掉他们现有的中国手机,因为一份政府报告认定这些设备具有内置审查功能。周二,立陶宛国营网络安全机构周红魔游戏手机6SPro预热,为游戏而生,这个散热可以吹爆红魔游戏手机官方继续为红魔游戏手机6SPro预热,这次的手机搭载的是ICE7。0九层多维立体散热系统,还有RGB风扇,这部手机为游戏而生的,也相当于加了rgb的风扇之后,它就像一个iOS15上线,5个让苹果手机边聪明的新功能在九月AppleEvent之后,你也考虑要入手热腾腾的iPhone13吗?如果还没有打算要换手机的话,也别忘了还有全新的系统iOS15已经登场,即使不用买新手机,也能享受的功能升级