背景

昨天因客户私有部署问题,需要到客户公司去排查问题。

他们是一家外企,各种权限需要提前申请(最大的坑)。他们之前部署的一般为单域名,很少部署互联网类型多个域名的情形(第二个坑)。这次私有部署总计使用了十几个站点,我们之前提供过发布文件与配置信息,这次是过来检查部署,保证主功能正常使用。

出行问题

客户公司需要身份证登记,临行前我忘了带身份证又折回重拿。到地铁站和同事汇合时,同事又早下了两站(地铁站名相似),耽搁了一些时间,本来预计9点半到,实际到时十点了。

网络问题

由于工作电脑已经换成了台式机,所以上周申请了一台笔记本过来,结果就遇到问题,连不上客户的wifi,无线网络可以搜到其他的wifi,但搜不到要我连的那个。然后客户和同事分别开了热点,竟然也连不上!没得办法,只能用同事的mac电脑远程公司服务器来开发了,这相当于浪费了一个人。

过了一二十分钟,我配好服务器的环境后,用自己手机开了热点,我的笔记本确能连上,真是奇葩了。由于已配好服务器环境,就没有继续用这个电脑了(事后想来,真是失策,在客户现场,时间是充足宝贵的,能连自己热点,应该立即使用,从而解放同事的电脑!谨记)

一遍一遍的日志

域名转发端口号问题

先解决第一个问题。客户部署的mj站点在sso站点跳转是带上了内部的端口号,而这个端口号在经过负载均衡转发后,对外网不可访问,应客户要求跳转时取的url统一去掉端口号。顺利解决

验证失败死循环跳转问题

我们的sso与客户方公司自己的sso配通后,sso已实现登录,但sso跳转到主站点mj时,验证失败重跳回sso,出现死循环跳转问题(由于内部访问其他站点超时,非常慢,这点当时没注意)。

经过漫长的几版加日志,由于客户方无法使用U盘,只能使用他们专用的文件邮件服务器来传送,速度也不快很耽误时间。

在这种反复折腾中,很快就吃过午饭一两点了,终于日志记录定位到一个访问sso站点验证cookies的地址超时,看到了明确的超时记录,又无意间到我们的站点在调用restA站点取config时也出现超时问题(这里取不到值上周五电话会议已知道,当时sso登录后默认跳转地址取不到,当时一直没在意,想的是优先解决跳转问题,取不到值后从web.config获取值,错过了一次提前发现问题的机会)

既然两个站点都出现超时,那便优先解决restA的超时问题吧,同事就开始上场了。

站点超时问题

一顿操作猛如虎,也折腾了一个会,取到了必要的请求参数放到fiddler里请求,然后返回了值。

这就很奇怪了!

我们又让客户重新走了一下流程,终于确认外部能直接请求,服务器内部访问超时!同事就询问服务器相互之间是不是有限制,防火墙等。终于找到了正确的方向!

沿着这个道路,我们发现客户部署我们的十几站点全是不同的ip,同一个物理机,每个站点虚拟不同的ip,配置的这么繁锁……

既然走在了正确的道路上,剩下的就通顺了。我们需要提供各个Api之间调用关系,让客户去申请防火墙权限。dev,was,production三套环境,每个环境那么多站点,相互之间要信任,我听着都累。他们审批最少一周后了。

这个时候已经四点半了!总算可以返程回公司处理下额外的一些事了。

事后总结

这次虽然我通过不断的打log定位到超时问题,同事针对特定超时链接,外网能访问,服务器超时,定位到问题。但其实我打log对这次实施来讲是十分低效耗时的,其实本可以直接通过取配置的接口定位问题,而不用通过sso的跳转来分析问题,如果采取定位配置接口查问题,估计上午就可以搞定了。

用最简单的办法,先解决掉普遍的问题。再针对重点区域重点分析。

延伸扩展

以上虽然表面是服务器之间超时,同样还是我们和客户都没有权限远程登录服务器操作的问题,客户也仅仅只有固定的一些目录权限。

当然还有关于日志,配置检测的不足,许多都需要临时打日志,这是非常低效的。如果每一个请求都能记录结果,这些请求参数能保存下来,对于分析问题都是很快的。这也是APM的重要性所在。虽然正式环境有了听云和搭了ELK日志,但听云也没有记录的那么详细,ELK使用率还不够,而且私有部署也不会考虑这些的。

当然还有老代码遗留的技术债,如这次打日志发现了很多问题,按Key取配置,竟然的单个取的,虽然只首次运行一回,但首次加载时间必然很慢。还有很坑的try catch后不处理,完全发现不了任何信息。

虽然这次用低效的方式处理了问题,但也多知道了一些坑,为后期优化提供了帮助,长远看还是有用的。

最后还有一个问题,如果很多请求都超时,是不是可以意味站点无响应?我们在外部已经通过部分页面确认站点可访问,这个时候是否可以直接得出内部服务器有限制?如果早意味到这个问题,也许在看到超时的那一刻就知道了答案。

这是我个人第一次遇到这次复杂的权限部署,域名转发后域名可正常访问,内部却因防火墙限制。做个总结,聊表慰藉。

