HAProxy Nginx LVS Apache总结篇

栏目: 服务器 · 发布时间: 8年前

内容简介:HAProxy Nginx LVS Apache总结篇

今天也许是最后一次探讨关于HAProxy Nginx LVS Apache的文章,之后将不再赘述,博主之后将要把重心放在 JavaPython 上,大家如果有什么疑问可以通过博客首页QQ联系、或者留言。

一、今天花点时间总结分享一下HAProxy、Nginx、LVS、Apache:

比较

HAProxy

Nginx

LVS

Apache

简介

高可用、负载均衡且基于TCP和HTTP应用的代理,支持高并发,多集群反代。

高性能http和反向代理服务器、邮件代理服务器,支持高并发,轻量级Web,低系统资源消耗。

Linux虚拟服务器,常用VS/NAT、VS/TUN和VS/DR,三种模式负载均衡。

高性能Web服务器,支持代理,市场份额很高。

优点缺点

1、抗负载能力强,负载均衡速度高。

2、支持session保持,Cookie引导,可通过url检测后端服务器健康状态。

3、也可做 MySQL 、Email等负载均衡。

4、一般不做Web服务器的Cache。

1、抗负载能力强。

2、http、https、Emai协议功能较好,处理相应请求快。

3、Web能力强,配置简单,支持缓存功能、适用动静分离,低内存消耗。

4、不支持session直接保持,但可通过ip_hash解决,通过端口对后端服务器健康检查。

1、抗负载能力强。

2、通过vrrp转发(仅分发)效率高,流量通过内核处理,没有流量产生。(理论)

3、相当稳定可靠。

4、不支持正则,不能做动静分离,配置略复杂,需要IP略多。

1、Web处理能力强,市场份额很高。(不过后期Nginx在Web方面越来越好,份额也在增长)

2、Rewrite强大,并支持很多模块,扩展很方便。

3、Bug少,历史久,比较稳定。

4、处理动态请求比Nginx好。

支持算法

1、轮循

Round-robin

2、带权轮循

Weight-round-robin

3、原地址保持)

Source

4、RI请求URL

rdp-cookie(根据cookie)

1、轮循

Round-robin

2、带权轮循

Weight-round-robn

3、Ip哈希

Ip-hash

1、rr(轮循)

2、wrr(带权轮循)

3、lc(最小连接)、

4、wlc(权重最小连接)

通过相关模块实现代理

官网

www.haproxy.com

nginx.org

www.linuxvirtualserver.org

http://www.apache.org/

是否免费

免费

免费

免费

免费

虚拟主机

支持

支持

不支持 

支持

七层(常用)

七层(常用)

四层(常用)

不常用

七层重量级,四层轻量级

七层重量级,四层轻量级

四层重量级

功能略差

热备

Keepalived+其它

Keepalived+其它

Keepalived+其它

Keepalived+其它

负载均衡参考标准

1、效率,并发处理能力、处理数据能力。

2、成本、需求、平台。

二、 Nginx、HAProxy,Apache虚拟主机、负载均衡管理方式。

1、Nginx虚拟主机:

1.1)nginx.conf配置文件定义Server(不推荐)

1.2)单nginx.conf加载配置其它config文件

