HAProxy安装


# wget http://www.haproxy.org/download/1.4/src/haproxy-1.4.24.tar.gz
# tar xf haproxy-1.4.24.tar.gz
# cd haproxy-1.4.24
# make TARGET=linux2628 ARCH=x86_64
# 编译参数参考README,其中TARGET是指定内核版本,ARCH指定CPU架构
# make PREFIX=/usr/local/haproxy-1.4.24 install
# ln -s /usr/local/haproxy-1.4.24/ /usr/local/haproxy
# 创建配置文件目录,pid目录
# mkdir -p /usr/local/haproxy/etc /usr/local/haproxy/var/chroot /usr/local/haproxy/var/run

开启ipv4转发功能

# sed -i 's#net.ipv4.ip_forward = 0#net.ipv4.ip_forward = 1#g' /etc/sysctl.conf
# grep ip_forward /etc/sysctl.conf
# net.ipv4.ip_forward = 1
# sysctl -p
# net.ipv4.ip_forward = 1

HAProxy配置文件

HAProxy配置文件分为五部分:

global:全局配置参数,用来控制Haproxy启动前的进程及系统相关配置

defaults:配置一些默认参数,如frontend,backend,listen等段未设置时则使用defaults段的配置

listen:frontend和backend的组合

frontend:用来匹配接收客户所请求的域名,uri等,并针对不同的匹配,做不同的请求处理

backend:定义后端服务器群,以及对后端服务器的一些权重,队列,连接数等选项设置

编辑配置文件

# vim /usr/local/haproxy/etc/haproxy.cfg 

配置内容如下

global
daemon #以后台形式运行haproxy
nbproc 1 #进程数量(可以设置多个进程提高性能)
pidfile logs/haproxy.pid #haproxy的pid存放路径,启动进程的用户必须有权限访问此文件
maxconn 1500
ulimit-n 82000 #设置每个进程的可用的最大文件描述符
log 127.0.0.1 local0 debug defaults
#mode http #混合模式时关闭 默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK
retries 3 #三次连接失败就认为是服务器不可用,也可以通过后面设置
#option dontlognull #不记录健康检查的日志信息
option forwardfor #如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http Header中获得客户ip
stats refresh 30 #统计页面刷新间隔
option httplog #日志类别http日志格式
option tcplog #日志类别tcp日志格式
option httpclose #每次请求完毕后主动关闭http通道
option abortonclose #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接
option redispatch #当serverId对应的服务器挂掉后,强制定向到其他健康的服务器
#balance roundrobin #默认的负载均衡的方式,轮询方式
balance source #默认的负载均衡的方式,类似nginx的ip_hash
maxconn 2000 #默认的最大连接数
timeout connect 5s
timeout client 120s
timeout server 120s
#timeout http-keep-alive 10s #http连接生存的时间
timeout check 10s
timeout queue 5000ms #在队列等待连接槽释放的超时时间
timeout client-fin 30000ms #半关闭状态连接,server端非活动超时时间
timeout server-fin 30000ms #半关闭状态连接,client端非活动超时时间
timeout tunnel 1h #客户端和服务器端通道非活动超时时间
log 127.0.0.1 local0 info #默认日志配置 ########统计页面配置########
listen admin_stats
bind 0.0.0.0:10088 #监听端口
mode http #http的7层模式
option httplog #采用http日志格式
log 127.0.0.1 local0 err
maxconn 10
stats refresh 30s #统计页面自动刷新时间
stats uri /stats #统计页面url,监控页面的url
stats realm XingCloud\ Haproxy #统计页面密码框上提示文本,监控页面的提示信息
stats auth admin:admin #统计页面用户名和密码设置,监控页面的用户和密码admin,可以设置多个用户名
stats auth admin1:admin1 #监控页面的用户和密码admin1
stats hide-version #隐藏统计页面上HAProxy的版本信息
stats admin if TRUE #手工启用/禁用,后端服务器(haproxy-1.4.9以后版本)
#errorfile 403 hostweb/error/403.http
#errorfile 500 hostweb/error/500.http
#errorfile 502 hostweb/error/502.http
#errorfile 503 hostweb/error/503.http
#errorfile 504 hostweb/error/504.http listen WebServer
bind :10080
mode http
maxconn 1024
server web1 127.0.0.1:8080 weight 1 rise 2 fall 3
server web2 127.0.0.1:8081 weight 1 rise 2 fall 3
#errorfile 403 hostweb/error/403.http
#errorfile 500 hostweb/error/500.http
#errorfile 502 hostweb/error/502.http
#errorfile 503 hostweb/error/503.http
#errorfile 504 hostweb/error/504.http listen MySQL13306
bind :13306
mode tcp
balance roundrobin
server MySQL_77_3306 127.0.0.1:3306 weight 1 check inter 1000 rise 3 fall 2 id 1
server MySQL_77_3307 127.0.0.1:3307 weight 1 check inter 1000 rise 3 fall 2 id 2 ########frontend配置##############
#listen 与 frontend配置相比,前者可读性较好,#Frontend和Backend的组合体,监控组的名称,按需自定义名称 ,后缀比较灵活
#---------------------------------------------------------------------
# main frontend which proxys to the backends 这里不需要动静分离,所以全部注释掉
#---------------------------------------------------------------------
#frontend main *:5000
# acl url_static path_beg -i /static /images /javascript /stylesheets
# acl url_static path_end -i .jpg .gif .png .css .js # use_backend static if url_static
# default_backend app #---------------------------------------------------------------------
# static backend for serving up images, stylesheets and such
#---------------------------------------------------------------------
#backend static
# balance roundrobin
# server static 127.0.0.1:4331 check #---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
#backend app
# balance roundrobin
# server app1 127.0.0.1:5001 check
# server app2 127.0.0.1:5002 check
# server app3 127.0.0.1:5003 check
# server app4 127.0.0.1:5004 check #---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
#errorloc 503 http://www.osyunwei.com/404.html

