构建开源负载均衡架构平台之haproxy

        HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。根据官方数据,其最高极限支持10G的并发。 

HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的web服务器不被暴露到网络上。

Haproxy包括以下一些特征:

1.   根据静态分配的cookie 分配HTTP请求

2.   分配负载到各个服务器,同时保证服务器通过使用HTTP Cookie实现连接保持;

3.   当主服务器宕机时切换到备份服务器;允许特殊端口的服务监控;

4.   做维护时通过热配置可以保证业务的连续性,更加人性化;

5.   添加/修改/删除HTTP Request和Response 头;

6.   通过特定表达式Block HTTP请求;

7.   带有用户验证的详细的HTML监控报告; 

一、安装Haproxy

从官方网站:http://www.haproxy.org 下载最新版本。

# wget http://haproxy.1wt.eu/download/1.3/src/haproxy-1.3.20.tar.gz

# tar zcvf haproxy-1.3.20.tar.gz

# cd haproxy-1.3.20

# make TARGET=linux26 PREFIX=/usr/local/haprpxy

# make install PREFIX=/usr/local/haproxy

二、安装完毕后,进入安装目录创建配置文件

# cd /usr/local/haproxy 

# vi haproxy.cfg

global

        log 127.0.0.1   local0 debug

        maxconn 1024 #每个进程可用的最大连接数

        ulimit-n 8000

        daemon #使HAProxy进程进入后台运行

        nbproc 1#创建1个进程进入deamon模式运行

defaults

        log     global

        mode    http

        option  httplog #定制日志格式

        option  dontlognull

        maxconn 10

        #5 seconds for connection to establish on a server

        contimeout      5000

        #50 seconds for the time we accept to wait for data from the client

        clitimeout      50000

        #50 seconds for the time we accept to wait for data from the server

        srvtimeout      50000

listen boss_web 0.0.0.0:8811

       mode    http

       log     global

       log     10.1.252.153 local3

       maxconn 1000  #每个进程可用的最大连接数

       option forwardfor

       capture request  header Cookie len 200

       cookie  HAPROXYID insert nocache indirect

       balance roundrobin

       #option  httpchk GET /pboss/check.html#允许用http协议检查server 的健康

       server  10_1_252_92_7879 10.1.252.92:7879 check inter 10000 cookie 10_1_252_92_7879

       server  10_1_252_153_7989 10.1.252.153:7989 check inter 10000 cookie 10_1_252_153_7989

listen manager 0.0.0.0:8844 #监控管理平台

       mode http

       balance roundrobin #负载算法,这里采用默认

       stats uri /status   #监控平台的服务名

       stats realm Global/ statistics

       stats auth admin:admin #登陆监控平台的验证信息

~启动服务:
# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg

重启服务:
# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg -st `cat /usr/local/haproxy/logs/haproxy.pid`  (没有换行)

停止服务:
# killall haproxy

三、配置日志

# vim /etc/syslog.conf

在最下边增加
local3.*         /var/log/haproxy.log
local0.*         /var/log/haproxy.log
重启核心日志服务使配置起效
# service syslog restart

然后就可查看日志了
# tail –f /var/log/harpoxy.log

四、登陆监控平台可以查看到当前负载信息及每个服务器的状态http://10.1.252.153:8844/status

 

五、通过统一接入地址(proxy)访问应用程序 http://10.1.252.153:8811/pboss

六、模拟server1宕机

将server1 10.1.252.92:7879服务停掉,并登陆监控平台查看status是否为down.

重新登陆http://10.1.252.153:8811/pboss 登陆成功并从可以观察到服务的负载由server1转移到另一台服务器server2上。

七、模拟server2宕机

将server2 10.1.252.153:7879服务停掉,并登陆监控平台查看status是否为down.

重新登陆http://10.1.252.153:8811/pboss 登陆成功并从可以观察到服务的负载由server2转移到服务器server1上。

 

以上只是利用haproxy一小部分功能,但这些已经可以实现负载的目的,今天就先了解到这里。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Lazy-Balancer 项目起源于好哥们需要一个 7 层负载均衡器,无奈商业负载均衡器成本高昂,操作复杂。又没有特别喜欢(好看,好用)的开源产品,作为一名大 Ops 怎么能没有办法?正好最近在看 Django 框架,尝试自己给 Nginx 画皮,项目诞生!非专业开发,代码凑合看吧。 项目基于 Django   AdminLTE 构建,在 Ubuntu 14.04 上测试通过;为了保证良好的兼容性,请使用 Chrome 浏览器。 因为增加了 iptables 自动控制,所以暂时不支持 docker 方式部署;需要本地测试的同学请使用 vagrant 方式 为了后续扩展方便,请大家使用 Tengine 替代 Nginx 服务 项目地址 GITHUB - https://github.com/v55448330/lazy-balancer 码云 - http://git.oschina.net/v55448330/lazy-balancer OSCHINA - http://www.oschina.net/p/nginx-balancer 更新 将 Nginx 更换为 Tengine 以提供更灵活的功能支持以及性能提升 新增 HTTP 状态码方式检测后端服务器,默认 TCP 方式 新增 HTTP 状态码方式支持查看后端服务器状态 修复因前方有防火墙导致无法获取后端服务器状态 修复因主机头导致后端服务器探测失败 新增自定义管理员用户 新增配置通过文件备份和还原 新增实时查看访问日志和错误日志 新增实时请求统计 更新 Vagrantfile 修复其他 Bug 功能 Nginx 可视化配置 Nginx 负载均衡(反向代理)配置 Nginx 证书支持 系统状态监测 自动维护防火墙规则(白名单) 支持 TCP 被动后端节点宕机检测 支持 HTTP 主动后端节点宕机检测 运行 克隆代码 mkdir -p /app git clone https://github.com/v55448330/lazy-balancer.git /app/lazy_balancer cd /app/lazy_balancer 卸载 nginx apt-get -y purge nginx-* nginx* apt-get -y autoremove 安装 tengine git submodule update --init --recursive cd resource/nginx/tengine apt-get install -y build-essential libssl-dev libpcre3 libpcre3-dev zlib1g-dev ./configure --user=www-data --group=www-data --prefix=/etc/nginx --sbin-path=/usr/sbin --error-log-path=/var/log/nginx/error.log --conf-path=/etc/nginx/nginx.conf --pid-path=/run/nginx.pid make make install mkdir -p /etc/nginx/conf.d echo "daemon off;" >> /etc/nginx/nginx.conf 安装 supervisor apt-get install supervisor update-rc.d supervisor enable 配置 supervisor cp -rf service/* /etc/supervisor/ 安装依赖 apt-get install -y python-dev python-pip iptables libcurl4-openssl-dev pip install -r requirements.txt 初始化数据库 python manage.py makemigrations python manage.py migrate 启动服务 service supervisor restart
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值