开发者社区> 问答> 正文

【已解决】SLB后端服务器端口/健康检查异常的问题

1、使用场景


     后端应用是用Ruby Goliath框架写的纯webapi接口,以IP+Port的方式对外提供接口调用访问,其中应用监听在全网(公网+私网)的3600端口。
     使用SLB的目前是为了防止单点故障, 后端应用已经做到了水平扩展,也就是SLB下面可以很容易地挂任意多个ECS,目前测试阶段,采用的是
     1 SLB下面挂 2个ECS

2、SLB配置


      其中SLB的基本配置如图1 所示
    
      
                  图1  SLB的基本配置

       并且将健康检查的标签打开,配置如图2
      
        图2 健康检查设置
    
3、问题描述
      按照图1 和 图2 中的描述配置SLB和后端ECS端口后,查看控制台,发现健康检查失败,如图3所示
      
       图3 健康检查失败


4、排查及求助
      4.1 首先排查后端应用是否正常启动live@iZ23wyub74zZ:~$ lsof -i:3600
COMMAND  PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
ruby    4708 live   13u  IPv4 2627912      0t0  TCP *:3600 (LISTEN)
live@iZ23scxzq4jZ:~$ lsof -i:3600
COMMAND   PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
ruby    27755 live   13u  IPv4 5105606      0t0  TCP *:3600 (LISTEN)




       可以看到,两台机器上面的3600端口都是正常监听的,因此可以确认的是,后端进程是正常的,因此提工单向阿里云同事求助


      4.2 求助工单


         将问题描述清楚后,收到了阿里云同事的电话支撑,我将SLB和后端服务器的配置告知后,阿里同事提醒了一句,如果SLB采用http 7层应用协助
         默认是用80端口,如果后端服务不是启动在80端口,就应该使用4层的TCP协助,并将SLB的端口和后端服务器端口设置为应用服务启动端口。


        按照提示,将之前的配置规则删除,然后重新创建配置规则,如图4所示
        
        图4 新的协议配置(TCP协议)


       然后开启健康检查,端口同样填写3600,回到控制台,此时健康检查终于正常,如图5所示!
        
      图5  健康检查正常

5、总结


      5.1 如果大家的应用场景和我相似,而且问题也是健康检查失败,那么就重点看下协议的选择,到时是选4层的TCP还是7层HTTP(默认80端口)
      5.2 遇到不能及时解决的问题,就请及时提交工单,目前来看,阿里云的工单响应速度还是比较及时,在此点个赞,也希望阿里后面能够做得更好


      

展开
收起
ae86 2014-11-06 11:30:44 26265 0
4 条回答
写回答
取消 提交回答
  • 图都看不到

    2020-05-19 18:14:19
    赞同 展开评论 打赏
  • Re【已解决】SLB后端服务器端口/健康检查异常的问题
    非常感谢,我们遇到一样的问题。已经解决。
    2015-01-09 14:07:41
    赞同 展开评论 打赏
  • 回 1楼(ae86) 的帖子
    图片没有上次成功,你再重新编辑帖子,上次一下图片
    2014-11-06 12:03:32
    赞同 展开评论 打赏
  • Re【已解决】SLB后端服务器端口/健康检查异常的问题
    【请教版主】 为什么我的帖子里面的图片看不到呢?
    2014-11-06 11:32:00
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
如何运维千台以上游戏云服务器 立即下载
网站/服务器取证 实践与挑战 立即下载
ECS块储存产品全面解析 立即下载