当前位置: 首页 > news >正文

加速百度对网站文章的收录专注高端品牌网站的设计

加速百度对网站文章的收录,专注高端品牌网站的设计,安徽平台网站建设设计,初学者做电商怎么入手必看 本文是一主二从一哨兵模式#xff1b;其余的单机/集群/多哨兵模式的话#xff0c;不在本文... 本文的环境主要是#xff1a;应用app在本地#xff0c;redis在云服务器上#xff1b; 图解 图如下#xff1a;这个图很重要#xff1b; 之所以要这样画图#xff0…必看 本文是一主二从一哨兵模式其余的单机/集群/多哨兵模式的话不在本文... 本文的环境主要是应用app在本地redis在云服务器上 图解 图如下这个图很重要 之所以要这样画图是因为网上很多都是在本地的虚拟机中模拟的有些问题没有遇到... 解释下宿主机127.0.0.1~4(即云服务器的公网ip此处为了简单统一127.0.0.*标明不是在同一台服务器) 其中127.0.0.1的6777端口映射到doker内部容器172.30.0.2的6379端口其中127.0.0.2的6778端口映射到doker内部容器172.30.0.3的6379端口其中127.0.0.3的6779端口映射到doker内部容器172.30.0.4的6379端口其中127.0.0.4的26379端口映射到哨兵的doker内部容器的26379端口 之所以是重置了端口有2个原因。1是如果使用常见端口容易被有心人扫描到造成不安全2是我是在同一台云服务器上部署的3台redis和哨兵所以对外暴露的端口要不一样如果正式的生产环境可以换成一样的。 单机模式 docker-compose.yml version: 3.5 services:redis:image: redis:7.0.0container_name: redisrestart: alwayscommand: redis-server --requirepass passports:- 6379:6379volumes:- ./redis/data:/data- ./redis/config/redis.conf:/etc/redis/redis.conf redis.conf 下载redis.confwget http://download.redis.io/redis-stable/redis.conf 简化redis.conf配置 #开启保护 protected-mode yes #开启远程连接 #bind 127.0.0.1 #自定义密码 requirepass pass port 6379 timeout 0 # 在900s15分钟之后如果有一个key发生改变则dump系统快照 save 900 1 # 在300s5分钟之后如果有10个key发生改变则dump系统快照 save 300 10 # 每隔60s如果有超过1000个key发生了变更那么就生成一个新的dump.rdb文件就是当前redis内存中完整的数据快照这个操作也被称之为snapshotting快照 save 60 1000 logfile /logs/redis.log rdbcompression yes dbfilename dump.rdb dir /apps/czg-compose/redis/data # AOF持久化默认是关闭的默认是打开RDB持久化 appendonly yes appendfilename appendonly.aof #每秒将os cache中的数据fsync到磁盘这个最常用的生产环境一般都这么配置性能很高QPS还是可以上万的 appendfsync everysec单机模式不做详解 主从哨兵模式 注意本文主要是解决redis和app不在同一台机子下的问题所以将redis和sentinel的配置都放在一个docker-compose.yml中不影响使用。 如果要借据配置问题可以参考上面的单机模式... 仅需关注下面配置中的“很重要很重要很重要....”即可。 docker-compose.yml services:redis-master:image: redis:7.0.0container_name: redis-masterports:- 6777:6379 # 主节点的端口映射volumes:- redis-master-data:/data # 主节点数据持久化networks:redis-net:ipv4_address: 172.30.0.2#很重要很重要很重要之所以requirepass和masterauth密码是一样的见下面的PS2#很重要很重要很重要之所以要配置replica-announce-ip、replica-announce-port见下面的PS3command: redis-server --requirepass password --masterauth password --replica-announce-ip 127.0.0.1(外网要访问进来的ip) --replica-announce-port 6777(外网要访问进来的端口) # 可选设置密码restart: alwaysredis-slave1:image: redis:7.0.0container_name: redis-slave1ports:- 6778:6379 # 从节点的端口映射volumes:- redis-slave-data:/data # 从节点数据持久化networks:redis-net:ipv4_address: 172.30.0.3#很重要很重要很重要之所以requirepass和masterauth密码是一样的见下面的PS2#很重要很重要很重要之所以要配置replica-announce-ip、replica-announce-port见下面的PS3command: redis-server --slaveof redis-master 6379 --requirepass password --masterauth password --replica-announce-ip 127.0.0.2(外网要访问进来的ip) --replica-announce-port 6778(外网要访问进来的端口) # 配置为主节点的从节点restart: alwaysdepends_on:- redis-masterredis-slave2:image: redis:7.0.0container_name: redis-slave2ports:- 6779:6379 # 从节点的端口映射volumes:- redis-slave-data:/data # 从节点数据持久化networks:redis-net:ipv4_address: 172.30.0.4 #很重要很重要很重要之所以requirepass和masterauth密码是一样的见下面的PS2#很重要很重要很重要之所以要配置replica-announce-ip、replica-announce-port见下面的PS3command: redis-server --slaveof redis-master 6379 --requirepass password --masterauth password --replica-announce-ip 127.0.0.3(外网要访问进来的ip) --replica-announce-port 6779(外网要访问进来的端口) # 配置为主节点的从节点restart: alwaysdepends_on:- redis-masterredis-sentinel:image: redis:7.0.0container_name: redis-sentinelports:- 26379:26379command: redis-sentinel /etc/redis/sentinel.confvolumes:- ./conf/sentinel.conf:/etc/redis/sentinel.confnetworks:redis-net:ipv4_address: 172.30.0.16depends_on:- redis-master- redis-slave1- redis-slave2restart: alwaysnetworks:redis-net:driver: bridgeipam:config:- subnet: 172.30.0.0/16 # 子网范围gateway: 172.30.0.1 # 网关 volumes:redis-master-data:redis-slave-data: sentinel.conf # 哨兵监听的端口号 port 26379# 哨兵进程在前台运行不以后台守护进程方式运行 daemonize no# 指定PID文件的存储路径 pidfile /redis-sentinel.pid# 设置 Sentinel 服务器的密码 #requirepass password# 不记录日志文件日志输出到标准输出 logfile # 设置工作目录为/data用于存储临时文件 dir /data# 这是 Sentinel 用来监控主节点 redis-master主节点的主机名和端口是否正常工作。1 表示至少需要 1 个 Sentinel 同时认为主节点不可用时才会触发故障转移。 ### mymaster要在spring.data.redis.sentinel.mastermymaster中配置 ### 此处的172.30.0.2和redis-master是一样的意思就是master的虚拟机里面的ip ### 但是不知道为啥我的Sentinel加入不到redis-net的网络中(可以使用docker exec redis-sentinel nslookup redis-master 验证在redis-sentinel容器中是否能解析redis-master)所以配置redis-master的时候访问不到只能配置172.30.0.2虚拟机ip不过这里不重要反正在生产中sentinel和redis不会在docker虚拟机的同一个网段...不纠结... #sentinel monitor mymaster redis-master 6379 1 #sentinel monitor mymaster 172.30.0.2 6379 1### 很重要很重要很重要之所以不采用上面两个方法原因见下面“PS1” sentinel monitor mymaster 127.0.0.1(master的对外ip) 6777(master的对外的端口) 1# 在sentinel.conf中为每个Redis节点添加announce配置 sentinel announce-ip 127.0.0.4(哨兵对外暴露的ip) #sentinel announce-port 26379# 为每个Redis节点设置公网通告配置 ### 很重要很重要很重要之所以要配置通告见下面的PS3 ### 注意如果不配置这个的话当原master宕机slave成为新的master以后客户端获取到的ip地址是docker内部地址是无法访问的所以需要配置对外通告ip、端口 ### 除此还要配置redis.conf文件(或docker-compose.yml中的启动配置)... sentinel config-epoch mymaster 0 # master(6777)的通告配置 sentinel known-replica mymaster 127.0.0.1(master的对外ip) 6777 # slave1(6778)的通告配置 sentinel known-replica mymaster 127.0.0.2(slave1的对外ip) 6778 # slave2(6779)的通告配置 sentinel known-replica mymaster 127.0.0.3(slave2的对外ip) 6779# 设置 Sentinel 使用的密码进行连接如果你的 Redis 配置了密码。 sentinel auth-pass mymaster password #sentinel deny-scripts-reconfig yes # 表示当 Sentinel 监控到主节点 30 秒钟无法响应时认为主节点宕机。 sentinel down-after-milliseconds mymaster 30000# 设置故障转移的超时时间单位是毫秒。 sentinel failover-timeout mymaster 180000# 设置在故障转移时并行同步的从节点数量。 sentinel parallel-syncs mymaster 1 很重要很重要很重要PS1 如果在sentinel的配置中配置master的虚拟机ip(172.30.0.2)在我们使用自己的本地应用程序app-client连接的时候是无法连接到master。我们使用应用程序连接redis的时候先连接sentinelsentinel会告诉我们master的ip以及端口获取到master的ip端口后应用程序再去连接redis。此时如果我们在这里配置的是虚拟机ip或者容器名称那么sentinel返回的就是虚拟机ip而我们的应用程序在本地、redis在云服务器上这两者不在同一台机子所以应用程序使用172.30.0.2:6379或者容器名称是没法访问到虚拟机内部的master的(如果master和app-client是在同一台机子是没有问题的)所以此处要配置成宿主机ip映射的端口(即公网/外网ip----或者你使用Redis Desktop Manager之类的客户端工具能直接连接的ip端口即可)。 很重要很重要很重要PS2 之所以要保持requirepass和masterauth密码是一样的就是为了减少复杂配置假如我们的每台机子密码不一样当我们的master宕机后slave1成为新的master后slave2要去连接这个新的master也就是slave2连接slave1此时如果密码不一致那么还需要在slave2中配置slave1的密码反之奕然所以最简单的方法就是所有密码保持一致... 在网上很多文章的redis其实是没有密码设置的所以并没有配置这个。 当然这样做可能有一定风险所以将端口给重置化使用不常用的端口可以减少风险除此之外可以通过云服务器的后台管理端绑定固定ip访问。比如只能slave1、slave2、master、sentinel以及你本地/应用服务器的ip这几者之间可以互相通信其他ip都直接拒绝即可。这样做的话可以防止绝大多数恶意访问总比不设置密码好很多 很重要很重要很重要PS3 之所以要配置通告原因类似于PS1。因为如果当原来的master宕机后sentinel会选择slave节点成为新的master而此时就会出现PS1中的问题在app-client中获取到的就是docker内部容器的ip使用本地的app-client是无法访问到服务器的docker容器内的redis的所以需要配置通告对外公布自己可以访问的ip和端口也就是说要配置我们通过第三方客户端例如“Redis Desktop Manager”之类工具访问的ip和端口... 注意如果master、slave、sentinel、app-client应用都在同一个网段甚至同一台服务器是不会出现PS1和PS3的问题的 验证安装是否成功 1、使用redis-cli工具查看 master节点查看 docker exec -it redis-master redis-cli -h 127.0.0.1 -p 6379 -a pass info replicationdocker exec -it redis-master redis-cli -h 127.0.0.1 -p 6379 -a pass info replication| grep -E role|master_host|master_port master只需要关注role、master_host、master_port即可 slave节点查看 docker exec -it redis-slave1 redis-cli -h 127.0.0.1 -p 6379 -a pass info replicationdocker exec -it redis-slave2 redis-cli -h 127.0.0.1 -p 6379 -a pass info replication| grep -E role|connected_slaves|slave*slave只需关注role、connected_slaves、slave*即可 sentinel节点查看 docker exec -it redis-sentinel redis-cli -h 127.0.0.1 -p 26379 -a pass info sentinel|grep -E sentinel_masters|master* sentinel只需要关注sentinel_masters、master0即可 此时如果停止原来的master等待一段时间(本文是30s左右)后sentinel会选举slave成为新的master此时也可以通过上面方式查看 此时如果重新启动原来的master会自动链接到新的master成为新的slave。有兴趣的可以试一试... 2、使用桌面工具 如果安装成功了可以使用sentinel的ip端口进行访问 本文就是127.0.0.4:26379密码... 3、使用应用程序进行连接 ...... 可自行百度.... redis-cli常用命令 ### 原生redis-cli redis-cli -h host -p port -a password ### docker安装 docker exec -it redis-master redis-cli -h 127.0.0.1 -p 6379 -a pass 127.0.0.1:6379 PING     PONG   ### 即成功 127.0.0.1:6379 set LTingZxTest04 ZHANGSANLISIWANGWU OK 127.0.0.1:6379 get LTingZxTest04  ZHANGSANLISIWANGWU 切换DB库 127.0.0.1:6379 SELECT DB库(1、2、3...) 获取所有key 阻塞 127.0.0.1:6379 KEYS * 获取所有key 127.0.0.1:6379 KEYS *user* 获取所有包含 user 的键。 非阻塞 127.0.0.1:6379 SCAN 0 开始扫描键。 127.0.0.1:6379 SCAN 0 MATCH user* 匹配特定模式的键。 127.0.0.1:6379 SCAN 0 COUNT 10 每次返回10个键。 查看类型 type key_name 过期key EXPIRE key time 过期key TTL key 查看键的剩余生存时间秒 PTTL key 查看键的剩余生存时间毫秒。 发布/订阅 SUBSCRIBE channel 订阅频道例如 SUBSCRIBE mychannel。 PUBLISH channel message 发布消息到频道例如 PUBLISH mychannel Hello。 获取list key lrange key start end 获取所有lrange key 0 -1 获取列表中所有元素 获取前2条lrange key 0 2 获取列表的前3个元素 查看hash HGETALL hashkey 获取哈希中所有字段和值例如 HGETALL myhash。 HGET hashkey field 获取哈希中特定字段的值例如 HGET myhash username。 查看集合 SMEMBERS setkey 获取集合中所有成员例如 SMEMBERS myset。 其他有用命令 EXISTS key 检查键是否存在返回1表示存在0表示不存在。 LLEN key 查看列表的长度例如 LLEN mylist。 HLEN hashkey 查看哈希中字段的数量例如 HLEN myhash。 SCARD setkey 查看集合中成员的数量例如 SCARD myset。 DEL key 删除键例如 DEL mykey。 EXPIRE key seconds 设置键的过期时间例如 EXPIRE mykey 3600。
http://www.hkea.cn/news/14531594/

