HAProxy Windows版本的编译及其在CORS中的应用

一.HAProxy简介

  HAProxy提供高可用性
、负载均衡以及基于TCP和HTTP应用的代理,它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。
HAProxy运行在当前的硬件上,完全可以支持数以万计 的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中,
同时可以保护你的web服务器不被暴露到网络上。

  HAProxy实现了一种事件驱动,
单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制
、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。事件驱动模型因为在有更好的资源和时间管理的用户端(User-Space)
实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以使每个CPU时间片(Cycle)做更多的工作。下图展示了HAProxy的负载均衡应用模型:

  

二.应用可行性

  出于HAProxy的众多优点,将其应用于CORS(连续运行卫星定位服务综合系统)运维工作可有效提高现有的最大负载能力、减少硬件资源的浪费、保障系统的可用性及稳定性。具体地,可以从以下几个方面阐述:

  1.基于TCP代理在基准站数据流分发流程中充当代理服务器的功能;

  2.基于TCP代理在用户接入及数据播发流程中起到负载均衡均衡器的作用;

  对于用户数量多,并发性高的CORS,使用HAProxy将对外服务端口的请求对应至控制中心内部网络的多个相同功能的应用程序(如IGate/TNC等)的服务端口,  
   
HAProxy可以通过多种方式(IP、cookie、session)保持tcp链接的亲缘性,确保数据交互的正确性。通过多种负载均衡算法,内部的服务程序分担总体的服    务压力,当某个程序down掉了,HAProxy能够自动将相关的tcp链接分发至其它服务程序。HAProxy实现了8种负载均衡算法: 

  • roundrobin,表示简单的轮询

  • static-rr,表示根据权重,可根据服务器性能赋权

  • leastconn,表示最少连接者先处理

  • source,表示根据请求源IP

  • uri,表示根据请求的URI

  • url_param,表示根据请求的URl参数‘balance
    url_param‘ requires an URL parameter name

  • hdr(name),表示根据HTTP请求头来锁定每一次HTTP请求

  • rdp-cookie(name),表示根据据cookie(name)来锁定并哈希每一次TCP请求

  3.基于tcp代理实现内部网络的防火墙的NAT功能。

三.HAProxy的安装与配置

  此文编写HAProxy最新稳定版本的下载地址为:http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.25.tar.gz。

  1.Linux下HAProxy的安装

  • tar
    zcvf haproxy-1.4.25.tar.gz

  • cd haproxy-1.4.25

  • make
    TARGET=linux28 PREFIX=/usr/local/haprpxy

  • make install
    PREFIX=/usr/local/haproxy

  • cd
    /usr/local/haproxy

  • vim
    haproxy.cfg  编辑配置文件,后面统一阐述配置的相关细节

  • /usr/local/haproxy/sbin/haproxy -f
    /usr/local/haproxy/haproxy.cfg    使用刚才的配置文件启动HAProxy

  2.
Windows下HAProxy的编译与安装

  • 下载cygwin安装工具,文章编写时其64位下载地址为:https://cygwin.com/setup-x86_64.exe。运行程序,程序截图如下:

  • 安装gcc,状态为Keep的是本机已安装的,如未安装请勾选Bin列的复选框

  • 安装make工具。

  • 将下载的HAProxy源码包复制到:C:\cygwin64\home,并解压到该目录,

  • 使用Cywin64 Terminal命令行工具进入HAProxy目录:

  • make TARGET=cygwin

  • make install   这样haproxy.exe就编译好了,将haproxy.exe和cygwin1.dll拷贝出来以供使用。

  • 运行方式与Linux环境下一致。

  3.HAProxy配置文件解析

  ########默认配置############
defaults
mode
http #默认的模式mode { tcp|http|health
},tcp是4层,http是7层,health只会返回OK
retries 2
#两次连接失败就认为是服务器不可用,也可以通过后面设置
option redispatch
#当serverId对应的服务器挂掉后,强制定向到其他健康的服务器
option abortonclose
#当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接
maxconn 4096 #默认的最大连接数
timeout
connect 5000ms #连接超时
timeout client 30000ms #客户端超时
timeout server
30000ms #服务器超时
#timeout check 2000 #=心跳检测超时
log 127.0.0.1 local0 err
#[err warning info debug]

