Haproxy安装及配置(转)

1.安装

# 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/haproxy                                #将haproxy安装到/usr/local/haproxy

# make install PREFIX=/usr/local/haproxy

2.配置

安装完毕后,进入安装目录配置文件,默认情况下目录里是没有.cfg配置文件的,可以回到安装文件目录下将examples下的haproxy.cfg拷贝到usr/local/haproxy下。

# cd /usr/local/haproxy

# vi haproxy.cfg

 

默认文件内容如下:
# 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/share/haproxy
uid 99
gid 99
daemon
#debug
#quiet
defaults
log global
mode http
option httplog
option dontlognull
retries 3
redispatch
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000
listen appli1-rewrite 0.0.0.0:10001
cookie SERVERID rewrite
balance roundrobin
server app1_1 192.168.34.23:8080 cookie app1inst1 check inter 2000 rise 2  fall 5
server app1_2 192.168.34.32:8080 cookie app1inst2 check inter 2000 rise 2  fall 5
server app1_3 192.168.34.27:8080 cookie app1inst3 check inter 2000 rise 2  fall 5
server app1_4 192.168.34.42:8080 cookie app1inst4 check inter 2000 rise 2  fall 5
listen appli2-insert 0.0.0.0:10002
option httpchk
balance roundrobin
cookie SERVERID insert indirect nocache
server inst1 192.168.114.56:80 cookie server01 check inter 2000 fall 3
server inst2 192.168.114.56:81 cookie server02 check inter 2000 fall 3
capture cookie vgnvisitor= len 32
option httpclose # disable keep-alive
rspidel ^Set-cookie:\ IP= # do not let this cookie tell our internal IP address
listen appli3-relais 0.0.0.0:10003
dispatch 192.168.135.17:80
listen appli4-backup 0.0.0.0:10004
option httpchk /index.html
option persist
balance roundrobin
server inst1 192.168.114.56:80 check inter 2000 fall 3
server inst2 192.168.114.56:81 check inter 2000 fall 3 backup
listen ssl-relay 0.0.0.0:8443
option ssl-hello-chk
balance source
server inst1 192.168.110.56:443 check inter 2000 fall 3
server inst2 192.168.110.57:443 check inter 2000 fall 3
server back1 192.168.120.58:443 backup
listen appli5-backup 0.0.0.0:10005
option httpchk *
balance roundrobin
cookie SERVERID insert indirect nocache
server inst1 192.168.114.56:80 cookie server01 check inter 2000 fall 3
server inst2 192.168.114.56:81 cookie server02 check inter 2000 fall 3
server inst3 192.168.114.57:80 backup check inter 2000 fall 3
capture cookie ASPSESSION len 32
srvtimeout 20000
option httpclose # disable keep-alive
option checkcache # block response if set-cookie & cacheable
rspidel ^Set-cookie:\ IP= # do not let this cookie tell our internal IP address
errorloc 502 http://192.168.114.58/error502.html
errorfile 503 /etc/haproxy/errors/503.http

根据实际需求,更改配置文件,我的配置如下

global           #全局设置

       log 127.0.0.1   local0      #日志输出配置,所有日志都记录在本机,通过local0输出

       #log loghost    local0 info

       maxconn 4096             #最大连接数

       chroot /usr/local/haproxy

       uid 99                   #所属运行的用户uid

       gid 99                   #所属运行的用户组

       daemon                   #以后台形式运行haproxy

       nbproc 2                 #启动2个haproxy实例

       pidfile /usr/local/haproxy/haproxy.pid  #将所有进程写入pid文件

       #debug

       #quiet

 

defaults             #默认设置

       #log    global

       log     127.0.0.1       local3         #日志文件的输出定向

       mode    http         #所处理的类别,默认采用http模式,可配置成tcp作4层消息转发

       option  httplog       #日志类别,采用httplog

       option  dontlognull  

       option  forwardfor   #如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http Header中获得客户端ip

       option  httpclose    #每次请求完毕后主动关闭http通道,haproxy不支持keep-alive,只能模拟这种模式的实现

       retries 3           #3次连接失败就认为服务器不可用,主要通过后面的check检查

       option  redispatch   #当serverid对应的服务器挂掉后,强制定向到其他健康服务器

       maxconn 2000                     #最大连接数

stats   uri     /haproxy-admin  #haproxy 监控页面的访问地址

       contimeout      5000            #连接超时时间

       clitimeout      50000           #客户端连接超时时间

       srvtimeout      50000           #服务器端连接超时时间

 

