haproxy 新手上路

apache、nginx之类的反向代理(转发)功能,通常只能用于http协议,其它协议就不好使了(注:nginx据说商业版的,支持tcp协议了)。

haproxy可以弥补这方面的不足,haproxy支持http/tcp多种协议,可以当做rpc(thrift/gRPC/avro)框架前端的负载均衡转发中间件,下面介绍基本使用:

以下环境均为mac OSX。

一、安装

brew install haproxy

默认安装的是1.6.1版本,注:没安装 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 <[email protected]>

表示安装成功

二、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工作是否正常

参考文章:

http://cbonte.github.io/haproxy-dconv/configuration-1.6.html

时间: 2024-10-10 00:52:55

haproxy 新手上路的相关文章

OpenGL教程之新手上路

Jeff Molofee(NeHe)的OpenGL教程- 新手上路 译者的话:NeHe的教程一共同拥有30多课,内容翔实,而且不断更新 .国内的站点实在应该向他们学习.令人吃惊的是,NeHe提供的例程源代码差点儿都有跨平台的不同编译版本号,涉及从Visual C++.Borland C++.Visual Basic.MacOS X/GLUT.Linux/GLX.Code Warrior.Delphi.C++ Builder.MASM.ASM.MingW32&Allegro以及Python等等的不

Ansible 二(新手上路)

Ansible 二(新手上路) 1.远程连接概述 远程控制: ansible1.2版本及以前的版本,默认使用python写的paramiko模块进行控制linux主机. ansible1.3版本以后,默认使用openssh进行控制linux主机,并开启了ControlPersist来优化连接速度和认证(centos6.0/RHEL6以后全已经支持). 远程传输: 默认使用SFTP传输:如果不支持可以修改配置文件为SCP模式传输. ansible配置文件详解:http://www.ansible.

Linux新手上路命令

Linux新手上路命令 命令:www.ahlinux.com Ctrl+Alt+F1  进入命令界面 Ctrl+Alt+F7  返回图形界面 root用户和普通用户切换 administrator 2 root 命令 : sudo su root 2 administrator 命令 : su administrator 设置root 用户密码 sudo passwd root 启用root 用户权限 sudo passwd -u root 禁用root 用户权限 sudo passwd -l

新手上路之Hibernate:第一个Hibernate例子

一.Hibernate概述 (一)什么是Hibernate? Hibernate核心内容是ORM(关系对象模型).可以将对象自动的生成数据库中的信息,使得开发更加的面向对象.这样作为程序员就可以使用面向对象的思想来操作数据库,而不用关心繁琐的JDBC.所以,Hibernate处于三层架构中的D层(持久层). (二)使用Hibernate的优点 1.Hibernate可以使用在java的任何项目中,不一定非要使用在java web项目中.因为Hibernate不需要类似于tomact这些容器的支持

新手上路,如何自学CAD制图呢?

我们在初学CAD制图的时候,由于刚刚开始新手入门,在学习CAD制图的过程中,总是会遇到各种各样不同的困难.这时候我们该如何解决呢?小编去弄今天先和大家分享一些关于新手上路,如何自学CAD制图的方法.小伙伴们快点来看看吧!第 一:要清楚自己为何要学CAD自己为什么一定要学习CAD?学了之后对自己的能力有什么帮助?学好后对今后的职业发展又有何意义?确定好上述的这几个问题后,我们定下学习目标,安排好学习计划,争取熟练掌握CAD制图软件,直到精通,这样才能学以致用. 第 二:开始学习,一定要买本书来学建

新手上路——it人如何保持竞争力

新手上路——如何保持竞争力 JINGZHENGLI 套用葛大爷的一句名言:21世纪什么最贵,人才.哪你是人才还是人材?还是人财或人裁?相信大家都不是最后一种.何如保持住这个光环呢?就需要我们保持我们独特的核心竞争力 对比到我们码界,大神级人物简单举不胜举,我们成不了大神,但也不希望永远是个打酱油的菜鸟,需要提高的我们核心竞争力,才能立于不败这地. 回顾大学的四年时光,你感觉这收获到了什么呢?我认为,四年大学经历倒没有学会到多少知识,当然毕业后也都还给了老师,现在连基本的微积分也解不出来.我一直认

《新手上路》老师让我们用eclipse画图形,然后我蒙圈了

这两天我们刚学到程序流程控制,把FOR循环讲完给我们弄了几道趣味题: 利用双重循环打印 *堆成的三角形 然后思索3个钟头后得出结果: package jwork; public class text6 { public static void main(String[] args) {  for(int x=1;x<=5;x++){ for(int y=x;y<=4;y++){ System.out.print(" "); } for(int y=x;y>=1;y--

Web公路,新手上路!NO.3 [ 乱做一通的基本视频网页]

这个页面主要是三部分,导航,内容,页尾. 一.导航: 一般有三种方式, 垂直导航栏, 横向导航栏,复合导航栏. 这里主要讲横向导航栏, 这种有两种基本方式: display:inline 和 float:left  两种. Lz用的是的 float方式,  这种方式会有一个小问题: 就是窗口缩小时,导航栏会往下掉,这里就要把 navbar类设置为 width: 100%; 还有一个,导航栏字体不在正中间,可用 line-heigth 来调整. 但这里会出现整个页面都不会往下掉,例如窗口缩小后文字

新手上路(C#)

通过一些思想的挣扎,为了让自己多一门技术,最后我选择了学习web-前端.  通过1周多点的学习,把基础的C#学习了哈. 以下就是对它的一种概括和了解吧. C#是微软公司发布的一种面向对象的.运行于.NET Framework之上的高级程序设计语言.并定于在微软职业开发者论坛(PDC)上登台亮相.C#是微软公司研究员Anders Hejlsberg的最新成果.C#看起来与Java有着惊人的相似:它包括了诸如单一继承.接口.与Java几乎同样的语法和编译成中间代码再运行的过程.但是C#与Java有着