20180916 haproxy

Haproxy简介

Haproxy是一款免费的、快速的和稳定的解决方案,提供HA和LB功能,同时对基于TCP的应用和HTTP的应用进行代理,对于流量很大的web站点来说,是一款很适合的软件,世界上很多著名的网站,都有使用。目前,haproxy已经成为一种标准的开源LB软件,在云环境中默认部署。

通过官网可以了解到https://www.haproxy.org/,目前的haproxy已经到1.9,稳定版本是1.8,今天试着了解一下这个1.8的安装和简单实用。

下载解压之后,查看README文件,里面有解压编译安装的方法。系统可以通过uname -a查看内核,然后开始编译,主要的编译阐述是make TARGET=linux26 ARCH=x86_64 PREFIX=/app/haproxy,需要指定内核、指定CPU架构。编译完成后即可进行安装make install,这个很快的。所有的参数都要大写(TARGET ARCH PREFIX),小写不生效。

默认安装后的目录结果是这样的

在该目录下,需要创建如下几个目录,方便使用,bin conf logs var/chroot var/run。这几个目录分别用来存放相关配置。

在conf目录下,主要是用来存放haproxy的主配置文件,主配置文件命名为haproxy.conf 。在haproxy的配置文件中,主要有三块内容:default、global和listen,其中global是用来定义启动haproxy的相关信息,全局配置。

主要是有daemon 后台进程运行,使用haproxy用户和组,log是用来打印日志,通过syslog 514端口 local0设备,来记录haproxy的warning信息。当访问量大时,不要开info信息,信息量很大,对服务器的磁盘压力是很大的。Pidfile的进程号,写入到这个文件中,maxconn是最大连接数,nbproc 8是只开启8个进程,和CPU核数有关。

Default中关键参数,是那些超时参数。

contimeout是连接超时,clitimeout是客户端超时,sertimeout是指服务器超时,这三个超时参数是相关的。30或者50S,毫秒为单位。

第三部分是listen,也就是一个haproxy的实例,名称为www,地址和端口是10.0.0.7,80端口,模式为http。Stats是指有web管理界面,打开web管理界面的方式,是在url后面加/admin?stats,登录的用户名和密码是proxy和oldboy。Balance指负载轮询方式,是用的是RR,forwardfor参数,是用来将client的真实地址,透传给后端的web服务,默认情况下,web服务器记录的是LB的地址,使用了forwardfor参数,就会记录client的真实地址。Httpchk是健康检查。

将该配置文件,传到conf目录下。

说一下环境,现在有两台设备,分别配置了私网地址10.0.0.1和2,公网地址是129和132,然后现在在129上安装了haproxy,通过访问haproxy的公网129地址,来访问私网网站,两台设备上分别启动了nginx,绑定的端口都是私网地址。

配置文件创建之后,可以直接用命令行启动haproxy,需要指定配置文件,-f。

启动之后,有报错,观察一下系统端口情况。

发现有在外网端口上绑定80端口,这个时候就可以访问一下看看。

有错误显示,无法跳转到对应的页面,有可能是健康检查的页面不存在,因为在配置文件中,需要检查站点下的checkstatus页面,目前的页面下,之后index.html文件,所以健康检查不通过,这里修改一下,健康检查的页面为index,然后进程数设置为1.

然后再重新启动一次haproxy,这个时候就可以发现,已经能正常打开了。

 
 

由于负载方式选择的是RR,所以多尝试几次,会出现不同的页面。

这个时候可以看一下后台的管理页面,登录方式是在url后面加admin?stats。用户名密码都是之前设置的,可以得到如下的画面。

 
 

Haproxy日志,配置文件中是用使用syslog日志,所以要在rsyslog的配置文件中增加配置信息。rSyslog的配置文件为/etc/rsyslog.conf。

 
 

global

chroot /application/haproxy/var/chroot

daemon

group haproxy

user haproxy

log 127.0.0.1:514 local0 info

pidfile /application/haproxy/var/run/haproxy.pid

 

maxconn 20480

spread-checks 3

nbproc 8

 

defaults

log global

mode http

retries 3

option redispatch

contimeout 5000

clitimeout 50000

srvtimeout 50000

 

listen www

bind 192.168.245.100:80

mode http

stats enable

stats uri /admin?stats

stats auth proxy:proxy

balance roundrobin

option httpclose

option forwardfor

option httpchk HEAD /index.html HTTP/1.0

server www100 10.0.0.100:80 check

 
 

 

当使用新的配置方式,frontend和backend的方式时,在管理页面上,frontend和backend是分开展示的。具体截图如下:

其中,httpd是frontend的名称,http_server是backend的名称,而在backend中有一个服务器叫www100.具体的haproxy.conf的配置如下所示。

frontend httpd

bind 192.168.245.100:80

mode http

stats enable

stats uri /admin?stats

stats auth proxy:proxy

 

backend http_server

balance roundrobin

option httpclose

option forwardfor

option httpchk HEAD /index.html HTTP/1.0

