两种web最简单的负载均衡配置(nginx haproxy)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了两种web最简单的负载均衡配置(nginx haproxy)相关的知识,希望对你有一定的参考价值。

--------------------------------------------------------------

Centos 6.6 环境  php  http://lampol.blog.51cto.com/11662628/1851016

--------------------------------------------------------------    

   负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器FTP服务器企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。

技术分享

准备  3台服务器

A服务器IP :192.168.1.121 (负责分发到149和142)

B服务器IP :192.168.1.149

C服务器IP :192.168.5.142

(一)nginx 配置负载均衡

Ngnix:

1、工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名、目录结构;

2、Nginx对网络的依赖比较小,理论上能ping通就就能进行负载功能;

3、Nginx安装和配置比较简单,测试起来比较方便;

4、也可以承担高的负载压力且稳定,一般能支撑超过1万次的并发;

5、对后端服务器的健康检查,只支持通过端口来检测,不支持通过url来检测。

6、Nginx对请求的异步处理可以帮助节点服务器减轻负载;

7、Nginx仅能支持http、https和Email协议,这样就在适用范围较小。

8、不支持Session的直接保持,但能通过ip_hash来解决。、对Big request header的支持不是很好,

9、支持负载均衡算法:Round-robin(轮循)、Weight-round-robin(带权轮循)、Ip-hash(Ip哈希)

10、Nginx还能做Web服务器即Cache功能。


配置nginx.conf  添加以下配置

upstream 192.168.1.121 {
      server  192.168.1.149:80;
      server  192.168.1.142:80;
}

server
    {
        listen 80 default_server;
        server_name test.com;
        location /{
              proxy_pass     http://192.168.1.121;
              proxy_set_header   Host             $host;
              proxy_set_header   X-Real-IP        $remote_addr;
              proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        }

    }

配置完后重启nginx即可 浏览器输入 192.168.1.121

然后再刷新网页  就会分发到不同的ip

技术分享

技术分享

(二)haproxy  安装请参考(http://lampol.blog.51cto.com/11662628/1852226)

1 拷贝配置文件 到haproxy 安装的examples 原文件拷贝 

cp haproxy.cfg  /usr/local/haproxy/

开始配置文件

# this config needs haproxy-1.1.28 or haproxy-1.2.1
global
        log 127.0.0.1   local0
        log 127.0.0.1   local1 notice
        #log loghost    local0 info
        maxconn 4096
        chroot /usr/local/haproxy
        uid 99
        gid 99
        daemon
        #debug
        #quiet

defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        retries 3
        timeout connect 5000ms
        timeout client 50000ms
        timeout server 50000ms
        maxconn 2000

frontend http-front
                 bind *:8080
                 mode    http
                 option  httplog
                  log     global
                default_backend  htmlbackend
backend htmlbackend
                  balance roundrobin
                  server  web1 192.168.1.142:80 cookie 1 weight 5 check inter 2000 rise 2 fall 3
                  server  web2 192.168.1.157:80 cookie 2 weight 3 check inter 2000 rise 2 fall 3

配置haproxy 启动脚本

#! /bin/sh
set -e
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/haproxy/sbin
PROGDIR=/usr/local/haproxy
PROGNAME=haproxy
DAEMON=$PROGDIR/sbin/$PROGNAME
CONFIG=$PROGDIR/$PROGNAME.conf
PIDFILE=$PROGDIR/$PROGNAME.pid
DESC="HAProxy daemon"
SCRIPTNAME=/etc/init.d/$PROGNAME

# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0

start()
{
       echo -n "Starting $DESC: $PROGNAME"
       $DAEMON -f $CONFIG -p $PIDFILE
       echo "."
}

stop()
{
       echo -n "Stopping $DESC: $PROGNAME"
       kill  `cat $PIDFILE`
       rm -f $PIDFILE
       echo "."
}

restart()
{
       echo -n "Restarting $DESC: $PROGNAME"
       $DAEMON -f $CONFIG -p $PIDFILE -sf $(cat $PIDFILE)
       echo "."
}

case "$1" in
 start)
       start
       ;;
 stop)
       stop
       ;;
 restart)
       restart
       ;;
 *)
       echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2
       exit 1
       ;;
esac

exit 0

重启haproxy  访问 192.168.1.121:8080

技术分享

技术分享

到此两种方法的负载均衡配置完毕  不是很完善 后期继续完善 另外还存在分发时的session共享问题下个文章再说


本文出自 “生活的理想为了理想的生活” 博客,请务必保留此出处http://lampol.blog.51cto.com/11662628/1852214

以上是关于两种web最简单的负载均衡配置(nginx haproxy)的主要内容,如果未能解决你的问题,请参考以下文章

nginx负载均衡简单配置

nginx负载均衡简单配置

nginx-配置nginx实现负载均衡

nginx配置Nginx实现负载均衡

nginx配置Nginx实现负载均衡

配置Nginx实现负载均衡