利用nginx做后台服务器的动态加载和负载均衡

来源:互联网 发布:如何投诉淘宝 编辑:程序博客网 时间:2024/06/13 02:36

这里,我们没有利用nginx的反向代理和负载策略来实现,而是自定义负载均衡策略,同时动态的响应后台服务器的注册消息,以实现后台服务器的动态增减,和负载的合理均衡。

1、动态注册

我们在nginx里面增加一个location /reg{}的模块,然后在其中响应来自后台服务器的注册信号,注册信息可以缓存住,也可以写数据库,看需要。在收到注册信号后对每一个服务器的注册信号设定一个定时器,在收到注册信号后对每一个服务器的注册信息增加当前并保存。这里我们没有做定时器,而是在收到每台服务器心跳后会更新服务器列表,新鲜的优先级高,比较旧的优先级低,在同等情况下,优先采用新鲜的服务器。过时到一定程度,将从服务器列表中删除该服务器,并记录到日志。

这样的情况下,我们如果需要增加删减服务器将会变得很容易。这里尤其要说一下删减服务器。如果碰到新鲜的服务器刚刚发送完心跳包后变崩溃,优先级又将这台服务器排至比较高的位置,这样岂不是会导致反馈给前台的服务器失效?我们是这样做,在确定完服务器后,再反馈给前台时会对服务器进行一次握手操作,比如http交互,确认当前服务器做好了应答的准备。


2、负载均衡

nginx本身就有很多种负载均衡策略,比如ip_hash,权重等等。这里我们要说说自身如何根据业务需要进行定制负载均衡。

我们采用ngx_lua模块,方便我们使用Lua脚本对nginx.conf进行修改和扩展。服务器信息我们一般存在一个table中,利用table的自定义sort(our_table,sortfunction)法则,可以轻易的按业务进行排序。


0 0
原创粉丝点击