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上找到了一个好方法. 简单 ...
随机推荐
- Lodop打印设计、维护、预览、直接打印简单介绍
四者的区别和联系:(其中PRINT_DESIGN打印设计是提供给开发人员的,另外三个可开放给用户)PRINT_DESIGN打印设计:辅助开发人员设计,图形化拖动插入修改等,设计完成后,生成代码拷贝到程 ...
- LODOP设置打印机不存在不打印
LODOP中打印机的选择有优先级的存在,如果程序中指定的是错误的打印机,那么会走下一个优先级,这样,就可能存在选择了打印机无效,从默认打印机打印出来了,可以在代码里加判断避免这一点. 打印机优先级简介 ...
- 6.docker的私用镜像仓库registry
docker方式启动镜像仓库 / # cat /etc/docker/registry/config.yml version: 0.1 log: fields: service: registry s ...
- Previous Workflow Versions in Nintex Workflow
Previous Workflow Versions in Nintex Workflow September 4, 2013 It occurred to me that even though I ...
- 搭建Hexo博客(二)-连接github
没有github账号先需要创建账号,地址:https://github.com/join?source=header 有账号的看下面: 1.创建repo 创建一个repo,名称为yourname.gi ...
- Nginx 完整安装篇
第一步安装各种编译库如c++编译库等 yum install -y gcc //安装GCC ...安装过程省略 yum install -y gcc-c++ //安装C++库用来编译c++ ...安装 ...
- CSS3选择器之属性选择器
一.属性选择器 1.E[foo^="bar"]:该属性选择器描述的是选择属性以bar开头的元素,如: //所有以名称g_开头的div的字体颜色为红色div[name^=" ...
- layui laydate设置当前日期往后不可选
layui laydate设置当前日期往后不可选 laydate.render({ elem: '#demo', max: maxDate() }); // 设置最大可选的日期 function ma ...
- 用随机投掷飞镖法计算Pi值(Randomness Throwing dart Pi Python)
画一个边长为r的正方形和半径为r的四分之一的圆(如下图所示),向上面随机投掷飞镖,通过计算落在星星区域和整体区域的飞镖比例,即可求出π值. 公式推导如下: 假设正方形的边长r为1,那么飞镖落在星星区域 ...
- GCD HDU - 2588
输入 N 和 M (2<=N<=1000000000, 1<=M<=N), 找出所有满足1<=X<=N 且 gcd(X,N)>=M 的 X 的数量. Inpu ...