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上找到了一个好方法. 简单 ...
随机推荐
- dbexpress连接mysql提示Operation not allowed on a unidirectional dataset
最近刚接触delphi,在了解到dbExpress连接mysql的时候,出现了一些问题,特记录下 我遇到的问题有两个 1. TDBGrid --DataSet=TDataSource1 TDataSo ...
- Unable to resolve target 'android-15'
SDK 15没有加载造成的,在SDK Manager.exe下安装以下文件 Android SDK Tools (25.2.5) Android SDK Platform-tools (28.0.1) ...
- 12.k8s的存储卷创建过程
数据持久化需要数据卷.kubernetes生态提供海量的存储驱动和存储使用方式. [root@master song]# cat pod-demo.yml apiVersion: v1 kind: P ...
- 创建第一个Djiago
Djiago 目录介绍 mysite/ ├── manage.py # 管理文件 └── mysite # 项目目录 ├── __init__.py ├── settings.py # 配置 ├── ...
- Semi-prime H-numbers POJ - 3292 打表(算复杂度)
题意:参考https://blog.csdn.net/lyy289065406/article/details/6648537 一个H-number是所有的模四余一的数. 如果一个H-number是H ...
- Codeforces1071C Triple Flips 【构造】【Four Russians】
题目分析: 这种题目显然可以先考虑哪些无解.我们发现我们不考虑操作次数的时候,我们可以选择连续的三个进行异或操作. 这样我们总能使得一个序列转化为$000...000xy$的形式.换句话说,对于$00 ...
- 洛谷P1144最短路计数题解
最短路计数 此题还是寻找从1到i点总共有几个最短路且每条边的边长为1,对于这种寻找最短路的个数,我们可以反向搜索,即先用\(SPFA\)预处理出所有点的最短路,然后我们反向记忆化搜索,可以用\(sum ...
- IDEA 简单的正则匹配
IDEA在进行查看或替换的时候,勾选Regex 选项就可以进行正则匹配查找了 几个简单实用的正则: 以什么开头,以什么结尾的字符串 以aa开头,以bb结尾的字符串aa.*bb 从开头到某个字符串为止的 ...
- maven编译时出现There are test failures
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.10:test (default-tes ...
- 爬虫_豆瓣电影top250 (正则表达式)
一样的套路,就是多线程还没弄 import requests import re import json headers = 'Mozilla/5.0 (Windows NT 10.0; WOW64) ...