lighty的lb问题

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介: 看了galaxystar的帖子之后对lighty有了初步的了解,而且从google的trends上也可以看出lighty确实是一个web server中迅速崛起的新星,势头非常之强劲,所以趁这个周末我也来学习一把 1,下载安装,我使用的是ubuntu7.10,所以下载lighttpd非常简单,只要
看了galaxystar的帖子之后对lighty有了初步的了解,而且从google的trends上也可以看出lighty确实是一个web server中迅速崛起的新星,势头非常之强劲,所以趁这个周末我也来学习一把

1,下载安装,我使用的是ubuntu7.10,所以下载lighttpd非常简单,只要执行
sudo apt-get install lighttpd 命令就可以下载并安装lighttpd了,我下载的好像是1.4的版本。
安装结束之后,它就自动启动了,这时候在流览器里输入http://localhost就可以看到lighttpd的页面了。

2,下载tomcat6.10,拷贝一份出来,修改conf目录下的server.xml,将connector中的8080改成18080。启动两个tomcat实例。这时候在浏览器里输入http://localhost:8080/index.jsp和http://localhost:18080/index.jsp,分别出现两个tomcat的页面,接下来在这两个index.jsp(webapps/root()目录下)分别加入以下代码<%out.println("-aaaaaa-");%>和<%out.println("-bbbbbb-");%>

3,接下来修改lighttpd.conf文件,在server.modules 数组中加入一个新的元素,如下:

server.modules = (

"mod_access",

"mod_alias",

"mod_accesslog",

"mod_compress",

# "mod_rewrite",

# "mod_redirect",

# "mod_status",

# "mod_evhost",

# "mod_usertrack",

# "mod_rrdtool",

# "mod_webdav",

# "mod_expire",

# "mod_flv_streaming",

"mod_proxy", #主要是增加这个节点,代表lighty将会使用proxy模块

# "mod_evasive"

)



接着在下面加上如下配置:

$HTTP["host"] == "localhost" {



$HTTP["url"] =~ ".jsp|.go|.do|action" {

proxy.balance = "fair"

proxy.server = ( "" => ( ( "host" => "127.0.0.1", "port" => 8080 ),("host" => "127.0.0.1", "port" => 18080) ))

}

}



上面这段配置浅显易懂,只有一个proxy.balance节点的熟悉比较奇怪。
lighttpd的配置要比apache简单的多了,而且更容易理解。这也是apache需要学习的地方。

4,重启lighttpd,看看有什么效果:./lighttpd restart

在浏览器中输入http://localhost/index.jsp
出现的页面上有-aaaaaa-这个字符串,这代表请求被转发到1号tomcat了,再多次请求,发现返回的页面上一直有a的字符串,而没有出现b的字符串,貌似lb没有产生效果。


ok,让我们来看看proxy.loadblance的几个值:
hash:表示相同的request uri会被发送到同一个proxyhandler,比如说现在我们有两个node,那么a.jsp的hashcode为1,b.jsp的hashcode为2,那么a.jsp的请求只会被发到node1(2),而b.jsp的请求只会被发到node2(1)。

fair:表示使用普通的基于负载的消极的均衡,什么意思呢,我的理解就是,当node1负载过高时,才把请求发给node2,所以就出现了上面的那种情况,不管你怎么刷,都是出现-aaaaaa-,而不会出现-bbbbbb-了。只有当node1压力过高时才会出现b。该策略是lighttpd默认的lb策略。

round-robin:表示不管怎么样都是轮发。也就是说通过这种方式我们不能通过设置factor来控制node的处理数量,这个是一个个小小的缺憾。更大的问题是据说lighttpd的round-robin不是很稳定,这个是最麻烦的(最大的麻烦是我没有试出来,一使用round-robin,lighttpd就跟我说:no proxy-handler found for: /,文档上写道:Check if you have used an IP address for the proxy address. Hostnames are not allowed there! 但是我没有用hostname也不行,有点郁闷了。
)。所以综合看来hash策略应该是最佳选择了。

题外话,lighttpd好像也不支持stickly-session吧,所以我觉得使用lighttpd来做lb不是很合适。在这个功能上它和apache还有较大差距,今天试用的是lighttpd1.4的版本,不知道1.5版本的lighttpd在这方面会不会好一点。有空我来试用一下lighttpd1.5的round-robin,看能否让它正常跑起来。
相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
负载均衡 Linux
dr负载均衡
dr负载均衡
|
算法 网络协议 Linux
Linux集群技术之LB之LVS
时间:2018.3.1作者:李强参考:man,info,magedu讲义,万能的internet实验环境:VMware® Workstation 12 Pro ,Centos 6.9,Centos 7.4,SecureCRT Version 8.1.4声明:以下英文纯属个人翻译,英文B级,欢迎纠正,以下内容纯属个人理解,并没有对错,只是参考,盗版不纠,才能有限,希望不误人子弟为好。
1215 0
|
Web App开发 网络协议 算法
|
应用服务中间件 Shell 调度
|
负载均衡 算法 网络协议
|
负载均衡 应用服务中间件 nginx