Nginx简介
Nginx的优点是:
1、工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名、目录结构,它的正则规则比HAProxy更为强大和灵活,这也是它目前广泛流行的主要原因之一,Nginx单凭这点可利用的场合就远多于LVS了。
2、Nginx对网络稳定性的依赖非常小,理论上能ping通就就能进行负载功能,这个也是它的优势之一;相反LVS对网络稳定性依赖比较大,这点本人深有体会;
3、Nginx安装和配置比较简单,测试起来比较方便,它基本能把错误用日志打印出来。LVS的配置、测试就要花比较长的时间了,LVS对网络依赖比较大。
3、可以承担高负载压力且稳定,在硬件不差的情况下一般能支撑几万次的并发量,负载度比LVS相对小些。
4、Nginx可以通过端口检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等等,并且会把返回错误的请求重新提交到另一个节点,不过其中缺点就是不支持url来检测。比如用户正在上传一个文件,而处理该上传的节点刚好在上传过程中出现故障,Nginx会把上传切到另一台服务器重新处理,而LVS就直接断掉了,如果是上传一个很大的文件或者很重要的文件的话,用户可能会因此而不满。
5、Nginx不仅仅是一款优秀的负载均衡器/反向代理软件,它同时也是功能强大的Web应用服务器。LNMP也是近几年非常流行的web架构,在高流量的环境中稳定性也很好。
6、Nginx现在作为Web反向加速缓存越来越成熟了,速度比传统的Squid服务器更快,可以考虑用其作为反向代理加速器。
7、Nginx可作为中层反向代理使用,这一层面Nginx基本上无对手,唯一可以对比Nginx的就只有lighttpd了,不过lighttpd目前还没有做到Nginx完全的功能,配置也不那么清晰易读,社区资料也远远没Nginx活跃。
8、Nginx也可作为静态网页和图片服务器,这方面的性能也无对手。还有Nginx社区非常活跃,第三方模块也很多。
淘宝的前端使用的Tengine就是基于nginx做的二次开发定制版。
Nginx常规的HTTP请求和响应流程图:
Nginx的缺点是:
1、Nginx仅能支持http、https和Email协议,这样就在适用范围上面小些,这个是它的缺点。
2、对后端服务器的健康检查,只支持通过端口来检测,不支持通过url来检测。不支持Session的直接保持,但能通过ip_hash来解决。
转载: http://www.ha97.com/5646.html
Nginx实例详解 http://blog.csdn.net/u010081710/article/details/52352682
Nginx配置详解 http://blog.csdn.net/u010081710/article/details/52368785
Nginx安装http://blog.csdn.net/u010081710/article/details/52370180
HAProxy简介 key: haproxy docker | haproxy负载均衡
haproxy下载 与安装
[root@node3 app]# tar zxvf haproxy-1.4.24.tar.gz
[root@node3 app]# mv haproxy-1.4.24 haproxy
[root@node3 app]# cd haproxy
[root@node3 hadoop]# uname -a
Linux node3 2.6.18-164.el5 #1 SMP Tue Aug 18 15:51:54 EDT 2009 i686 i686 i386 GNU/Linux
[root@node3 haproxy]# make TARGET=linux24 prefix=/usr/local/haproxy
gcc -Iinclude -Iebtree -Wall -O2 -g -fno-strict-aliasing -DTPROXY -DCONFIG_HAP_CRYPT -DENABLE_POLL -DNETFILTER -DUSE_GETSOCKNAME -DCONFIG_HAPROXY_VERSION=\"1.4.24\" -DCONFIG_HAPROXY_DATE=\"2013/06/17\" \
-DBUILD_TARGET='"linux24"' \
-DBUILD_ARCH='""' \
-DBUILD_CPU='"generic"' \
-DBUILD_CC='"gcc"' \
-DBUILD_CFLAGS='"-O2 -g -fno-strict-aliasing"' \
-DBUILD_OPTIONS='""' \
-c -o src/haproxy.o src/haproxy.c
[root@node3 haproxy]# make install PREFIX=/usr/local/haproxy
install -d /usr/local/haproxy/sbin
install haproxy /usr/local/haproxy/sbin
install -d /usr/local/haproxy/share/man/man1
install -m 644 doc/haproxy.1 /usr/local/haproxy/share/man/man1
install -d /usr/local/haproxy/doc/haproxy
for x in configuration architecture haproxy-en haproxy-fr; do \
install -m 644 doc/$x.txt /usr/local/haproxy/doc/haproxy ; \
done
sudo touch haproxy.cfg
sudo mkdir logs
cd logs
sudo touch haproxy.pid //目录结构如图
haproxy.cfg的内容如下:
global
maxconn 51200
chroot /usr/local/haproxy
uid 99
gid 99
daemon
#quiet
nbproc 1
pidfile /usr/local/haproxy/logs/haproxy.pid
defaults
mode http
#retries 2
option redispatch
option abortonclose
timeout connect 5000ms
timeout client 30000ms
timeout server 30000ms
#timeout check 2000
log 127.0.0.1 local0 err #[err warning info debug]
balance roundrobin
# option httplog
# option httpclose
# option dontlognull
# option forwardfor
listen admin_stats
bind 0.0.0.0:8888
option httplog
stats refresh 30s
stats uri /stats
stats realm Haproxy Manager
stats auth admin:admin
#stats hide-version
Haproxy启动 [root@node3 haproxy]# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg
访问页面
HAProxy的特点是:
1、HAProxy也是支持虚拟主机的。2、HAProxy的优点能够补充Nginx的一些缺点,比如支持Session的保持,Cookie的引导;同时支持通过获取指定的url来检测后端服务器的状态。
3、HAProxy跟LVS类似,本身就只是一款负载均衡软件;单纯从效率上来讲HAProxy会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的。
4、HAProxy支持TCP协议的负载均衡转发,可以对MySQL读进行负载均衡,对后端的MySQL节点进行检测和负载均衡,大家可以用LVS+Keepalived对MySQL主从做负载均衡。
5、HAProxy负载均衡策略非常多。
Haproxy的工作模式:代理模式 为http和tcp做代理,可以为多种服务做代理,它是一个专门的代理服务器,自己不能成为web服务。
Nginx的工作模式:web模式和代理,Nginx只为WEB服务做代理。
参考文章:
http://www.cnblogs.com/super-d2/p/4134562.html Haproxy安装:
http://www.cnblogs.com/Richardzhu/p/3344676.html
http://www.educity.cn/net/1620746.html
http://yijiu.blog.51cto.com/433846/1429398
Lighttpd简介
Nginx和lighttpd基本上是同质的,都是采用基于epoll/kqueue/select的全异步事件模型,可以轻松地维持大量的连接,不惧怕 慢连接攻击。两者都提供了丰富的HTTP服务功能,例如压缩、url rewrite、虚拟主机、SSL、proxy等等。Nginx大量模仿了apache的设计风格,比如模块的定义、装配、以及配置数据的解析和组织方式等等。Lighttpd则是自己设计的一套。 和lighttpd相比,Nginx做事更加精细,它提供的一些比较特别。
Nginx内部的HTTP状态迁移是比较隐性的,它通过一系列的handler赋值来实现,而lighttpd的代码中有一个显式的HTTP状态迁 移,一目了然
Nginx完全不支持动态库so,所以它的模块都必须静态编译,且不能动态加载。要加载哪些模块,模块按照怎样的顺序执行,都是在编译期由 configure指定的。
Lighttpd下载 与安装
shell> tar zxvf lighttpd-1.4.12.tar.gz
shell> cd lighttpd-1.4.12
shell> ./configure –prefix=/usr/local/lighttpd
shell> ./make
shell> ./make install
安装时遇到
configure: error: zlib-headers and/or libs where not found, install them or build with –without-zlib
提示以上错误的时候要安装zlib-devel
但是我安装以后不行,所以直接yum -y install zlib-*
configure: error: bzip2-headers and/or libs were not found, install them or build with --without-bzip2
[@localhost lighttpd-1.4.41]$ yum -y install bzip2-*
//启动配置文件
cd /usr/local/lighttpd
mkdir conf
Cp –r /usr/local/lighttpd-1.4.41/doc/config /usr/local/lighttpd/conf
mkdir –p /var/log/lighttpd
//新建进程配置文件
cd /var/log/lighttpd
touch lighttpd
//新建测试页面
cd /usr/local/lighttpd
mkdir html
touch index.html
vi index.html
index.html
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to Lighttpd!</h1>
</body>
</html>
基本配置:
#######################################################################
##
## Basic Configuration
## ---------------------
##
server.port = 80
##
## Use IPv6?
##
server.use-ipv6 = "enable"
##
## bind to a specific IP
## 修改bind
server.bind = "192.168.224.138"
##
## Run as a different username/groupname.
## This requires root permissions during startup.
## 注释 username groupname
####server.username = "lighttpd"
####server.groupname = "lighttpd"
##
## enable core files.
##
#server.core-files = "disable"
##
## Document root
## 测试页面路径
server.document-root = "/usr/local/lighttpd/html"
##
## The value for the "Server:" response field.
##
## It would be nice to keep it at "lighttpd".
##
#server.tag = "lighttpd"
##
## store a pid file
##
server.pid-file = state_dir + "/lighttpd.pid"
##
#######################################################################
访问页面
参考资料:http://redmine.lighttpd.net/projects/1/wiki/TutorialConfiguration