haproxy 新手上路
apache、nginx之类的反向代理(转发)功能,通常只能用于http协议,其它协议就不好使了(注:nginx据说商业版的,支持tcp协议了)。
haproxy可以弥补这方面的不足,haproxy支持http/tcp多种协议,可以当做rpc(thrift/gRPC/avro)框架前端的负载均衡转发中间件,下面介绍基本使用:
以下环境均为mac OSX。
一、安装
brew install haproxy
默认安装的是1.6.0版本,注:没安装 brew的,请先访问http://brew.sh/ 安装
安装后的路径为:
/usr/local/Cellar/haproxy/1.6.0
或者,也可以直接上官网http://www.haproxy.org/#down下载
安装完成后,输入
haproxy -version 如果能看到类似下面的输出:
HA-Proxy version 1.6.0 2015/10/13
Copyright 2000-2015 Willy Tarreau <willy@haproxy.org>
表示安装成功
二、http转发配置
随便找个目录(比如:~/work/cfg/),创建haproxy.cfg文件(文件名随意),参考内容如下:
global
daemon
maxconn 256 defaults
mode http
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms listen http-in
bind *:9000
server server1 127.0.0.1:8081 maxconn 32
主要是最后三行,表示将本机9000端口的http访问,转发到127.0.0.1:8081端口,即访问: http://127.0.0.1:9000 相当于访问http://127.0.0.1:8081
三、启动
haproxy -f ~/work/cfg/haproxy.cfg -d
正常的话,会输出下面这些:
Available polling systems :
kqueue : pref=300, test result OK
poll : pref=200, test result OK
select : pref=150, test result OK
Total: 3 (3 usable), will use kqueue.
Using kqueue() as the polling mechanism.
此时,访问http://localhost:9000/ 应该有结果 ,同时终端会有相关的信息输出
注:如果启动时,提示bind某端口失败之类的,先检查端口是否被占用
命令 lsof -i tcp:port (port替换成端口号,比如9000)可以查看该端口被什么程序占用,并显示pid,方便kill进程
如果端口也未占用,尝试换成一个高一些的端口,我在mac本机尝试时,刚开始使用80或81端口,始终起不来,用上述命令查端口占用,也没被占用,换成一个高位端口后,才正常启动,不知道是不是个别现象。
四、http负载均衡示例
global
daemon
maxconn 256 defaults
mode http
stats enable
stats uri /haproxy-stats
stats refresh 10s
monitor-uri /haproxy-test
balance roundrobin
option httpclose
option forwardfor
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms listen my-web-cluster1
bind *:9000
server server1 127.0.0.1:80
server server2 192.168.1.14:80
上面的配置表示,访问http://localhost:9000/时,会转发到127.0.0.1:80或192.168.1.14:80中的一台
另外,访问 http://localhost:9000/haproxy-stats 还能看到一个统计页面, http://localhost:9000/haproxy-test 用于测试haproxy工作是否正常
五、tcp负载均衡配置示例
global
daemon
nbproc 1
pidfile /Users/yjmyzz/work/pid/haproxy.pid defaults
mode tcp
retries 3
option redispatch
option abortonclose
maxconn 4096
timeout connect 5000ms
timeout client 30000ms
timeout server 30000ms
log 127.0.0.1 local0 notice err listen thrift-cluster
bind *:33210
mode tcp
balance roundrobin
server server1 localhost:33208
server server2 localhost:33209
注意下:8,9这二行,这表示如果某个节点挂了,重试3次以后,会转发到其它节点,即单点故障迁移
参考文章:
http://cbonte.github.io/haproxy-dconv/configuration-1.6.html
haproxy 新手上路的更多相关文章
- php大力力 [001节]2015-08-21.php在百度文库的几个基础教程新手上路日记 大力力php 大力同学 2015-08-21 15:28
php大力力 [001节]2015-08-21.php在百度文库的几个基础教程新手上路日记 大力力php 大力同学 2015-08-21 15:28 话说,嗯嗯,就是我自己说,做事认真要用表格,学习技 ...
- OpenGL教程之新手上路
Jeff Molofee(NeHe)的OpenGL教程- 新手上路 译者的话:NeHe的教程一共同拥有30多课,内容翔实,而且不断更新 .国内的站点实在应该向他们学习.令人吃惊的是,NeHe提供的例程 ...
- webpack4配置详解之新手上路初探
前言 经常会有群友问起webpack.react.redux.甚至create-react-app配置等等方面的问题,有些是我也不懂的,慢慢从大家的相互交流中,也学到了不少. 今天就尝试着一起来聊 ...
- Dart语言快速学习上手(新手上路)
Dart语言快速学习上手(新手上路) // 声明返回值 int add(int a, int b) { return a + b; } // 不声明返回值 add2(int a, int b) { r ...
- 转-spring-boot 注解配置mybatis+druid(新手上路)-http://blog.csdn.net/sinat_36203615/article/details/53759935
spring-boot 注解配置mybatis+druid(新手上路) 转载 2016年12月20日 10:17:17 标签: sprinb-boot / mybatis / druid 10475 ...
- 活字格企业 Web 应用生成器新手上路指南
活字格是一款企业 Web 应用生成器,使用了类 Excel 的设计界面,通过简单的拖拽操作,就能快速制作出一个 Web 信息管理系统.在整个使用过程中无需专业软件知识,没有任何技术门槛,能轻松实现各行 ...
- Ocelot 新手上路
新手上路,老司机请多多包含!Ocelot 在博园里文章特别多,但是按照其中一篇文章教程,如果经验很少或者小白,是没法将程序跑向博主的结果. 因此总结下 参考多篇文章,终于达到预期效果. Oce ...
- Two Sum - 新手上路
不是计算机相关专业毕业的,从来没用过leetcode,最近在学习数据结构和算法,用leetcode练练手. 新手上路,代码如有不妥之处,尽管指出来. 今天抽空做的第一个题:Two Sum(最简单的呃呃 ...
- 新手上路——it人如何保持竞争力
新手上路——如何保持竞争力 JINGZHENGLI 套用葛大爷的一句名言:21世纪什么最贵,人才.哪你是人才还是人材?还是人财或人裁?相信大家都不是最后一种.何如保持住这个光环呢?就需要我们保持我们独 ...
随机推荐
- 学习Javascript闭包(Closure)
闭包作用 1.让变量驻留在内存中 2.函数外部可以读取函数内部的私有变量 <!DOCTYPE html> <html lang="en"> <head ...
- iOS笔记之NSSet
一.简介 NSSet到底什么类型,其实它和NSArray功能性质一样,用于存储对象,属于集合: NSSet , NSMutableSet类声明编程接口对象,无序的集合,在内存中存储方式是不连续的, ...
- Android—自定义控件实现ListView下拉刷新
这篇博客为大家介绍一个android常见的功能——ListView下拉刷新(参考自他人博客,网址忘记了,阅读他的代码自己理解注释的,希望能帮助到大家): 首先下拉未松手时候手机显示这样的界面: 下面的 ...
- 【转载】ReactiveX 的理念和特点
原作者地址:http://www.open-open.com/lib/view/open1440166491833.html ReactiveX是Reactive Extensions的缩写,一般简写 ...
- iOS 学习 - 25 ImageIO 播放 GIF
一.给原生的 UIImageView 添加类别来支持 GIF 播放 GIF 动态图片文件中包含了一组图片及信息,信息主要记录着每一帧图片播放的时间,我们如果获取到了 gif 文件中所有的图片同时又获取 ...
- 使用xhprof分析php代码性能
推荐在Linux平台使用xhprof,win下xhprof目前稳定版本在php5.5 安装xhprof 下载地址 http://pecl.php.net/get/xhprof-0.9.4.tgz 与p ...
- HDFS --访问
Hdfs的访问方式有两种,第一:类似linux命令,hadoop shell.第二:java API方式. 先看第一种. FS Shell cat chgrp chmod chown copyFrom ...
- C#.NET万能数据库访问封装类(ACCESS、SQLServer、Oracle)
using System; using System.Collections; using System.Collections.Specialized; using System.Data; usi ...
- Oracle RAMN 备份解决方案一例
以前在博客里面介绍了RMAN备份脚本一列分享,通过RMAN备份到本地路径,然后通过FTP将备份文件上传到FTP服务器. 下面简单介绍另外一例RMAN备份解决方案,下面是我简单画的一个图(很少画图,感觉 ...
- Linux LVM学习总结——删除卷组VG
在Linux系统中,如何删除一个卷组(VG)呢? 下面我总结了一下如何删除卷组(VG)的具体步骤,仅供参考,如有不足,敬请指出.谢谢!在下面的例子中,我想删除卷组VolGroup05. 步骤1: 查看 ...