eg:include vhost/*.conf;

1.3)Nginx负载均衡:

#upstream www.qutouwang.org {   
#zone myapp1 64k; 
#server x.x.x.x:80 weight=1 max_fails=2 fail_timeout=30s slow_start=30s; 
#server x.x.x.x:80 weight=1 max_fails=2 fail_timeout=30s;   
#}  
#proxy_pass http://127.0.0.1:8080;

2、HAProxy虚拟主机、配置文件、负载均衡:

2.1)eg:

frontend main :80
acl url_cms  hdr_beg(host) -i cms
acl url_bbs hdr_beg(host) -i bbs
acl url_blog hdr_beg(host) -i blog
use_backend cms if url_cms
use_backend bbs if url_bbs
use_backend blog if url_blog
default_backend cms
backend cms
balance source
server web1 x.x.x.x check maxconn 2000 weight 3 inter 2000  rise 2 fall 3
server web2 x.x.x.x:80 check maxconn 2000 weight 3 inter 2000  rise 2 fall 3
backend bbs
balance source
server web1 x.x.x.x:80 check maxconn 2000 weight 3 inter 2000  rise 2 fall 3
server web2 x.x.x.x:80 check maxconn 2000 weight 3 inter 2000  rise 2 fall 3
backend blog
balance source
server web1 x.x.x.x:80 check maxconn 2000 weight 3 inter 2000  rise 2 fall 3
server web2 x.x.x.x:80 check maxconn 2000 weight 3 inter 2000  rise 2 fall 3

解释说明:

frontend中关于ACL配置部分的内容这个是实现虚拟主机的核心配置部分,另外这个配置文件定义了server_www,servr_bbs,server_blogbackend。

2.2)配置文件以及案例:

haproxy的配置文件分为四个部分:

全局配置:

global:  全局配置段

代理配置:

default: 默认配置----->所有在backend、frontend、linsten中相同内容可以在此定义;

frontend:前段配置----->定义前端套接字,接受客户端请求;

backend: 后端配置----->定义后端分配规则,与后端服务器交互;

listen:  绑定配置----->直接将指定的客户端与后端特定服务器绑定到一起;

eg:

global
    log    127.0.0.1 local2  #通过syslog服务的local2输出日志信息
chroot      /var/lib/haproxy  #指定工作目录
#性能相关
    maxconn 4096  #单个进程的最大连接数
#maxpipes      #haproxy使用pipe完成基于内核的tcp报文重组,默认为maxconn/4
#noepoll:在 Linux 系统上禁用epoll机制;
    #nokqueue:在BSD系统上禁用kqueue机制;
    #nopoll:禁用poll机制;
    #nosepoll:在Linux禁用启发式epoll机制;
    #nosplice:禁止在Linux套接字上使用内核tcp重组
#...
    uid 99        #所属运行的用户uid,默认nobod
    gid 99        #所属运行的用户组,默认nobody
    daemon        #后台运行
    nbproc 2      #工作进程数量
#user        haproxy   #同uid
    #group       haproxy   #同gid 
    pidfile /var/run/haproxy.pid
#description     #当前实例描述信息
defaults
    log global
    log 127.0.0.1 local2 err #使用本机上的syslog服务的local2 设备记录错误信息[err warning info debug]
    mode http          #工作模式在7层,tcp是4层
    option httplog     #使用http日志类别,默认是不记录http请求的
    option httpclose   #每次请求完毕后主动关闭http通道式
    option forwardfor  #如果后端服务器需要获得客户端的真实IP需要配置次参数,将可以从Http Header中获得客户端IP
    option redispatch  #当serverId对应的服务器挂掉后,强制定向到其他健康的服务器
    retries 3          #设置尝试次数,3次连接失败则认为服务器不可用
    maxconn 2048       #最大连接数
    contimeout 500    #连接超时
    clitimeout 5000   #客户端超时
    srvtimeout 5000   #服务器超时
    timeout check 2000         #心跳检测超时
listen status 0.0.0.0:8080     #定义状态名字和监听端口
    stats uri /haproxy-status  #查看haproxy服务器状态地址
    stats auth admin:renzhiyuan#查看状态页面的用户名和密码
    stats hide-version         #隐藏haproxy版本信息
    stats refresh 30s          #每5秒刷新一次状态页面
listen web_server 0.0.0.0:80   #定义后端名字和监听端口
    mode http                  #采用7层模式
    balance roundrobin         #负载均衡算法,这里是轮叫
    cookie SERVERID  #允许插入serverid到cookie中,serverid后面可以定义
    option httpchk GET /index.html #健康检测
    server web1 x.x.x.x:80 weight 3 check inter 500 fall 3  
    server web2 x.x.x.x:80 weight 2 check inter 500 fall 3
server web3 x.x.x.x:80 weight 2 check inter 500 fall 3
#server:    #server来设置后端服务器
#webx:      #HAProxy名称,将在日志中显示
#x.x.x.x:80 #后端IP和端口
#weight     #权重值,权重值越大,分配的任务几率越高
#check      #健康检测,inter 500健康检测间隔是500毫秒
#fall       #检测多少次,认为服务器是不可用.

3、Apache虚拟主机和代理案例:

vim /usr/local/apache2/conf/httpd.conf 
#加载模块
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
#反代
vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
ServerName www.xxx.com
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://x.x.x.x
ProxyPassReverse / http://x.x.x.x/  #反代服务器
#负载均衡
</VirtualHost>
ProxyPass / balancer://proxy/       

<Proxy balancer://proxy>

        BalancerMember http://x.x.x.x:80/  loadfactor=3

        BalancerMember http://x.x.x.x:80/  loadfactor=2

</Proxy>

本文出自 “永不放弃!任志远” 博客,谢绝转载!


以上所述就是小编给大家介绍的《HAProxy Nginx LVS Apache总结篇》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Pro Git

Pro Git

Scott Chacon / Apress / 2009-8-27 / USD 34.99

Git is the version control system developed by Linus Torvalds for Linux kernel development. It took the open source world by storm since its inception in 2005, and is used by small development shops a......一起来看看 《Pro Git》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

html转js在线工具
html转js在线工具

html转js在线工具