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. 如何利用Smartbi做数据分析:车企销量排名TOP10的车型

    下面我们来对比一下去年和今年的销量.同比增长情况: 图1. 轿车销量月趋势 图2. SUV销量月趋势 不难看出2月.7月为两个销量低点,而7月销量受天气影响较大,烈日.高温,毫无看车热情,复杂多变的外 ...

  2. 重点收藏!BI数据分析工具哪家强?

    信息爆炸时代,大数据晋升为一个时髦词汇.不论是在哪个行业领域,大数据分析成为各企业备受推崇的决策工具.对于海量数据的挖掘,有助于统计事情发生的概率,帮助人们计算做某些事情成功的几率.企业正在数据的海洋 ...

  3. Deep Upsupervised Cardinality Estimation 解读(2019 VLDB)

    Deep Upsupervised Cardinality Estimation 本篇博客是对Deep Upsupervised Cardinality Estimation的解读,原文连接为:htt ...

  4. Python:用正则表达式,提取字符串中的所有中文

    import re def clean(line): pattern = re.compile(u'[^\u4e00-\u9fa5]') #中文的范围为\u4e00-\u9fa5 line = re. ...

  5. 怎样打开win7的IIS功能及internet信息服务(IIS)管理器在哪里

    1:在windows7桌面上的左下角,点击"开始",找到"控制面板",并点击进去.如下图所示: 2:进入控制面板后,首先将"查看方式"选择为 ...

  6. VS常用的快捷键

    整理代码          Ctrl+k+f 注释                 Ctrl+k+c 取消注释          Ctrl+k+u 帮助文档          F1 无调试启动     ...

  7. selenium+python安装

    整理了下selenium+python环境搭建,搭建了很多次但每次都还是手忙脚乱,今天用心整理下 selenium 是用于测试 Web 应用程序用户界面 (UI) 的常用框架,并且 Selenium ...

  8. laravel 实现详情分页

    选择合适的PHP框架及前端框架布局页面(10分) 首先展示出分类列表,每个分类下只显示3条信息,无需分页 (30分) 在列表页 点击文章标题进入详细页面,对应的文章点击量+1(30分) 在详细页面点击 ...

  9. LGP6240题解

    题解 我们可以发现,背包有结合律. 也就是先加入元素 \(a\) 再加入元素 \(b\) 和 \(c\),与先加入元素 \(a\) 后再与只有元素 \(b\) 和元素 \(c\) 的背包合并,得到的背 ...

  10. HCNP Routing&Switching之组播技术-组播分发

    前文我们了解了组播技术中的igmp-snooping相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15860484.html:今天我们来聊一聊组播技术 ...