########统计页面配置########
listen
admin_stats
bind 0.0.0.0:1080 #监听端口
mode http
#http的7层模式
option httplog #采用http日志格式
#log
127.0.0.1 local0 err
maxconn 10
stats refresh 30s
#统计页面自动刷新时间
stats uri /stats #统计页面url
stats
realm XingCloud\ Haproxy #统计页面密码框上提示文本
stats auth admin:admin
#统计页面用户名和密码设置
stats hide-version
#隐藏统计页面上HAProxy的版本信息

########test1配置#################
listen
test1
bind 0.0.0.0:90
mode tcp
#maxconn
4086
#log 127.0.0.1 local0 debug
server s1
10.18.138.201:80
server s2 10.18.102.190:80
server s3
10.18.102.189:80
server s4 10.18.102.188:80
server s5
10.18.102.187:80
########frontend配置##############

########test2配置#################
listen
test2
bind 0.0.0.0:91
mode tcp
#maxconn
4086
#log 127.0.0.1 local0 debug
server s1
10.18.138.130:80 weight 1
server s2 10.18.138.201:8080 weight
6
########frontend配置##############

  4.实例测试

  为了测试运行效果我们使用最简单的配置做一个简单的tcp代理:

##########全局配置#########
global
daemon
nbproc
1
pidfile
/var/run/haproxy.pid

########默认配置############
defaults
mode
http #默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK
retries 2
#两次连接失败就认为是服务器不可用,也可以通过后面设置
option redispatch
#当serverId对应的服务器挂掉后,强制定向到其他健康的服务器
option abortonclose
#当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接
maxconn 4096 #默认的最大连接数
timeout connect
5000ms #连接超时
timeout client 30000ms #客户端超时
timeout server 30000ms
#服务器超时
#timeout check 2000 #=心跳检测超时
log 127.0.0.1 local0 err #[err warning
info debug]

########统计页面配置########
listen admin_stats
bind
0.0.0.0:1080 #监听端口
mode http #http的7层模式
option httplog #采用http日志格式
#log
127.0.0.1 local0 err
maxconn 10
stats refresh 30s #统计页面自动刷新时间
stats uri
/stats #统计页面url
stats realm XingCloud\ Haproxy #统计页面密码框上提示文本
stats auth
admin:admin #统计页面用户名和密码设置
stats hide-version
#隐藏统计页面上HAProxy的版本信息

########test1配置#################
listen
test1
bind 0.0.0.0:81
mode tcp
#maxconn 4086
#log 127.0.0.1 local0
debug
server s1 192.168.1.200:8000

server s1
192.168.1.201:8001

server s1
192.168.1.202:8002
########frontend配置##############

########test2配置#################
listen
test2
bind 0.0.0.0:91
mode tcp
#maxconn 4086
#log 127.0.0.1 local0
debug
server s1 192.168.1.100:9000

server s1
192.168.1.101:9001

server s1
192.168.1.102:9002
########frontend配置##############

    

时间: 2024-10-06 18:57:03

HAProxy Windows版本的编译及其在CORS中的应用的相关文章

Jcef内嵌浏览器windows版本的编译及使用

背景 去年年底接到的新需求,需要将原来用Swing做的桌面应用中的一个功能做成Web版的,并且要集成到原应用中,换言之就是要使用内嵌浏览器.最开始考虑的是JavaFx提供的WebView,优点是不需要其他第三方库,jdk1.7开始集成.但是开发完成之后发现两个比较严重的问题,一是界面有一个比较复杂的曲线图会严重卡顿,另一个是有几率会导致虚拟机崩溃,并且速度上也不是很让人满意.最后只能考虑换一个内嵌浏览器框架,然后就找到jcef,基于chrome,速度兼容性都很好. 关于jcef就不多作介绍,不了

超详细Windows版本编译运行React Native官方实例UIExplorer项目(多图慎入)

转载请标明出处: http://blog.csdn.net/developer_jiangqq/article/details/50661981 本文出自:[江清清的博客] (一)前言 特别说明:群里很多童鞋都在说想Windows系统官方实例,但是官方提供的文档以及网上的例子都是OS X版本.今天特意给大家更新一下Windows版本运行官方 实例(UIExporler)全过程.俗话说学习一样新东西的时候,例如这边我们要学React Native的组件使用,那么最好的学习资料就是官方提供的材料了,

