Haproxy 安装初体验
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 安装初体验的更多相关文章
- Nginx unit 源码安装初体验
Nginx unit 源码安装初体验 上次介绍了从yum的安装方法(https://www.cnblogs.com/wang-li/p/9684040.html),这次将介绍源码安装,目前最新版为1. ...
- visual studio for mac的安装初体验
微软2016 Connect 大会发布了visuo studio for mac的pre版本,由于工作原因,现在工作环境是mac,虽然开发现在是在用python,但一直关注着.net的发展,于是自己很 ...
- Node.js 安装 初体验(1)
1.安装nodejs http://nodejs.org/download/ 自动根据系统下载自己的版本node.js 2.环境变量 windows 安装,不需要配置环境变量 mac安装后,会提 ...
- Apache Flink教程----安装初体验
1.window 版本安装 https://flink.apache.org/downloads.html#apache-flink-164 D:\flink-1.6.2-bin-scala_2\fl ...
- lua 5.3.5 安装/初体验
安装 官网http://www.lua.org/start.html 参考 https://blog.csdn.net/qq_23954569/article/details/70879672 cd ...
- mac上Docker安装&初体验
Docker是什么? Docker是一个虚拟环境容器,可以将你的开发环境.代码.配置文件等一并打包到这个容器中,并发布和应用到任意平台中. 官方文档:https://docs.docker.com H ...
- laravel安装初体验
1.github下载laravel 2.通过composer安装相应的库 composer config repo.packagist composer https://packagist.phpco ...
- Centos7.3之K8S安装初体验
容器是发展趋势,所以是时候从虚拟机中脱离出来,投入到容器化的怀抱中了. 曾经试过安装k8s,都没有成功,各种乱七八糟的报错,于是一拖再拖,这次总算发现一个可以快速部署的工具,终于安装成功了. 这个k8 ...
- Xamarin+Prism开发详解四:简单Mac OS 虚拟机安装方法与Visual Studio for Mac 初体验
Mac OS 虚拟机安装方法 最近把自己的电脑升级了一下SSD固态硬盘,总算是有容量安装Mac 虚拟机了!经过心碎的安装探索,尝试了国内外的各种安装方法,最后在youtube上找到了一个好方法. 简单 ...
随机推荐
- ES 6 系列 - 变量声明
let 和 const let 声明 (一)基本用法 let 声明的变量只在块级作用域内有效,出了该块则报错,最常见且适合的地方在 for 循环中: var a = []; for (var i = ...
- 学习 Spring (十四) Introduction
Spring入门篇 学习笔记 Introduction 允许一个切面声明一个实现指定接口的通知对象,并且提供了一个接口实现类来代表这些对象 由 中的 元素声明该元素用于声明所匹配的类型拥有一个新的 p ...
- 当进行数据查询时候 要考虑创建一个model ;具备传入与输出的字段
当进行数据查询时候 要考虑创建一个model ;具备传入与输出的字段
- iOS 根据时间戳计算聊天列表的时间(上午/下午)
把时间戳转成聊天时间(上午 10:00 . 昨天 14:00 . 3月15日 15:00) +(NSString*)ChatingTime:(NSString *)timestring{ int ...
- 彻底弄懂 HTTP 缓存机制及原理 | 干货
来源:www.cnblogs.com/chenqf/p/6386163.html 前言 Http 缓存机制作为 web 性能优化的重要手段,对于从事 Web 开发的同学们来说,应该是知识体系库中的一个 ...
- 资源推荐:特意挑选了11个可以称得上“神器”的Windows工具下载
特意挑选了11个可以称得上“神器”的Windows工具,安装包获取方式在文末. 以下神器包含:OCR文字识别.百度云超速下载工具.本地文件搜索工具.软件卸载器.本地视频播放器.图片去水印神器.百度文库 ...
- zabbix在ubuntu16.04上的安装
开始安装 zabbix具体安装可以参考官方文档写的很详细,令人高兴的是现在有了中文的版本的翻译,这里简要说下. 上篇文章我写了在ubuntu14.04上安装zabbix,见这里http://www.c ...
- 洛谷P1083借教室题解
题目 这个难度感觉并没有那么高,因为这个题暴力也好打,但是比较难想出正解,因为如果你不看标签是很难想到这个题竟然是二分,当然前缀和应该很好想,毕竟让你求的是在某段时间内借教室的和是否满足. 这样我们可 ...
- mysql中存储字段类型的查询效率
检索性能从快到慢的是(此处是听人说的): 第一:tinyint,smallint,mediumint,int,bigint第二:char,varchar第三:NULL 解释(转载): 整数类型1.TI ...
- java session创建与获取
一.流程 登录接口-->验证用户名密码-->获取用户实体对象-->创建session (key,value) 其他接口调用-->获取session(key) 二.代码 //登录 ...