添加控制脚本

有haproxy没有自带start,stop,restart,因此我们需要实现此功能,通过shell脚本来实现

# vim /etc/init.d/haproxy 

添加如下内容

#!/bin/bash
BASE_DIR="/usr/local/haproxy"
ARGV="$@"
start()
{
echo "START HAPoxy SERVERS"
$BASE_DIR/sbin/haproxy -f $BASE_DIR/etc/haproxy.cfg
} stop()
{
echo "STOP HAPoxy Listen"
kill -TTOU $(cat $BASE_DIR/var/run/haproxy.pid)
echo "STOP HAPoxy process"
kill -USR1 $(cat $BASE_DIR/var/run/haproxy.pid)
}
case $ARGV in start)
start
ERROR=$?
;; stop)
stop
ERROR=$?
;; restart)
stop
start
ERROR=$?
;; *)
echo "haproxy [start|restart|stop]"
esac
exit $ERROR

赋予执行权限

# chmod +x /etc/init.d/haproxy

验证服务

然后执行

# service haproxy start
# lsof -i :10080
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
haproxy 9692 root 4u IPv4 1438043 0t0 TCP 10.10.180.50:http (LISTEN)

http://10.10.180.50/stats查看

学习 Haproxy (三)的更多相关文章

  1. Oracle学习笔记三 SQL命令

    SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  

  2. 从零开始学习jQuery (三) 管理jQuery包装集

    本系列文章导航 从零开始学习jQuery (三) 管理jQuery包装集 一.摘要 在使用jQuery选择器获取到jQuery包装集后, 我们需要对其进行操作. 本章首先讲解如何动态的创建元素, 接着 ...

  3. 前端学习 第三弹: JavaScript语言的特性与发展

    前端学习 第三弹: JavaScript语言的特性与发展 javascript的缺点 1.没有命名空间,没有多文件的规范,同名函数相互覆盖 导致js的模块化很差 2.标准库很小 3.null和unde ...

  4. Android Animation学习(三) ApiDemos解析:XML动画文件的使用

    Android Animation学习(三) ApiDemos解析:XML动画文件的使用 可以用XML文件来定义Animation. 文件必须有一个唯一的根节点: <set>, <o ...

  5. 三、Android学习第三天——Activity的布局初步介绍(转)

    (转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 三.Android学习第三天——Activity的布局初步介绍 今天总结下 ...

  6. JavaWeb学习总结(三)——Tomcat服务器学习和使用(二) 包含https 非对称秘钥 NB

    JavaWeb学习总结(三)--Tomcat服务器学习和使用(二) 一.打包JavaWeb应用 在Java中,使用"jar"命令来对将JavaWeb应用打包成一个War包,jar命 ...

  7. MyEclipse Spring 学习总结三 SpringMVC

    MyEclipse Spring 学习总结三 SpringMVC 一.SpringMVC原理 1.Springmvc 框架介绍 1)Spring 框架停工了构建Web应用程序的全功能MVC模块.Spr ...

  8. Quartz定时任务学习(二)web应用/Quartz定时任务学习(三)属性文件和jar

    web中使用Quartz 1.首先在web.xml文件中加入 如下内容(根据自己情况设定) 在web.xml中添加QuartzInitializerServlet,Quartz为能够在web应用中使用 ...

  9. MyBatis学习系列三——结合Spring

    目录 MyBatis学习系列一之环境搭建 MyBatis学习系列二——增删改查 MyBatis学习系列三——结合Spring MyBatis在项目中应用一般都要结合Spring,这一章主要把MyBat ...

  10. MyBatis学习 之 三、动态SQL语句

    目录(?)[-] 三动态SQL语句 selectKey 标签 if标签 if where 的条件判断 if set 的更新语句 if trim代替whereset标签 trim代替set choose ...

