HAProxy Nginx LVS Apache总结篇
今天也许是最后一次探讨关于HAProxy Nginx LVS Apache的文章,之后将不再赘述,博主之后将要把重心放在Java和Python上,大家如果有什么疑问可以通过博客首页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 ProxyPa***everse / 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>
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
JMeter打开badboy保存的jmx文件报错的解决方法
无数小白童鞋总问这个问题,其实在做任何学习的时候都要注意版本的一致,不然就会出莫名其妙的问题。但这些看起来很低级的问题99%的人都不会去在意,而一味追求所谓的高级,实在不理解。。。。唉 好了下面进入正题: 问题: 排查: badboy和jmeter版本不匹配。一般大家都用的是JMeter是3.1的,而badboy是2.0.5 解决方法: 把badboy升级到最新版,比如2.1.2即可。
- 下一篇
Winpower软件实现邮件提醒和多台服务器同时关机
winpower这软件还是挺不错的。用串口线把主机和ups连起来,就可以监测很多ups和蓄电池的信息,还可以实现很多高级功能,比如断电来电,邮件提醒。断电之后,连在此ups上的服务器只要装了winpower软件并且设置相应的功能都可以自动关机,极大的方便了it人员手忙脚乱的情形。 Winpower软件版本为 1, 用winpower实现断电之后,邮件提醒。首先winpower里面支持邮件提醒的邮箱种类不多,并且都是固定的,仅支持gmail,163,live.com(微软),yahoo这四种邮箱,这一点实在不方便。这里就选择国内的163邮箱了。开通163邮箱的客户端收发邮件又是一件麻烦事,因为平时都是网页操作的。 1.1, 首先web登录自己的163邮箱,在设置里面,要用手机开通客户端收发邮件功能。我用foxmail做测试,客户端邮箱的密码不是之前web的登录密码,而是手机开通之后设的密码。在foxmail上做测试,可以看到邮件收发服务器的ip(网址),端口及加密方式,方便之后在winpower调试。 1.2,Foxmail的163邮箱都调试成功后,就到winpower上来调试了。以管理...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8安装Docker,最新的服务器搭配容器使用
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- MySQL8.0.19开启GTID主从同步CentOS8
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题