Web服务器负载均衡

Nginx简介

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 

Nginx的缺点是:
1、Nginx仅能支持http、https和Email协议,这样就在适用范围上面小些,这个是它的缺点。
2、对后端服务器的健康检查,只支持通过端口来检测,不支持通过url来检测。不支持Session的直接保持,但能通过ip_hash来解决。

WEB 缓存服务器最著名的是 Squid Cache,
转载: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



展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读