FreeSWITCH编译Windows版本

下载FreeSWITCH官网推荐的1.2.23版本源代码,里面自带VS2012项目方案文件,经过反复尝试,现在找到了一点小技巧. 因为编译的时候要从官网下载很多依赖库文件,所以编译要按照一定的顺序进行.生成顺序如下: 1._Downloads 2.Codecs 3.Dialplans 4.Directions 5.Endpoints 6.Event Handlers 7.Formats 8.Languages 9.Loggers 10.say 11.Sound Files 12.XML Inte

Windows下VC编译OpenDDS

OpenDDS是一个OMG组织DDS标准的C++开源实现,OpenDDS同时也提供Java支持.OpenDDS依赖ACE抽象层来提供不同平台的兼容性,同时也依赖于TAO(例如TAO的IDL编译器).当前OpenDDS有ociweb ObjectComputing维护,官方网站http://www.opendds.org/.目前OpenDDS支持的平台有Windows,Linux family,Android,VxWorks等,可用的编译器包括VC,gcc,QNX gcc等. 1. OpenDDS

【转载】NodeJS、NPM安装配置步骤(windows版本)

1.windows下的NodeJS安装是比较方便的(v0.6.0版本之后,支持windows native),只需要登陆官网(http://nodejs.org/),便可以看到首页的“INSTALL”按钮,直接点击就会自动下载安装了. 2.安装过程基本直接“NEXT”就可以了.(windows的安装msi文件在过程中会直接添加path的系统变量,变量值是你的安装路径,例如“C:\Program Files\nodejs”). 3.安装完成后可以使用cmd(win+r然后输入cmd进入)测试下是否

NodeJS、NPM安装配置与测试步骤(windows版本)

1.windows下的NodeJS安装是比较方便的(v0.6.0版本之后,支持windows native),只需要登陆官网(http://nodejs.org/),便可以看到首页的“INSTALL”按钮,直接点击就会自动下载安装了. 2.安装过程基本直接“NEXT”就可以了.(windows的安装msi文件在过程中会直接添加path的系统变量,变量值是你的安装路径,例如“C:\Program Files\nodejs”). 3.安装完成后可以使用cmd(win+r然后输入cmd进入)测试下是否

[转]NodeJS、NPM安装配置步骤(windows版本)

1.windows下的NodeJS安装是比较方便的(v0.6.0版本之后,支持windows native),只需要登陆官网(http://nodejs.org/),便可以看到首页的“INSTALL”按钮,直接点击就会自动下载安装了. 2.安装过程基本直接“NEXT”就可以了.(windows的安装msi文件在过程中会直接添加path的系统变量,变量值是你的安装路径,例如“C:\Program Files\nodejs”). 3.安装完成后可以使用cmd(win+r然后输入cmd进入)测试下是否

CentOS6.6 32位 Minimal版本纯编译安装Nginx Mysql PHP Memcached

CentOS是红帽发行的免费的稳定Linux版本,在企业服务器应用中都会选用Minimal版本,因为Minimal是CentOS"最纯洁"的服务器系统,因为Minimal版本连vim编辑器都需要自己安装,Minimal组件最少,无桌面,扩展灵活,非常适合做服务器. 1.配置网卡 Minimal版本的CentOS被安装后,网卡驱动默认是down状态,需要手动激活,在连接好网线后需要执行命令: [[email protected] soft]# vi /etc/sysconfig/netw

NodeJS、NPM安装配置步骤(windows版本)

1.windows下的NodeJS安装是比较方便的(v0.6.0版本之后,支持windows native),只需要登陆官网(http://nodejs.org/),便可以看到首页的“INSTALL”按钮,直接点击就会自动下载安装了. 2.安装过程基本直接“NEXT”就可以了.(windows的安装msi文件在过程中会直接添加path的系统变量,变量值是你的安装路径,例如“C:\Program Files\nodejs”). 3.安装完成后可以使用cmd(win+r然后输入cmd进入)测试下是否