haproxy tcp 真实ip代理tcp 稳定性怎么样

用户名:urey_pp
文章数:314
评论数:618
访问量:630333
注册日期:
阅读量:1297
阅读量:3317
阅读量:582172
阅读量:466782
51CTO推荐博文
由于nginx默认仅支持http应用层协议的端口,对四层tcp端口支持不好,需要安装额外的nginx_tcp_proxy_module模块,因此在不方便重新编译nginx模块时,可以用HAProxy代理activemq的tcp端口,只需要6个步骤就可以完成(以Ubuntu为例,CentOS大同小异)。步骤1:安装HAProxyapt-get&install&haproxy步骤2:配置HAProxy配置文件vim编辑/etc/haproxy/haproxy.cfg,将defaults段中的mode&&&& http和option&&&& httplog注释掉,添加一个tcp代理,如下文所示:global&&&&&
&&&&&log&/dev/log&&&&&local0&&&&&
&&&&&log&/dev/log&&&&&local1&notice&&&&&
&&&&&chroot&/var/lib/haproxy&&&&&
&&&&&user&haproxy&&&&&
&&&&&group&haproxy&&&&&
&&&&&daemon&&&&&
defaults&&&&&
&&&&&log&&&&&global&&&&&
&&&&&#mode&&&&&http&&&&&
&&&&&#option&&&&&httplog&&&&&
&&&&&option&&&&&dontlognull&&&&&
&&&&&&&&contimeout&5000&&&&&
&&&&&&&&clitimeout&50000&&&&&
&&&&&&&&srvtimeout&50000&&&&&
&&&&&errorfile&400&/etc/haproxy/errors/400.http&&&&&
&&&&&errorfile&403&/etc/haproxy/errors/403.http&&&&&
&&&&&errorfile&408&/etc/haproxy/errors/408.http&&&&&
&&&&&errorfile&500&/etc/haproxy/errors/500.http&&&&&
&&&&&errorfile&502&/etc/haproxy/errors/502.http&&&&&
&&&&&errorfile&503&/etc/haproxy/errors/503.http&&&&&
&&&&&errorfile&504&/etc/haproxy/errors/504.http&&&&&
listen&activemq_cluster&0.0.0.0:61616&&&&&
&&&&mode&tcp&&&&&
&&&&balance&source&&&&&
&&&&option&tcpka&&&&&
&&&&option&tcplog&&&&&
&&&&server&&activemqnode1&192.168.100.81:61616&check&inter&2000&rise&2&fall&3步骤3:测试HAProxy配置文件是否正确/usr/sbin/haproxy&-c&-f&/etc/haproxy/haproxy.cfg步骤4:启用HAProxy,允许init脚本启动HAProxy,如/etc/init.d/haproxy start或service haproxy start等#&/etc/default/haproxy&,ENABLED=1
sed&-i&'s/ENABLED=0/ENABLED=1/g'&/etc/default/haproxy
cat&/etc/default/haproxy
#&Set&ENABLED&to&1&if&you&want&the&init&script&to&start&haproxy.&&&&&&
ENABLED=1&&&&&&&
#&Add&extra&flags&here.&&&&&&&
#EXTRAOPTS="-de&-m&16"步骤5:启动HAProxy并检查运行结果/etc/init.d/haproxy&start或service&haproxy&start
/etc/init.d/haproxy&status或service&haproxy&status
netstat&Canop&|&grep&haproxy或ps&Cef&|&grep&haproxy&|&grep&Cv&grep步骤6:允许防火墙通过设定的tcp端口ufw&allow&61616/tcp接下来就可以测试和使用activemq了。--end--本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)用户名:pesen
文章数:48
评论数:16
访问量:54317
注册日期:
阅读量:1297
阅读量:3317
阅读量:582172
阅读量:466782
51CTO推荐博文
& & & & 关于haproxy,多年前曾经安装配置过。当时的感觉就是很简单,三两下就能使用了。不过随着阅历的积累,越发觉得想把haproxy用到出神入化还是很不容易的。不止是haproxy,任何一项技术想使用到巅峰状态都是一件很困难的事情。用到什么程度能够最大限度的提升性价比?多开启一项功能,性能就有可能大幅度下降;少开启一项功能,性能达不到预想的峰值。高深啊,高深。。。好了,废话也不多说了。今天就先把haproxy基本的安装配置贴出来,不是为了什么共同学习(安装这么个东西也没有什么好学习的),实在是为了给自己备忘一下,省的再需要安装的时候到处翻腾。
HAProxy简介
来自haproxy官网的介绍
http://haproxy.1wt.eu/
availability,load
balancing,
HTTP-based
applications.
particularly
persistence
processing.
Supporting
connections
integration
architectures
possibility
&650) this.width=650;" alt="" src="webkit-fake-url://CD2C-4838-BFFB-ACE/image.tiff" />
availability
environments.
大概的意思是:HAProxy是一款提供高可用性、负载均衡
以及基于TCP和HTTP应用的代理软件,HAProxy是完全免费的、借助HAProxy可以快速并且可靠的提供基于TCP和HTTP应用的代理解决方案。HAProxy最主要的特点是性能,HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。
HAProxy完全可以支持数以万计的并发连接。并且HAProxy的运行模式使得它可以很简单安全的整合进您当前的架构中,
同时可以保护你的web服务器不被暴露到网络上。
还有一些关于HAProxy架构应用和日志方面的介绍(来自/node/1403):
HAProxy是支持L4及L7交换的开源软件,高性能,高稳定性。在做L7交换时,可以根据http
header/cookie等定制各种交换策略。
可以对http
request/response
header/cookie等进行修改。
易
于查看各种统计信息。
通过引入7层交换,更有效利用squid资源。
对可缓存的请求,使用url一致性hash将请求分为几组,每组由固定后端squid处理。这样每台squid由原先的要缓存所有内存变为只缓
存一部分内容,可以进一步提高squid的缓存命中率,特别是内存缓存命中率;
承担连接管理功能,客户端不再保持与squid的连接,而是保持与haproxy的连接,这样squid上的并发连接数可以减少到极低的水平,降低squid负载。一方面提高squid吞吐能力,一方面减少内存开销,可以有更多的内存用作缓存;
对纯动态请求,可以不再通过squid,由haproxy直接转发给后端web服务器,减少squid负担及所需机器数量;
通过7层交换功能及header修改等功能,可以更灵活的制定各种请求转发策略;
将不同域名下的同类请求合并处理;
将同一域名下的不同应用分散到不同的专用服务器上处理;
将请求量特别大的某些资源定向到专用服务器处理,如网站/内嵌首页等;
利用haproxy的强大日志能力,采集更多的信息以便细化分析
haproxy的日志对连接处理情况(建立连接到发送完请求时间,排队时间,连接后端服务器时间,后端响应时间,连接断开时间),连接断开情况
(各种断开原因)等记录更为详细,便于对网络状况做详细分析;
haproxy的日志可以捕获各种http请求/响应的header,在出现问题时便于采集信息进行排查;
haproxy还可以在日志中记录cookie(限一个),可以记录MAC以便对用户进行深度跟踪。
HAProxy的安装配置
在安装之前,首先确定一下结构。我在这次试验中用的是最最几本的一个结构,只是为了体验。
HAProxy节点:192.168.1.200
说明:我用了单节点是为了体验功能,应用到运营环境的话单节点这样的事情一定要避免。否则出现单点故障够大家喝一壶的。这里建议可以使用keepalived配置HAProxy的另一节点以作备份。
Web节点01:192.168.1.149
Web节点02:192.168.1.153
说明:我在web节点中yum安装的apache,其他啥都没干。
下载安装HAProxy:
登陆到haproxy机器上
mkdir&-p&/data/softwares/&cd&/data/softwates/&wget&http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.20.tar.gz&tar&xzvf&haproxy-1.4.20.tar.gz&-C&/usr/local/&cd&/usr/local/&mv&haproxy-1.4.20&haproxy&cd&haproxy&make&TARGET=linux26&//2.4内核版本&make&TARGET=linux24,freebsd&makeTARGET=freebsd,solaris系统:make&TARGET=solaris&CPU=ultrasparc&REGEX=static-pcre&make&install&
创建配置文件
mkdir&/etc/haproxy&cp&/usr/local/haproxy/examples/haproxy.cfg&/etc/haproxy/&#模板里面的配置改吧改吧也能用,不过还是自己写进去比较清楚明白vi&/etc/haproxy/haproxy.cfg&echo '' & /etc/haproxy/haproxy.cfg
在配置文件中添加如下内容(http7层代理)
global&&maxconn&30720&&&&&&&&&&&&&&&&&&&#默认最大连接数&&log&127.0.0.1&local3&&&&&&&&&&&&#[err&warning&info&debug]&&chroot&/var/haproxy&&&&&&&&&&&&&#chroot运行的路径&&uid&99&&gid&99&&daemon&&nbproc&1&&&&&&&&&&&&&&&&&&&&&&&&#进程数量(可以设置多个进程提高性能)&&pidfile&/var/run/haproxy.pid&&&&#haproxy的pid存放路径,启动进程的用户必须有权限访问此文件&&ulimit-n&65535&&&&&&&&&&&&&&&&&&#ulimit的数量限制&&defaults&&log&global&&mode&http&&option&httplog&&option&dontlognull&&option&forwardfor&&&&&&&&&&&&&&&#如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http&Header中获得客户端ip&&option&abortonclose&&&&&&&&&&&&&#当服务器负载很高的时候,自动结束掉当前队列处理比较久的连接&&option&redispatch&&#balance&roundrobin&&&&&&&&&&&&&&#默认的负载均衡的方式,轮询方式&&#balance&source&&&&&&&&&&&&&&&&&&#默认的负载均衡的方式,类似nginx的ip_hash&&balance&leastconn&&&&&&&&&&&&&&&#默认的负载均衡的方式,最小连接&&retries&3&&maxconn&30720&&contimeout&5000&&clitimeout&50000&&srvtimeout&50000&&&&listen&test-webservers&0.0.0.0:80&&stats&uri&/check-status&&stats&realm&Haproxy\&statistics&&stats&auth&admin:admin&&option&httpchk&*&&cookie&SERVERID&insert&indirect&nocache&&server&web1&192.168.1.149:80&cookie&web1&check&inter&1500&rise&3&fall&3&weight&1&server&web2&192.168.1.153:80&cookie&web1&check&inter&1500&rise&3&fall&3&weight&2capture&cookie&ASPSESSION&len&32&&srvtimeout&20000&&capture&request&&header&Host&&&&&&&&&&&len&40&&capture&request&&header&Content-Length&len&10&&capture&request&&header&Referer&&&&&&&&len&200&&capture&response&header&Server&&&&&&&&&len&40&&capture&response&header&Content-Length&len&10&&capture&response&header&Cache-Control&&len&8&
在配置文件中添加如下内容(tcp 4层代理)
global&&maxconn&30720&&&&&&&&&&&&&&&&&&&#默认最大连接数&&log&127.0.0.1&local3&&&&&&&&&&&&#[err&warning&info&debug]&&chroot&/var/haproxy&&&&&&&&&&&&&#chroot运行的路径&&uid&99&&gid&99&&daemon&&nbproc&1&&&&&&&&&&&&&&&&&&&&&&&&#进程数量(可以设置多个进程提高性能)&&pidfile&/var/run/haproxy.pid&&&&#haproxy的pid存放路径,启动进程的用户必须有权限访问此文件&&ulimit-n&65535&&&&&&&&&&&&&&&&&&#ulimit的数量限制&&defaults&&log&global&&mode&tcp&&balance&leastconn&&&&&&&&&&&&&&&#默认的负载均衡的方式,最小连接&&retries&3&&maxconn&30720&&contimeout&5000&&clitimeout&50000&&srvtimeout&50000&&&&listen&check&0.0.0.0:10000&&mode&http&option&httplog&stats&uri&/check-status&&stats&realm&Haproxy\&statistics&&stats&auth&admin:admin&&&capture&request&&header&Host&&&&&&&&&&&len&40&&capture&request&&header&Content-Length&len&10&&capture&request&&header&Referer&&&&&&&&len&200&&capture&response&header&Server&&&&&&&&&len&40&&capture&response&header&Content-Length&len&10&&capture&response&header&Cache-Control&&len&8&&#frontend&http-80-in&#bind&*:80&#mode&tcp&&&&&&&&&&&&#http的7层模式&&#log&global&&&&&&&&&&&#应用全局的日志配置&&#acl&jt_s0_80&hdr_dom(host)&-i&s0.&#frontend&http-4949-in&#bind&*:4949&#mode&tcp&&&&&&&&&&&&#log&global&&&&&&&&&&&#acl&jt_s0_4949&hdr_dom(host)&-i&s0.&#frontend&http-3749-in&#bind&*:3749&#mode&tcp&&&&&&&&&&&&&#log&global&&&&&&&&&&&&#acl&jt_s0_3749&hdr_dom(host)&-i&s0.&#&#frontend&http-843-in&#bind&*:843&#mode&tcp&&&&&&&&&&&&#log&global&&&&&&&&&&#acl&jt_s0_843&hdr_dom(host)&-i&s0.&#&#backend&jt_s0_80&#mode&tcp&&&&&&&&&&&&&#balance&roundrobin&&&#server&s0_gs_80&10.127.65.110:80&check&inter&1500&rise&3&fall&3&weight&1&&&#&#backend&jt_s0_4949&#mode&tcp&&&&&&&&&&&&&#balance&roundrobin&&&&#server&s0_gs_.65.110:4949&check&inter&1500&rise&3&fall&3&weight&1&#&#backend&jt_s0_3749&#mode&tcp&&&&&&&&&&&&&#balance&roundrobin&&&&#server&s0_gs_.65.110:3749&check&inter&1500&rise&3&fall&3&weight&1&#&#&#backend&jt_s0_843&#mode&tcp&&&&&&&&&&&&&#balance&roundrobin&&&&#server&s0_gs_843&10.127.65.110:843&check&inter&1500&rise&3&fall&3&weight&1&#&#&&listen&http-80-in&0.0.0.0:80&mode&tcp&acl&jt_s0_80y&hdr_dom(host)&-i&s0.&balance&roundrobin&&&server&jt_s0_80&10.127.65.110:80&check&inter&1500&rise&3&fall&3&weight&1&&&&&&listen&http-4949-in&0.0.0.0:4949&mode&tcp&acl&jt_s0_4949&hdr_dom(host)&-i&s0.&balance&roundrobin&&&server&jt_s0_.65.110:4949&check&inter&1500&rise&3&fall&3&weight&1&&&&&listen&http-3749-in&0.0.0.0:3749&mode&tcp&acl&jt_s0_3749&hdr_dom(host)&-i&s0.&balance&roundrobin&&&server&jt_s0_.65.110:3749&check&inter&1500&rise&3&fall&3&weight&1&&&&&listen&http-843-in&0.0.0.0:843&mode&tcp&acl&jt_s0_843&hdr_dom(host)&-i&s0.&balance&roundrobin&&&server&jt_s0_843&10.127.65.110:843&check&inter&1500&rise&3&fall&3&weight&1&&&
2.3 启动haproxy进程 (更多启动参数可通过/usr/local/haproxy/haproxy -help 命令来查看)
/usr/local/sbin/haproxy -f /etc/haproxy/haproxy.cfg -st `cat /var/run/haproxy.pid`ps&-ef&|&grep&haproxy&
2.4 查看状态监视页面
浏览器访问http://192.168.1.200/check-status,输入用户名haproxy和密码haproxy@200,即可查看状态。
2.5 日志配置 (仅限于CentOS 5,CentOS 6使用的是rsyslog,与syslog的配置区别很大)
vim&/etc/syslog.conf&添加&local3.*&/var/log/haproxy.log&vi&/etc/sysconfig/syslog&把SYSLOGD_OPTIONS=&-m&0&&&改成&SYSLOGD_OPTIONS=&-r&-m&0&&#enables&logging&from&remote&machines&重启syslogd:&/etc/init.d/syslog&restart&tail&-f&-n&30&/var/log/haproxy.log&应该可以看到日志输出了。&
Part 3 web节点的配置
什么复杂的东西都不用做,把两个节点的apache装上,开起来,创建index.html文件(两台机器的index文件内容一定要不同)
yum&install&httpd&-y&service&httpd&start&
这样,web节点的配置就完成了。
Prat 4 测试
4.1开启节点01的web服务,访问http://192.168.1.200,查看结果。
4.2 关闭节点01web服务,开启节点02web服务,访问http://192.168.1.200,查看结果。
4.3 调整配置文件中的balance 算法,同时开启两个web节点,在不保留cookie的情况下多次访问,查看结果有什么不同。
附录01:haproxy启动的参数说明
/usr/local/haproxy/haproxy
-help & #haproxy相关命令参数介绍.
haproxy -f
&配置文件&
最大并发连接总数]
每个侦听的最大并发数]
&pid文件&]
&内存限制M&]
[{-sf|-st}
pidlist...]
前台,debug模式
daemon模式启动
安静模式,不输出信息
对配置文件进行语法检查
-p pid文件
-s 显示统计数据
显示详细统计数据
不使用kqueue
不使用speculative
不使用epoll
不使用poll
禁用后台模式,程序跑在前台
&pidlist& 程序启动后向pidlist里的进程发送FINISH信号,这个参数放在命令行的最后
&pidlist& 程序启动后向pidlist里的进程发送TERMINATE信号,这个参数放在命令行的最后
附录02:balance算法
负载均衡可以有多种方式:
--简单的轮询:balance roundrobin;
--根据请求的源IP:balance source;
--根据请求的uri:balance uri;
--根据请求RUL中的参数:balance url_param
不同的需求选择不同的负载均衡方式对于整体性能的提升很有帮助。有兴趣的可以自己深入的研究在什么架构情况下选择怎样的负载均衡算法。
这只是一篇基本的安装配置说明,不过通过后续的应用,以后应该会有比较深入的分析。敬请期待。。。(为什么是应该会有呢?看时间啦、、、万一没时间写呢。o_O!!)本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)
15:15:37 15:18:57 15:46:11 15:50:09用户名:JeckFY
文章数:75
评论数:10
访问量:39507
注册日期:
阅读量:1297
阅读量:3317
阅读量:582172
阅读量:466782
51CTO推荐博文
Haproxy的介绍和安装Haproxy介绍软件介绍Haproxy是一个开源的高性能的反向代理或者说是负载均衡服务软件之一,它支持双机热备,虚拟主机,基于TCP和HTTP应用代理等功能。配置简单,而且拥有服务器节点的健康检查功能(相当于keepalived健康检查),当后端服务器宕机时,haproxy会自动将故障服务器摘除,当服务器故障恢复后,再自动加入到集群中。Haproxy特别在适用于那些访问量很大,但又需要会话保持或七层应用的业务。支持两种主要的代理模式:4层Tcp代理(例如邮件服务,mysql业务,ssh等)和7层(HTTP代理)。在4层tcp模式下,haproxy仅在客户端和服务器之间转发双向流量。7层模式下haproxy会分析应用层协议,并且能通过允许,拒绝,交换,增加,修改或者删除请求或者回应里指定内容来控制协议Haproxy采用的是NAT模式,数据包来去都会经过haproxy。4层代理和7层代理介绍Haproxy软件的4层tcp代理应用非常优秀,配置非常简单方便,比lvs和nginx要方便的多,haproxy不需要在RS端执行脚本即可实现应用代理从上图可以看出,haproxy采用的是NAT的工作模式,网站所有流量都经过haproxy,所以适用于那些访问量不是特别大的网站,在一般的中小型公司,建议使用haproxy做负载均衡。&Haproxy最大额优点在于其7层的根据URL请求头应用过滤的功能,在门户网站的高并发生产架构中。Haproxy软件一般用在LVS软件的下一层,或挂在硬件负载均衡althon、NS、F5下使用&Haproxy安装部署下载软件包,并安装cd&/usr/src
wget&http://down1.chinaunix.net/distfiles/haproxy-1.4.21.tar.gz
tar&zxf&haproxy-1.4.21.tar.gz
cd&haproxy-1.4.21
make&TARGET=linux26&ARCH=x86_64&
make&PREFIX=/usr/local/haproxy-1.4.21&install&
ln&-s&/usr/local/haproxy-1.4.21/&/usr/local/haproxy
1.&&&&&&make&TARGET=linux26&&ARCH=x86_64&&&&&&&&&&&&&&&&是64位系统的编译方式
&32位系统的编译方式为:
make&&TARGET=linux26&ARCH=x86
2.&TARGET&后面是系统内核,不同版本的linux系统,内核版本不一样。可以&more&&README&查看详细信息创建相关目录,使软件更结构化默认的文件结构为:[root@localhost haproxy]# tree├── doc│&&└── haproxy│&&&&&& ├── architecture.txt│&&&&&& ├── configuration.txt│&&&&&& ├── haproxy-en.txt│&&&&&& └── haproxy-fr.txt├── sbin│&&└── haproxy└── share&&& └── man&&&&&&& └── man1&&&&&&&&&&& └── haproxy.16 directories, 6 files现在创建 bin conf logsvar/chroot var/run等目录cd /usr/local/haproxy &mkdir -p conf bin logs var/run var/chroot&查看:[root@localhost &haproxy]# tree.├── bin├── conf├── doc│&& └── haproxy│&&&&&& ├── &architecture.txt│&&&&&& ├── &configuration.txt│&&&&&& ├── haproxy-en.txt│&&&&&& └── haproxy-fr.txt├── logs├── sbin│&& └── haproxy├── share│&& └── man│&&&&&& └── man1│&&&&&&&&&& └── haproxy.1└── var&&& ├── chroot&&& └── run&12 directories, 6 files至此,haproxy已经安装完成。配置需要我们手动创建,下面先简单进行配置,并测试Haproxy主配置文件cat &/usr/local/haproxy/conf/haproxy.conf &&&EOF&#####################全局配置信息########################global&&&& chroot &/usr/local/haproxy/var/chroot&&&& #chroot运行的路径&&&&&&&& &daemon&&&&&&&&&&&&&&&& #以后台进程形式运行haproxy&&&&&&&& &group haproxy&&&&&&&&&&&& #运行haproxy的用户组身份为haproxy&&&&&&&& &user haproxy&&&&&&&& &log 127.0.0.1 &local0 info&&&&& #日志记录&&&&&&&& &pidfile &/usr/local/haproxy/var/run/haproxy.pid&&&&&&&&&& #pid文件位置&&&&&&&& &maxconn 25600&&&&&&&&&&&&& #最大连接数量&&&&&&&&&&&&&&&&&& &nbproc 8&&&&&&&&&&&&& #开启的进程数量#####################默认的全局设置######################defaults&&& log global&&&&&&&&&&&& #默认应用全局日志格式&&&&&&&& option &httplog&&&&&&& #日志类别http日志格式&&&&&&&& option &dontlognull&& &#不记录健康检查的日志信息&&&&&&&& option &httpclose&&&&&&& &&#每次请求完毕后主动关闭http通道 &&&&&&&& retries &3&&&&&&&& #默认健康检查失败后尝试次数&&&&&&&& option &redispatch&&&&&& &#serverId对应的服务器挂掉后,强制定向到其他健康的服务器&&&&&&&& option &forwardfor &&#向后面的RS传递客户端主机头&&&&&&&& contimeout &5000&&&&&& #连接超时时间&&&&&&&& clitimeout &50000&&&&&& #客户端超时时间 &&单位毫秒&&&&&&&& srvtimeout &50000&&&&&&&&& #服务器超时时间单位毫秒####################监控页面的设置#######################listen admin_status&& &bind *:8080&&&&&&&&&& #监控页面采用8080端口&&&&&&&& mode &http&&&&&&&&&&&&& stats &enable&&&&&&& #起开网页监控页面&&&&&&&& stats &uri /admin?status&&&&&&& #监控页面的url&&&&&&&& stats &auth admin:fuzj123&&&&&&& #监控页面的登录用户的账户名和密码,可以有多个&&&&&&&& stats &refresh 5&&&&&&&&&&&&&&& #监控页面的刷新时间&&&&&&&& stats &hide-version&&&&&&&&&& #隐藏监控页面的版本号####################集群设置#######################listen webserver&&&& bind &172.16.254.37:80&&&&&&&& #客户端访问的外网IP,若和heartbeat结合使用的话即VIP&&&& mode http &&&&&&&&&#模式为httpbalance roundrobin &&&#调度算法为轮训server web1 192.168.254.10:80 &checkserver web2 192.168.254.20:80 &checkEOF这为haproxy简单的配置文件,可以实现对两个web 的负载均衡调度此外需要增加haproxy用户useradd -M -s /sbin/nologin haproxyHaproxy启动文件#!/bin/bash
#chkconfig:&35&35&-
.&/etc/init.d/functions
BASE="/usr/local/haproxy"
PROG=$BASE/sbin/haproxy
PIDFILE=$BASE/var/run/haproxy.pid
CONFFILE=$BASE/conf/haproxy.conf
case&"$1"&in
&&&&&&&&&#$PROG&&-f&$CONFFILE&&/dev/null&2&&1
&&&&&&&&&$PROG&&-f&$CONFFILE
&&&&&&&[&$?&&-eq&0&]&&&&{
&&&&&&&&action&&"haproxy&start&is&&OK..."&&/bin/true
&}&||&action&&"haproxy&start&is&error..."&/bin/false
&&&&&&&&&;;
&&&&&&&&&if&[&!&&-f&$PIDFILE&];&then
&&&&&&&&&&&&&&&&&&&echo&&"pid&not&found"
&&&&&&&&&&&&&&&&&&&exit&&1
&&&&&&&&&fi
&&&&&&&&&for&&pid&in&$(cat&$PIDFILE);&do
&&&&&&&&&&&&&&&&&&&kill&&-0&$pid
&&&&&&&&&&&&&&&&&&&RETVAL="$?"
&&&&&&&&&&&&&&&&&&&if&&[&!&"$RETVAL"&=&"0"&];&then
&&&&&&&&&&&&&&&&&&&&&&&&&&&&echo&&"process&$pid&died"
&&&&&&&&&&&&&&&&&&&&&&&&&&&&exit&&1
&&&&&&&&&&&&&&&&&&&fi
&&&&&&&&&done
&&&&&&&&&echo&&"process&is&running"
&&&&&&&&&;;
&&&&&&&&&$PROG&&-f&$CONFFILE&-sf&$(cat&$PIDFILE)&&/dev/null&2&&1
&&&&&&&&&;;
&&&&&&&&&kill&&$(cat&$PIDFILE)
[&$?&-eq&0&]&&&&{
&&&&&&&&action&&"haproxy&stop&is&&OK..."&&/bin/true
&}&||&action&&"haproxy&stop&is&error..."&/bin/false
&&&&&&&&&;;
&&&&&&&&&echo&&"USAGE:&$0&start|restart|status|stop"
&&&&&&&&&exit&1
&&&&&&&&&;;
esac&把启动文件放在bin目录下,并赋予执行权限,添加开机自启动chmod&755&haproxy&
echo&"/usr/local/haproxy/bin/haproxy&&start"&&&&/etc/rc.local&
tail&-1&/etc/rc.local&
查看结果:&/usr/local/haproxy/bin/haproxy&start启动haproxy,并测试/usr/local/haproxy/bin/haproxy start启动结果:[root@localhost &bin]# /usr/local/haproxy/bin/haproxy &start[WARNING] &269/91) : Proxy 'admin_status': in multi-process mode, stats will &be limited to process assigned to the current request.haproxy &start is& OK...&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& [确定][root@localhost bin]# netstat -anput | grep haproxytcp&&&&&&& &0&&&&& 0 192.168.1.104:80&&&&&&&&&&& 0.0.0.0:*&&&&&&&&&&&&&&&&&& LISTEN&&&&& 1792/haproxy&&&&&&&tcp&&&&&&& &0&&&&& 0 0.0.0.0:8080&&&&& &&&&&&&&&&0.0.0.0:*&&&&&&&&&&&&&&&&&& LISTEN&&&&& 1792/haproxy&&&&&&&udp&&&&&&& &0&&&&& 0 0.0.0.0:38073&&&&&&&&&&&&&& 0.0.0.0:*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 1792/haproxy&&&&&&&[root@localhost &bin]# ps -aux | grep &haproxyWarning: &bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQhaproxy&& 1792& &0.0& 0.6& 18312& &3348 ?&&&&&&& Ss&& 16:57&& &0:00 /usr/local/haproxy/sbin/haproxy -f &/usr/local/haproxy/conf/haproxy.confhaproxy&& 1793& &0.0& 0.6& 18312& &3348 ?&&&&&&& Ss&& 16:57&& &0:00 /usr/local/haproxy/sbin/haproxy -f &/usr/local/haproxy/conf/haproxy.confhaproxy&& 1794& &0.0& 0.6& 18312& &3348 ?&&&&&&& Ss&& 16:57&& &0:00 /usr/local/haproxy/sbin/haproxy -f &/usr/local/haproxy/conf/haproxy.confhaproxy&& 1795& &0.0& 0.6& 18312& &3348 ?&&&&&&& Ss&& 16:57&& &0:00 /usr/local/haproxy/sbin/haproxy -f &/usr/local/haproxy/conf/haproxy.confhaproxy&& 1796& &0.0& 0.6& 18312& &3348 ?&&&&&&& Ss&& 16:57&& &0:00 /usr/local/haproxy/sbin/haproxy -f &/usr/local/haproxy/conf/haproxy.confhaproxy&& 1797& &0.0& 0.6& 18312& &3348 ?&&&&&&& Ss&& 16:57&& &0:00 /usr/local/haproxy/sbin/haproxy -f &/usr/local/haproxy/conf/haproxy.confhaproxy&& 1798& &0.0& 0.6& 18312& &3348 ?&&&&&&& Ss&& 16:57&& &0:00 /usr/local/haproxy/sbin/haproxy -f &/usr/local/haproxy/conf/haproxy.confhaproxy&& 1799& &0.0& 0.6& 18312& &3348 ?&&&&&&& Ss&& 16:57&& &0:00 /usr/local/haproxy/sbin/haproxy -f &/usr/local/haproxy/conf/haproxy.confroot&&&&& 1804& &0.0& 0.1 103244&& 868 pts/0&&& S+&& &16:59&& 0:00 grep haproxyhaproxy已经成功启动。查看发现,80端口和8080端口已经监听,而且有8个进程在系统后台。下面开始测试[root@localhost &bin]# for ((i=1;i&7;i++)) do curl 192.168.1.104 ;sleep 1 ; done &&h1&this is Apache &Server&/h1&&h1&this is Nginx &Server&/h1&&h1&this is Apache &Server&/h1&&h1&this is Nginx &Server&/h1&&h1&this is Apache &Server&/h1&&h1&this is Nginx Server&/h1&&&通过curl命令返回的结果可以看出,haproxy会把客户端的访问请求依次分发到后端RS上,即轮训算法&下一步,可以通过浏览器登录haproxy的健康检查状态页面,查看RS的健康状况输入账户名密码之后,即可进入状态页面下面进行对haproxy健康检查的测试,通过监控页面的RS状态显示颜色即可看这就是简单的haproxy HTTP代理。4层代理的话需要把mode模式改为tcpHaproxy记录日志配置Haproxy默认是不记录日志的,需要开启系统syslog功能。以便记录haproxy的相关日志。CentOS-5版本中用syslog服务来记录系统日志,到CentOS-6版本中升级成rsyslog服务。sed -i "s/\#\$ModLoad\ imudp/\$ModLoad\ &imudp/g" /etc/rsyslog.confsed -i "s/\#\$UDPServerRun\ 514/\$UDPServerRun\ &514/g" /etc/rsyslog.conf& cat &&/etc/rsyslog.conf &&EOF# Haproxylocal0.* /usr/local/haproxy/logs/haproxy.log#end /etc/syslog.confEOFservice rsyslog restart&[root@localhost &conf]# egrep &"$ModLoad imudp|$UDPServerRun 514" /etc/rsyslog.conf | head -2 &&& tail -3 /etc/rsyslog.conf$ModLoad &imudp$UDPServerRun &514# &Haproxylocal0.* &/usr/local/haproxy/logs/haproxy.log#end &/etc/syslog.conf说明:编辑rsyslog配置文件vim /etc/rsyslog.conf#把下面这两个前面”#”注释去掉$ModLoad &imudp$UDPServerRun &514#在行尾添加# &Haproxylocal0.* &/usr/local/haproxy/logs/haproxy.log#end &/etc/syslog.conf最后重启rsyslog服务注意:local0.*这要和haproxy配置文件中的日志格式要对应log 127.0.0.1& &local0 &info&此外,selinux会限制rsyslog,当配置好之后,若重启rsyslog发现没有生成日志文件,则查看selinux是否开启状态[root@localhost haproxy]# getenforce &&&&&&&&&&查看selinux状态Enforcing& [root@localhost haproxy]# setenforce 0&& 临时关闭selinux永久关闭:sed -i &"s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config重启生效&生产环境下,haproxy开启记录日志的级别最好设置为warning或者error以上,此时我们设置为info,haproxy会记录客户端的访问信息,大量往磁盘中写日志信息,造成负载过大。主备haproxy配置文件的区别生产环境下,往往需要做haproxy的高可用,需要做主备haproxy。当主haproxy宕机之后,由备haproxy接替主haproxy继续工作。其原理是:主备都同时监听VIP,而VIP由高可用软件提供(heartbeat或keepalived等),但是正常情况下VIP在主haproxy上,由主haproxy响应客户端请求。当主haproxy宕机之后,VIP漂移到备haproxy设备上,此时,备haproxy会继续响应客户端的请求。由此可以看出:主备haproxy的配置文件必须保持一致主备haproxy切换过程其实就是VIP的漂移过程,VIP漂移到哪个设备上,那个设备就开始响应请求解决不存在VIP导致Haproxy启动报错在haproxy启动过程中,有时候会遇到下面这个错误[root@localhost &haproxy]# bin/haproxy start^[[6~[WARNING] &269/188) : Proxy 'admin_status': in multi-process mode, stats will &be limited to process assigned to the current request.[ALERT] 269/188) : Starting proxy &webserver: cannot bind sockethaproxy &start is error...& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&[失败]&解决方法:查看服务器本身已经存在的端口是否和配置文件中监听的端口冲突,常见的是80端口冲突,当服务器本身已经在运行http或者其他web服务时候,已经占用了80端口,haproxy启动的时候无法监听80端口,就会报这个错误,所以需要把占用80端口的服务kill掉,或者直接卸载。当不存在端口问题时候,需要修改内核参数。使haproxy启动的时候忽略vip是否存在echo "net.ipv4.ip_nonlocal_bind = 1" &&& /etc/sysctl.confsysctl -p所以这种方法有效解决了在主备haproxy环境下,VIP不在备haproxy上时,备haproxy能正常启动的问题由于haproxy工作模式是NAT模式,为了更好的实现转发请求,需要开启linux本身的转发功能sed -i "s/net.ipv4.ip_forward = &0/net.ipv4.ip_forward = 1/g" /etc/sysctl.confsysctl -pHaproxy多实例配置Haproxy支持多实例,每个实例可以有自己的单独配置文件。启动的时候用-f指定配置文件即可。下面增加一个实例,用来代理ssh服务cat & /usr/local/haproxy/conf/haproxy-ssh.conf &&&EOFglobal&&&& chroot &/usr/local/haproxy/var/chroot&&&&&&&& &daemon&&&&&&&& group &haproxy&&&&&&&& user &haproxy&&&&&&&& log &127.0.0.1& local0 info&&&&&&&& &pidfile /usr/local/haproxy/var/run/haproxy-ssh.pid&&&&&&&& &maxconn 25600&&& &&&&&nbproc 1defaults&&& log globalcontimeout 5000clitimeout 50000srvtimeout 50000listen ssh&bind &192.168.1.104:999&mode tcpserver ssh 192.168.1.104:22 checkEOFF&&启动,并查看[root@localhost haproxy]# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy-ssh.conf[root@localhost haproxy]# netstat -anput | grep &999&&&&&&&&&&&& tcp&&&&&&& &0&&&&& 0 192.168.1.104:999&&&&&&&&&& 0.0.0.0:*&&&&&&&&&&&&&&&&&& LISTEN&&&&& 26234/sbin/haproxyFAQHaproxy命令参数[root@localhostsbin]# ./haproxy -hHA-Proxyversion 1.4.21 Copyright Willy Tarreau &w@1wt.eu&&Usage: haproxy [-f &cfgfile&]* [ -vdVD ] [ -n &maxconn& ] [ -N&maxpconn& ]&&&&&&& [ -p &pidfile& ] [ -m &maxmegs& ]&&&&&&& - -vv shows knownbuild options.&&&&&&& - -db onlydisables background mode.&&&&&&& -V enters verbose mode (disables quietmode)&&&&&&& -D goes daemon&&&&&&& -q quiet mode : don't display messages&&&&&&& -c check mode : only check config filesand exit&&&&&&& -n sets the maximum total # ofconnections (2000)&&&&&&& -m limits the usable amount of memory(in MB)&&&&&&& -N sets the default, per-proxy maximum# of connections (2000)&&&&&&& -p writes pids of all children to thisfile&&&&&&& -de disables epoll() usage even whenavailable&&&&&&& -ds disables speculative epoll() usageeven when available&&&&&&& -dp disables poll() usage even whenavailable&&&&&&& -sf/-st [pid ]* finishes/terminates oldpids. Must be last arguments.译文:haproxy& -f&&配置文件&& [-n 最大并发连接总数] [-N 每个侦听的最大并发数] [-d] [-D] [-q] [-V] [-c][-p] [-s] [-l] [-dk] [-ds] [-de] [-dp] [-db] [-m &内存限制M&] [{-sf|-st} pidlist...]&&&&&&& -d&&&&前台,debug模式&&&&&&& -D&&&&daemon模式启动&&&&&&& -q&&&&安静模式,不输出信息&&&&&&& -V&&&&详细模式&&&&&&& -c&&&&对配置文件进行语法检查&&&&&&& -s&&&&显示统计数据&&&&&&& -l&&&&显示详细统计数据&&&&&&& -dk&&&不使用kqueue&&&&&&& -ds&&&不使用speculative epoll&&&&&&& -de&&&不使用epoll&&&&&&& -dp&&&不使用poll&&&&&&& -db&&&禁用后台模式,程序跑在前台&&&&&&& -sf&&&程序启动后向pidlist里的进程发送FINISH信号,这个参数放在命令行的最后&&&&&&& -st&&&程序启动后向pidlist里的进程发送TERMINATE信号,这个参数放在命令行的最后&本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)

我要回帖

更多关于 haproxy tcp长连接 的文章

 

随机推荐