.net排坑篇:负载均衡域名转发的背后的更多相关文章

  1. Azure Load Balancer(二) 基于内部的负载均衡来转发为访问请求

    一,引言 上一节,我们使用 Azure Load Balancer 类型为外部的,来转发我们的 Web 服务.今天我们看看另一种类型为 “Internal” 的 Azure Load Balancer ...

  2. Apache 负载均衡 端口转发 配置

    转载自:https://blog.csdn.net/snihcel/article/details/38844323 [端口转发配置]       通过http_proxy做tomcat的端口转发: ...

  3. .net core使用ocelot---第六篇 负载均衡

    简介 .net core使用ocelot---第一篇 简单使用 .net core使用ocelot---第二篇 身份验证 .net core使用ocelot---第三篇 日志记录  .net core ...

  4. Nginx负载均衡与转发

    1.6种负载均衡策略 1.轮询 :默认方式 2.weight : 权重方式 3.ip_hash :依据ip分配方式 4.least_conn :最少连接方式 5.fair(第三方) :响应时间方式 6 ...

  5. Nginx负载均衡(转发)

    http://www.cnblogs.com/jalja/p/6117881.html 一.反向代理 正向代理: 客户端要获取的资源就在服务器上,客户端请求的资源路径就是最终响应资源的服务器路径,这就 ...

  6. nginx入门篇----负载均衡策略

    负载均衡策略 负载均衡策略:内置策略和扩展策略. 内置策略包括:轮询.加权轮询.IP hash:扩展策略包括:url hash.fair等 策略详细介绍 轮询:对前端的访问逐一分流到后端网络节点,类似 ...

  7. 实战--使用lvs实现四层负载均衡,转发到后端nginx

    这个帖子讲得很细致,基本依照这个方案实践. 只是IP是按我自己虚拟机的IP来测试的. http://www.cnblogs.com/arjenlee/p/9262737.html ========== ...

  8. 企业级Nginx负载均衡与keepalived高可用实战(一)Nginx篇

    1.集群简介 1.1.什么是集群 简单地说,集群就是指一组(若干个)相互独立的计算机,利用高速通信网络组成的一个较大的计算机服务系统,每个集群节点(即集群中的每台计算机)都是运行各自服务的独立服务器. ...

  9. 【原创】讲讲亿级PV的负载均衡架构

    引言 本来没想写这个题材的,为了某某童鞋能够更好的茁壮成长,临时写一篇负载均衡的.负载均衡,大家可能听过什么3层负载均衡.4层负载均衡.7层负载均衡什么的?那这是怎么分的呢,ok,是根据osi七层网络 ...

随机推荐

  1. 你不可不知的Java引用类型之——虚引用

    定义 虚引用是使用PhantomReference创建的引用,虚引用也称为幽灵引用或者幻影引用,是所有引用类型中最弱的一个.一个对象是否有虚引用的存在,完全不会对其生命周期构成影响,也无法通过虚引用获 ...

  2. 详解JS设计模式

    原文链接:www.cnblogs.com 一:理解工厂模式 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式. 简单的工厂模式可以理解为解决 ...

  3. mac版本查看日志命令

    1. ls -l 列出所有文件目录,并可以查看文件目录的所有权限 2.cd  切换至某个目录 eg: cd /Applications 再继续  ls -l 列出所有文件目录 3.cd .. 返回到上 ...

  4. Android Demo Android ActionBarCompat-ListPopupMenu

    示例显示如何使用v7 appcompat库中的PopupMenu显示弹出式菜单.主界面使用V4支持库的ListFragment显示数据列表,当点击列表子项时,在子项下方弹出下拉菜单,并通过设置setO ...

  5. java读取excel文件的两种方式

    方式一: 借用 package com.ij34.util; /** * @author Admin * @date 创建时间:2017年8月29日 下午2:07:59 * @version 1.0 ...

  6. mssql sqlserver 优化注意事项:

    摘要: 下文整理sqlserver优化中的常用知识点和注意事项 1.表上未建立合理的索引 2.服务器内存过小,导致缓存过少,数据库频繁的交互数据 3.统计信息不准确,导致索引乱用 4.网络异常,数据交 ...

  7. 利用dockerfile制作基于centos7的lnmp镜像(亲测,详细版)

    首先呢,这篇文章,也是小弟参考了许多文章,自己整理出来的,有很多不足之处还有待加强,期待各位评论. > LNMP 是代表 Linux 系统下的 Nginx.Mariadb.PHP 相结合而构建成 ...

  8. MySQL 数据库 简单操作命令 (部分总结)

    1.查看进程方式查看数据库 ps - ajx|grep mysql 2.登录 MySQL mysql -u用户名 -p密码 3.开启服务 sudo service mysql start 4.停止服务 ...

  9. elixir mix 简介

    概述 mix 是 elixir 工程的构建工具,利用 mix,可以快速方便的创建 elixir 工程,写单元测试,管理 elixir 包的依赖管理等等. 我觉得刚开始学习 elixir 的时候,先简单 ...

  10. MySQL高级知识系列目录

    MySQL高级知识(一)——基础 MySQL高级知识(二)——Join查询 MySQL高级知识(三)——索引 MySQL高级知识(四)——Explain MySQL高级知识(五)——索引分析 MySQ ...