tnsnames.ora配置未生效_nginx高可用配置未生效问题跟踪
事件回溯
1.nginx默认配置upstream时,会有失败检测,超过失败次数,则会在一定时间内不进行转发
2.参考我们线上配置为30秒内1次失败不再对该服务提供者进行转发
upstream preview {
server s1:20000 weight=2 fail_timeout=30s max_fails=1;
server s2:20000 weight=2 fail_timeout=30s max_fails=1;
server s3:20000 weight=1 fail_timeout=30s max_fails=1;
}
3.基于我们的配置,还是会有一次失败会透露给用户,因此再次基础上增加了proxy_nexy_upstream
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto https;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_pass http://preview;
}
4.结果我们还是收到了用户反馈的出现502的情况
5.基于反馈问题,我们拉取了nginx的日志,拉取日志的过程也出现了两次错误
# 错误的日期,错误的状态码
cat /opt/log/preview_access.log|grep 07/Apr/2020:10|grep "/dcs.web"|awk '{if($9=502) print $0}'|grep -v "/dcs.web/onlinefile"
# 错误的状态码复写
cat /opt/log/preview_access.log|grep 08/Jul/2020:|grep "/dcs.web"|awk '{if($9=502) print $0}'
# 正确的日志命令
cat /opt/log/preview_access.log|grep 08/Jul/2020:10 | grep "/dcs.web"|awk '{if($9==502) print $0}'
6.跟开发确认,哪些是对我们的请求,得到的回复是[GET /dcs.web/$id]这样的数据格式,对比拿到的错误日志,发现无论哪台服务器均会收到502的错误
7.再次跟前端业务要求反馈用户请求数据,拿到数据对比也没有找到具体数据
8.中午之后,善军重新查找日志,发现所有的nginx的502总共只有5条数据,多次对比拉取日志命令发现,获取数据时,命令错误,误将http状态码重新赋值为502
9.再次重新拉取请求日志,以及对比错误日志,发现502日志均为POST请求,错误日志中出现的get请求均正常返回200给到客户端
10.再次跟开发确认,到底哪个是我们提供的接口,需要做数据对比检查的,反馈两个接口均需要。
11.此时,已经真相大白了,出错的POST请求响应502均为服务挂掉的ip,则可知服务挂掉时候的POST请求未重试转发,且已知proxy_next_upstream不会对非幂等请求进行转发
12.修改proxy_next_upstream配置,针对【/dcs.web/onlinefile】接口,增加【non_idempotent】配置
总结
1.确认受影响范围([GET /dcs.web/$id],[POST /dcs.web/onlinefile]),遗漏接口跟踪,导致忽略重点问题POST请求
2.日志抓取,一定要确认抓到到正确的日志,否则一切都是徒劳
3.一定要猜想之后,找到证据,证明猜想,才能定位正确问题,否则一切始终都是猜想
4.proxy_next_upstream的non_idempotent是否可以配置,要根据接口是否能够支持幂等重试来决定,不能全部配置
tnsnames.ora配置未生效_nginx高可用配置未生效问题跟踪相关推荐
- 2008r2文件服务器高可用,Windows Server 2012 R2 文件服务器安装与配置07 之文件服务器高可用配置DFS...
今天和大家分享的是关于文件服务器高可用配置,简单一点说就是当一台机宕机的时候,另一台文件服务器可以继续为你提供文件服务,以保证业务的正常使用. 分布式文件系统是作为文件服务角色的一种角色服务而实现的. ...
- [菜鸟SpringCloud实战入门]第七章:配置中心客户端主动刷新机制 + 配置中心服务化和高可用改造...
前言 欢迎来到菜鸟SpringCloud实战入门系列(SpringCloudForNoob),该系列通过层层递进的实战视角,来一步步学习和理解SpringCloud. 本系列适合有一定Java以及Sp ...
- Keepalived v1.3.5 高可用配置参数总结
Keepalived v1.3.5 高可用配置参数总结 前言 官网介绍 gratuitous ARP包 VRRP包 VRRP实例 1 全局配置 1.1 全局定义(global_defs ) 1.2 静 ...
- 路由器snmp配置_基于keepalived配置数据库主从实现高可用
基于keepalived配置数据库主从实现高可用 使用keepalived来监听端口,实现数据库的高可用.实现效果,其中一台数据库服务器突然出故障或关机时,应该不影响应用正常运行,等待服务器启动之后, ...
- 二进制搭建kubernetes多master集群【三、配置k8s master及高可用】
前面两篇文章已经配置好了etcd和flannel的网络,现在开始配置k8s master集群. etcd集群配置参考:二进制搭建kubernetes多master集群[一.使用TLS证书搭建etcd集 ...
- RabbitMQ高级指南:从配置、使用到高可用集群搭建
本文大纲: 1. RabbitMQ简介 2. RabbitMQ安装与配置 3. C# 如何使用RabbitMQ 4. 几种Exchange模式 5. RPC 远程过程调用 6. RabbitMQ高可用 ...
- RedHat 7配置keepalived+LVS实现高可用的Web负载均衡
上一篇博文中我们使用keepalived实现了haproxy的高可用,但keepalived问世之初却是为LVS而设计,与LVS高度整合,LVS与haproxy一样也是实现负载均衡,结合keepali ...
- 白话SpringCloud | 第三章:服务注册与发现-高可用配置(Eureka)-下
2019独角兽企业重金招聘Python工程师标准>>> 前言 上一章节,讲解了在单机模式下的服务注册与发现的相关知识点及简单示例.而在实际生产或者在这种微服务架构的分布式环境中,需要 ...
- RabbitMQ 高级指南:从配置、使用到高可用集群搭建
博主说:在项目中,通过 RabbitMQ,咱们可以将一些无需即时返回且耗时的操作提取出来,进行异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞吐量. 正文 1 Rab ...
最新文章
- leetcode--删除排序数组中的重复项--python
- 微信小程序在开发中遇到的问题与解决方法
- 数据结构和算法之——跳表
- Hadoop Shell命令
- 1号店Interview小结
- linux关闭沙盒模式,打开或关闭沙盒模式以禁用宏
- 突破100万年薪《多线程服务器端架构》
- SQLAlchemy 教程 —— ORM 方式使用示例
- 如今谁在使用Python
- vue隐藏和显示元素
- NeurIPS 2020 | AI编程:如何从复制粘贴走向推理合成(文末附论文及代码)
- 判别模型、生成模型和朴素贝叶斯模型
- Android API 级别
- 【好用的Mac分屏软件】Magnet for Mac 2.3
- aiml java_AIML实现智能聊天机器人
- 使用网络数据采集的好处
- 简单的php表单制作
- css text-transform实现英文字母或拼音大小写转换
- Python012--python3.7在本地及虚拟机上的安装与配置
- 软件测试面试该如何谈薪
热门文章
- 解决启动Distributed Transaction Coordinator服务出错的问题
- (转)深入理解Javascript闭包(closure)
- 小结SQL Server连接失败错误及解决[引用]
- 第四章:react ajax
- 关于那些表单的验证码
- git-底层-高层指令
- CSS3 calc() 函数,height: calc(100% - 70px);
- HTMLCSS--使用CSS完成页面布局及排版(附案例代码)
- LeetCode--64. 最小路径和(动态规划)
- NG ChangeDetectorRef(变更检测)