使用ULB的时候如何优雅的启动后端服务程序
第一弹的后端有很多很多个实例来提供服务,使用了Ucloud提供的ULB负载均衡器来对外接收请求,之前在重启后端服务程序的时候,往往要进控制台在ULB里把对应的服务给禁用了,然后重启完再启用,如果有很多台机器的话,要一个个操作,非常非常的麻烦。
最近想到,能不能用ULB的状态检查功能来自动禁用对应的服务,这样服务重启以后也会自动的恢复,免去人工操作的步骤。
ULB支持两种状态检查方法:端口检查和HTTP检查。
端口检查就是ULB会去ping后端服务的端口,如果端口联通就判定为可用,否则判定后端服务不可用,但是这么做有个延迟,ULB是两秒检查一次,如果三次检查发现有问题才会切换,这样就会有6秒的时间,后端服务已经关闭了,但是ULB依然会把连接发过去,会造成很多用户连接失败。
HTTP检查好像是最近加的功能,通过一个HTTP请求来判断,如果返回200,说明服务可用,其他返回值说明服务不可用,这个方法可以很方便的使用,后端程序提供一个URL来进行检查,正常情况下,这个URL返回的是200,当需要重启的时候,先把该URL的返回值设置为其他值,比如404,然后等若干秒以后,ULB把流量切换走了,再关闭端口,进行重启的步骤,这样有效的避免了在重启过程中用户无法连接的问题。
以下是我们的tornado相关代码
如此一来,每次部署程序的时候只要挨个重启后端服务就行了,不需要登录控制台操作ULB了。
转载请注明来源:http://www.tianwaihome.com/2016/05/ucloud-ulb-restart-rs.html。