stats auth  Frank:Frank   #设置监控页面的用户和密码:Frank

 

stats hide-version         #隐藏统计页面的HAproxy版本信息



frontend http-in                        #前台

       bind *:80

       mode    http

       option  httplog

       log     global

       default_backend htmpool       #静态服务器池

 

backend htmpool                    #后台

       balance leastconn#负载均衡算法

       option  httpchk HEAD /index.htm HTTP/1.0       #健康检查

       server  web1 10.16.0.9:8085 cookie 1 weight 5 check inter 2000 rise 2 fall 3

       server  web2 10.16.0.10:8085 cookie 2 weight 3 check inter 2000 rise 2 fall 3

 

#cookie 1表示serverid为1,check inter 1500 是检测心跳频率

 

 #rise 2是2次正确认为服务器可用,fall 3是3次失败认为服务器不可用,weight代表权重

 

3.加上日志支持

# vim /etc/syslog.conf

在最下边增加
local3.*         /var/log/haproxy.log
local0.*         /var/log/haproxy.log

 

#vim /etc/sysconfig/syslog

修改: SYSLOGD_OPTIONS="-r -m 0"

重启日志服务service syslog restart

 

4.设置开机启动

为了方便系统在开机时加载,还可以创建启动脚本:
# vim /etc/rc.d/init.d/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
       echo "."
}