随机推荐

  1. 【C# IO 操作 】IFormatProvider接口|IFormattable 接口 格式化接口

    IFormatProvider接口获取一个满足要求的个格式化器. 方法 object? GetFormat(Type? formatType);GetFormat方法主要提供一个满足指定要求的对象,该 ...

  2. shell脚本上传sftp文件

    转至:https://blog.csdn.net/sxh6365966/article/details/83385711 #!/bin/bash #SFTP配置信息 #用户名 YEARS=`date ...

  3. Idea项目添加新文件后运行出现404问题

    今天在项目里添加了一个新的html文件,然后运行项目页面跳转出现了404问题,找不到页面,经过我的一番查找,我注意到了Idea项目下有一个target文件,然后上网搜了解到这个target文件是mav ...

  4. _IO_2_1_stdin_ 任意写及对 _IO_2_1_stdout_ 任意读的补充

    之前写过一篇 IO_FILE--leak 任意读,但是在学习的时候偷懒了,没有深入去看,这次碰到 winmt 师傅出的题,就傻眼了,故再写一篇博客来记录一下. 例题 ctfshow Incomplet ...

  5. 哈工大 计算机网络 实验三 IPv4 分组收发实验&IPv4 分组转发实验

    计算机网络实验代码与文件可见github:计算机网络实验整理 实验名称 IPv4 分组收发实验&IPv4 分组转发实验 实验目的: (注:实验报告模板中的各项内容仅供参考,可依照实际实验情况进 ...

  6. python中的流程控制

    目录 引言 流程控制的分类 分支结构 单if结构 if与else结构 if与elif与else结构 if分支的嵌套 循环结构 while循环 while + break循环 while + conti ...

  7. 一、MarkDown学习笔记

    MakrDown学习 MarkDown是什么? 是一种纯文件格式的标记语言,跟我们写txt和word是一样的,不过它有一些简单的标记,可以使普通文本具有一定的格式. MarkDown有什么样式? 样式 ...

  8. tp6微信公众号开发者模式获取access_token

    1:config 文件下新建一个文件wechat.php,将个人id和秘钥写入配置文件 网址: https://developers.weixin.qq.com/doc/offiaccount/Bas ...

  9. Kubernetes系列(二)Service

    作者: LemonNan 原文地址: https://juejin.im/post/6863704173931593736 Service Kubernetes 的 Service 可以为一组具有相同 ...

  10. Net中事件的高级用法之三

    1.事件的高级应用 使用事件可以解除代码耦合 2.事件高级应用实例 using System; using System.Collections.Generic; using System.Linq; ...