相关文章:

  • 成都免费建站网站公告栏设计
  • asp连接数据库做登录网站完整下载修改wordpress登录密码
  • 那个网站有帮人做图的昆明网站建设专家
  • wordpress 新建分类公司seo推广营销网站
  • 公司网站建设需求绍兴专业做网站公司
  • 建设手机移动网站外贸网站平台都有哪些平台
  • 网站页面统计代码网站推广的电子邮件推广
  • 要加强县门户网站的建设管理办法做一个商品网站多少钱
  • 网站建设 新手从怎么做页眉
  • 山东城市建设职业学院教务网网站北京建设部网站官网
  • 自己做网站做淘宝客拍摄网
  • 17做网站广州沙河茶山网站建设公司
  • 沈阳市网站建设黄山风景区门票价格
  • dw怎么做网站后台南昌企业网站建设费用
  • 帮人做网站的公司wordpress 导出数据库
  • 哪里找专业做网站的公司网站的背景图怎么做的
  • 合肥做网站的公司百度品牌推广多少钱
  • 公司网站建设深圳专业建设网站
  • 昆明建设网站代理软件
  • 网站需求文档搬瓦工做网站方法
  • 网站推广的几个阶段外贸软件定制
  • 做网站源代码怎么下载网站开发商外包
  • 西宁圆井模板我自己做的网站wordpress直接读取数据库
  • 中国建设人才服务信息网是什么网站wordpress图片备用地址
  • 江门模板建站定制机械营销网站建设案例
  • 企业门户网站主要功能golang wordpress
  • 2017招远网站建设wordpress镜像
  • 济阳做网站多少钱企业邮箱怎么注册开通
  • 苏州网站建立公司湖北 个人网站备案时间
  • 网站开发公司 上深圳专业做网页的公司