stop()
{
       echo -n "Stopping $DESC: $PROGNAME"
       haproxy_pid=cat $PIDFILE
       kill $haproxy_pid
       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

 

保存后赐予可执行权限
# chmod +x /etc/rc.d/init.d/haproxy

就可以使用 service haproxy start|stop|restart 来控***务的启动停止跟重启。
并通过以下命令加载到开机服务启动列表
# chkconfig --add haproxy

 

5.启动服务

启动服务:
# /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

 

6.举例

在浏览器中输入haproxy监控地址:http://10.16.0.246:1080/haproxy-admin,如图所示

 

在浏览器输入haproxy设置的对外访问地址:http://10.16.0.244/,如图所示

 

 

 

参考文献:

http://network.51cto.com/art/201110/295955_1.htm

http://blog.csdn.net/maijian/article/details/6082283

http://blog.sina.com.cn/s/blog_51d3553f0100u1bb.html

http://andrewyu.blog.51cto.com/1604432/647907

http://blog.chinaunix.net/space.php?uid=22600159&do=blog&id=2124188

http://sookk8.blog.51cto.com/455855/579719

http://freehat.blog.51cto.com/1239536/1347882

http://www.cnblogs.com/dkblog/archive/2012/03/13/2393321.html

http://jlsfwq.blog.51cto.com/818700/165617

转载于:https://www.cnblogs.com/tonykan/p/3898481.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/575319.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

bootstrap中轮播图、模态框、提示框/弹出框、滚动监听、弹性布局、响应式flex、多媒体对象

轮播图: bootstrap封装了轮播图的功能,其具体如下: 类名描述.carousel创建一个轮播图块的容器,实质是做布局用;且此容器应该有一个di属性,其属性值提供给下面左右按钮href锚点值,用于左右按钮…

hive 常用UDF

Hive UDF整理(可以直接在mysql上测试,hive中没有伪表,需要手动创建,反应慢)字符串函数字符串长度函数:length 语法: length(string A)返回值: int说明:返回字符串A的长度举例:hive> select length(‘abc…

摄影网站收集

图虫网 http://tuchong.com/tags/%E9%95%BF%E6%B2%99/?orderweekly&page2 转载于:https://www.cnblogs.com/PS-apple/p/3902533.html

node简介及安装、下载及运行hexo

node简介: 1.node.js的可以打开服务端的黑盒子及高级前端(Vue、React 、Angular)的学习,例如:文件的读写、网络服务的构建、网络通信等。 2.node.js是操作服务器的一种工具,构建于Chrome的v8引擎之上,可以操作服务器…

node中模块系统及核心模块、执行node文件

node中模块系统: 1.模块系统:核心模块、第三方模块、 自己写的模块。 2.网页中所有的路径都是URL,而不是文件路径。 3.node偏底层开发,开启的服务器完全是一个黑盒子,所有的资源默认都是不能被用户访问的&#xff0…

Repository 仓储,你的归宿究竟在哪?(一)-仓储的概念

写在前面 写这篇博文的灵感来自《如何开始DDD(完)》,很感谢young.han兄这几天的坚持,陆陆续续写了几篇有关于领域驱动设计的博文,让园中再次刮了一阵“DDD探讨风”,我现在不像前段时间那样“疯狂”了,写博文需要灵感&a…

node中模板引擎、模块导出、package.json简介

在node.js中使用引擎模板: art-template不仅在浏览器可以使用,也可以在node中使用,并且模板引擎起早诞生于服务器领域,在node中使用模板引擎: 1.安装:在一个文件目录下执行命令:npm install a…

富爸爸穷爸爸

推荐大家看看,虽然我只看了第一章,但是我觉得写的确实挺好的,也确实符合这个社会规律。 老实本分的工作已经是过去式了。为自己工作才是出路。转载于:https://www.cnblogs.com/joysky/p/3909127.html

Java和C++在细节上的差异(转)

Java的基本程序结构、关键字、操作符都和C/C非常相似,以下为主要的几点区别: 一、基本程序设计结构: Java的基本程序结构、关键字、操作符都和C/C非常相似,以下为主要的几点区别: 1. Java的原始数值型数据类型中不包含无符号类型&…

文件路径和模块路径、nodemon工具

文件路径和模块路径: //在文件操作相对路径中,前面的 ./ 可以省略,但是 在模块标识路径中 ,前面的 ./ 不能省略。// ./-----表示相对于当前目录 /-------当前文件所属磁盘根目录 var fs require(fs);fs.readFile(t…

Express框架简介、express使用模块引擎、模式数据

Express简介: 原生的http不足以应对我们的开发需求,所以我们需要使用框架来加快我们的开发,这里推荐expressjs,其官网:expressjs.com,中文文档推荐:http://javascript.ruanyifeng.com/nodejs/e…

数据库字段关联更新

MS SQL Server 子查询更新: update log set uin b.uin from log a,logs b where a.accountuin b.accountuin mysql 更新: update t_stat_month_user a INNER JOIN t_dept b on a.op_deptb.op_id set a.dept_short_nameb.dept_short_name;转载于:https:/…

浏览器基础知识

Web浏览器的主要功能是展示网页资源,即请求服务器并将结果展示在窗口中。工作原理大概如下: 地址栏输入URL 浏览器根据输入的URL查找域名的IP地址,DNS查找过程如下: 浏览器缓存——浏览器会缓存DNS记录一段时间,不同浏…

MongoDB简介、在node中使用MongoDB

MongoDB数据库简介: 使用MongoDB的好处是不用SQL语句,它提供了对应的API,其功能和MYSQL基本相同,是最像关系型数据库的非关系型数据库;不需要设计表的结构,文档相当于json,如果想要了解更多&am…

喜用神最正确的算法_各种电磁仿真算法的优缺点和适用范围(FDTD, FEM和MOM等)...

从实际工程应用的角度谈一下我对这几种算法的理解。先说结论,FDTD算的快但是不精确,可以用来算电大尺寸的物体,要是一个物体的尺寸大于10个波长,一般的服务站是跑不动FEM的,那必须得用FDTD了。FEM最经典的电磁仿真软件…

Linux下实现自动设置SSH代理

SSH的巨大价值体现在能够配置为代理服务器上。不像在Windows下每次还需要手动登录设置,Linux有很好的工具链能够实现自动设置SSH代理,就是expect和ssh的联合使用,再加上proxychains,任何程序都可以享用代理了,在此我简…

node中操作MySQL

node操作MySQL数据库: 在node中操作MySQL数据库的基本流程如下: // node操作MySQL需要在npm官网下载mysql包并载入node执行代码:// 1.载入MySQL数据库包var mysql require(mysql);// 2.创建连接:var connection mysql.createCo…

百度UEditor编辑器使用(二)

本文摘自:http://www.cnblogs.com/pmpen/archive/2011/09/19/2181811.html 首先感谢分享 百度WEB前端设计部推出一款开源的编辑器UEditor http://ueditor.baidu.com/index.html ,这款编辑器相当强大,它提供了百度地图,google地图…

护士资格证延续注册WEB服务调用失败_服务熔断

熔断机制是应对服务雪崩效应的一种微服务链路保护机制,当扇出链路的某个微服务不可用或者响应时间太长时,会进行服务的降级,进而熔断该节点微服务的调用,快速返回”错误”的响应信息。当检测到该节点微服务响应正常后恢复调用链路…

AssetManager asset的使用

Android 系统为每一个新设计的程序提供了/assets文件夹,这个文件夹保存的文件能够打包在程序里。/res 和/assets的不同点是,android不为/assets下的文件生成ID。假设使用/assets下的文件,须要指定文件的路径和文件名称。以下这个样例&#xf…