设为首页 收藏本站
查看: 1383|回复: 0

[经验分享] 特殊业务下haproxy负载均衡容错与nginx负载均衡容错对比

[复制链接]

尚未签到

发表于 2015-11-20 09:55:38 | 显示全部楼层 |阅读模式
         电商以及门户网站首要的要求就是稳定,并且能够自动实现后端服务器的健康监测,在后端服务器出现故障时,能够自动切换到健康的服务器上来。作为前端代理的杰出产品,nginx以其高稳定和高可用性赢得了众多运维人员的青睐,纷纷采用这个来使用来做自己的前端代理,先说明一下 nginx 的代理配置:
          安装pcre插件,pcre是一个perl库,nginx 需要安装它,以便更好地支持配置中的正则表达式
           wget  http://sourceforge.net/projects/pcre/files/pcre/8.32/pcre-8.32.tar.gz/download
           tar zxvfpcre-8.32.tar.gz &&  cd  pcre-8.32
           ./configure   &&    make    &&   make install


          下载 nginx 版本 , 当前稳定版本中最新的是 1.2.6 . wget  http://nginx.org/download/nginx-1.2.6.tar.gz


          解压缩,编译,安装:


          tar zxvf nginx-1.2.6.tar.gz   


          cd    nginx-1.2.6
          ./configure  --user=www --group=www --prefix=/opt/soft/nginx  --with-http_stub_status_module --with-http_ssl_module --with-pcre=../pcre-8.32 --with-pcre-jit


          nginx 编译时注意,nginx 1.2.1 版以上都不支持 pcre-8.30 以下的版本,故编译时候要指定 pcre 的位置:否则会报此类错误:ngx_regex.c:307: undefined reference to `pcre_free_study'
          编译完成之后,make   &&  make install  进行安装
           nginx.conf  文件配置如下:  


  

user  www www;  
worker_processes 8;  
error_log  logs/error.log crit;  
pid        logs/nginx.pid;  
worker_rlimit_nofile 51200;  
events   
{  
use epoll;  
worker_connections 51200;  
}  
http   
{  
include       mime.types;  
default_type  application/octet-stream;  
gzip on;  
gzip_proxied any;  
gzip_min_length  1024;  
gzip_buffers     4 8k;     
gzip_http_version 1.1;   
gzip_types       text/plain text/css application/x-javascript application/javascript application/xml;  
keepalive_timeout 120;  
server_tokens off;  
tcp_nodelay on;  
client_header_buffer_size 4k;  
open_file_cache max=51200 inactive=20s;  
open_file_cache_valid 30s;  
open_file_cache_min_uses 1;  
upstream  web_test  {  
server 192.168.10.2:80;  
server 192.168.10.3:80;  
}  
log_format  main  '$remote_addr - $remote_user [$time_local] $request '  
'"$status" $body_bytes_sent "$http_referer" '  
'"$http_user_agent" "$http_x_forwarded_for" "$request_time" "$upstream_addr" ';  
access_log  /var/log/nginx/master.log main;  
server  
{  
listen  80;  
server_name  test.com;  
location / {  
proxy_next_upstream error timeout invalid_header http_404 http_502 http_503 http_504 http_500;  
proxy_pass        http://web_test;  
proxy_set_header   Host             $host;  
proxy_set_header   X-Real-IP        $remote_addr;  
proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;  
proxy_connect_timeout 200s;  
proxy_read_timeout 200s;  
proxy_send_timeout 200s;  
}



  
  这样在后端某 server 发生故障时,如报404 500  502 503 等错误时,即可实现自动容错,切换到第二台server进行响应。
  这是通常情况下的负载均衡容错,他是建立在后端的server不能再响应用户请求的情况下才进行切换的,我们在日常工作中碰到了这么一种情况
  平时需要第三方的一台server上接收数据,将接受过来的数据已链接的形式反馈给用户使用,碰到的问题是,当第三方的接收有问题时,数据无法接收,但是我们自己
server 并没有异常,照常响应用户请求,由于没有接受过来数据,所以用户看到的反馈结果为空,这样严重影响了用户体验,故采用下面一种方法,首先 check 一个 url ,用于判断与第三方的通信情况,如果正常,则第二个反馈给用户的数据链接正常调用;如果异常,则将所有的用户请求都转发到下一台server中,我尝试利用
nginx 来实现,无奈的是没有操作成功,故这里采用 haproxy 来实现

  wget
http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.8.tar.gz

  tar
zxvf haproxy-1.4.8.tar.gz   &&    cd haproxy-1.4.8

  make
TARGET=linux26 PREFIX=/opt/soft/haproxy

  make
install PREFIX=/opt/soft/haproxy

  创建haproxy账户及账户组,以专门用于启动haproxy进程
  groupadd
haproxy


  useradd
-g haproxy haproxy

  haproxy配置如下:
  

global  
log 127.0.0.1  local1 notice
maxconn 4096  
chroot /opt/soft/haproxy  
uid 504
gid 504
daemon  
quiet  
nbproc  2  
pidfile /opt/soft/haproxy/haproxy.pid  
defaults  
log     127.0.0.1 local0 err  
mode    http  
option  redispatch  
option  dontlognull
option  httplog
timeout connect 10000ms
timeout client 30000ms
timeout server 300ms  
retries 1
maxconn 20000
listen  test.com.cn     0.0.0.0:8020
mode    http
option  forwardfor
balance source
cookie  SERVERID
option  httpchk HEAD /quotedata/cachealert.aspx
server  server_A 192.168.10.2:80 check inter 1500  weight 10 cookie A
server  server_B 192.168.10.3:80 check inter 1500  weight 10 cookie B

这样,当server_A目录下的 cachealert.aspx 这个链接出现问题时,表示已无法接收第三方的数据,因此将所有的访问链接都转到server_B上
  
  


  
        




        


        


        


        


  


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-141403-1-1.html 上篇帖子: lvs+haproxy的一种方式 下篇帖子: haproxy负载均衡配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表