server www100 10.0.0.100:80 check

Haproxy 安装初体验的更多相关文章

  1. Nginx unit 源码安装初体验

    Nginx unit 源码安装初体验 上次介绍了从yum的安装方法(https://www.cnblogs.com/wang-li/p/9684040.html),这次将介绍源码安装,目前最新版为1. ...

  2. visual studio for mac的安装初体验

    微软2016 Connect 大会发布了visuo studio for mac的pre版本,由于工作原因,现在工作环境是mac,虽然开发现在是在用python,但一直关注着.net的发展,于是自己很 ...

  3. Node.js 安装 初体验(1)

    1.安装nodejs http://nodejs.org/download/  自动根据系统下载自己的版本node.js 2.环境变量 windows 安装,不需要配置环境变量   mac安装后,会提 ...

  4. Apache Flink教程----安装初体验

    1.window 版本安装 https://flink.apache.org/downloads.html#apache-flink-164 D:\flink-1.6.2-bin-scala_2\fl ...

  5. lua 5.3.5 安装/初体验

    安装 官网http://www.lua.org/start.html 参考  https://blog.csdn.net/qq_23954569/article/details/70879672 cd ...

  6. mac上Docker安装&初体验

    Docker是什么? Docker是一个虚拟环境容器,可以将你的开发环境.代码.配置文件等一并打包到这个容器中,并发布和应用到任意平台中. 官方文档:https://docs.docker.com H ...

  7. laravel安装初体验

    1.github下载laravel 2.通过composer安装相应的库 composer config repo.packagist composer https://packagist.phpco ...

  8. Centos7.3之K8S安装初体验

    容器是发展趋势,所以是时候从虚拟机中脱离出来,投入到容器化的怀抱中了. 曾经试过安装k8s,都没有成功,各种乱七八糟的报错,于是一拖再拖,这次总算发现一个可以快速部署的工具,终于安装成功了. 这个k8 ...

  9. Xamarin+Prism开发详解四:简单Mac OS 虚拟机安装方法与Visual Studio for Mac 初体验

    Mac OS 虚拟机安装方法 最近把自己的电脑升级了一下SSD固态硬盘,总算是有容量安装Mac 虚拟机了!经过心碎的安装探索,尝试了国内外的各种安装方法,最后在youtube上找到了一个好方法. 简单 ...

随机推荐

  1. ES 6 系列 - 变量声明

    let 和 const let 声明 (一)基本用法 let 声明的变量只在块级作用域内有效,出了该块则报错,最常见且适合的地方在 for 循环中: var a = []; for (var i = ...

  2. 学习 Spring (十四) Introduction

    Spring入门篇 学习笔记 Introduction 允许一个切面声明一个实现指定接口的通知对象,并且提供了一个接口实现类来代表这些对象 由 中的 元素声明该元素用于声明所匹配的类型拥有一个新的 p ...

  3. 当进行数据查询时候 要考虑创建一个model ;具备传入与输出的字段

    当进行数据查询时候 要考虑创建一个model ;具备传入与输出的字段

  4. iOS 根据时间戳计算聊天列表的时间(上午/下午)

    把时间戳转成聊天时间(上午 10:00  .  昨天 14:00 . 3月15日 15:00) +(NSString*)ChatingTime:(NSString *)timestring{ int ...

  5. 彻底弄懂 HTTP 缓存机制及原理 | 干货

    来源:www.cnblogs.com/chenqf/p/6386163.html 前言 Http 缓存机制作为 web 性能优化的重要手段,对于从事 Web 开发的同学们来说,应该是知识体系库中的一个 ...

  6. 资源推荐:特意挑选了11个可以称得上“神器”的Windows工具下载

    特意挑选了11个可以称得上“神器”的Windows工具,安装包获取方式在文末. 以下神器包含:OCR文字识别.百度云超速下载工具.本地文件搜索工具.软件卸载器.本地视频播放器.图片去水印神器.百度文库 ...

  7. zabbix在ubuntu16.04上的安装

    开始安装 zabbix具体安装可以参考官方文档写的很详细,令人高兴的是现在有了中文的版本的翻译,这里简要说下. 上篇文章我写了在ubuntu14.04上安装zabbix,见这里http://www.c ...

  8. 洛谷P1083借教室题解

    题目 这个难度感觉并没有那么高,因为这个题暴力也好打,但是比较难想出正解,因为如果你不看标签是很难想到这个题竟然是二分,当然前缀和应该很好想,毕竟让你求的是在某段时间内借教室的和是否满足. 这样我们可 ...

  9. mysql中存储字段类型的查询效率

    检索性能从快到慢的是(此处是听人说的): 第一:tinyint,smallint,mediumint,int,bigint第二:char,varchar第三:NULL 解释(转载): 整数类型1.TI ...

  10. java session创建与获取

    一.流程 登录接口-->验证用户名密码-->获取用户实体对象-->创建session (key,value) 其他接口调用-->获取session(key) 二.代码 //登录 ...