烂泥:高负载均衡学习haproxy之TCP应用
本文由ilanniweb提供友情赞助,首发于烂泥行天下
在前几篇文章中,我们介绍了haproxy的配置参数,而且配置例子都是http协议(7层应用)的。
这篇文章,开始介绍haproxy的4层TCP应用。
想要获得更多的文章,可以关注我微信ilanniweb。

一、业务要求
现在我们有两个要求,这两个要求的协议都是通过tcp协议的。
1.1 haproxy代理ssh
为了安全起见,要求所有业务服务器都关闭公网的连接,只开放haproxy所在的服务器,并且其他业务服务器的ssh连接通过haproxy来实现。
实际业务,访问192.168.5.171的8098端口就是访问192.168.5.174的ssh端口。
1.2 haproxy代理mysql
为了安全起见,要求mysql数据库的连接只能通过内网IP,但是因为使用的是云数据库,所以如果公司内部要连接数据库的话要通过haproxy来实现。
实际业务,访问192.168.5.171的8099端口就是访问192.168.7.7的3306端口。
二、配置haproxy
因为是haproxy的7层和4层混合使用,所以在defaults中,我们不定义haproxy的运行模式。
注意:有关http模式的相关配置参数不要出现在default中。
有关业务要求的TCP 4层应用,我们的haproxy配置如下:
listen 8099
bind 0.0.0.0:8099
mode tcp
server 174_22 192.168.5.174:22 maxconn 1024 weight 5 check inter 2000 rise 2 fall 3
listen 8098
bind 0.0.0.0:8098
mode tcp
server 77_3306 192.168.7.7:3306 maxconn 1024 weight 5 check inter 2000 rise 2 fall 3

整个haproxy的配置文件如下:
grep -vE "^#|^$" haproxy.cfg
global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
maxconn 4096
uid 1005
gid 1005
daemon
defaults
log global
retries 3
option redispatch
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000
listen admin_stats
bind 192.168.5.171:1080
mode http
option httplog
maxconn 10
stats refresh 30s
stats uri /stats
stats auth admin:admin
stats hide-version
frontend weblb
bind *:80
acl is_dg hdr_beg(host) dg.test.com
mode http
acl is_ilanni hdr_beg(host) ilanni.test.com
acl is_171 hdr_beg(host) 192.168.5.171
acl is_ip src 192.168.5.140
acl is_port dst_port 8090
use_backend acl if is_171 is_ip
use_backend mui_acl if is_171 is_ip is_port
use_backend dgserver if is_dg
use_backend ilanni if is_ilanni
use_backend 171server if is_171
default_backend backend_default
backend dgserver
balance source
mode http
server web1 192.168.5.171:8080 maxconn 1024 weight 3 check inter 2000 rise 2 fall 3
server web2 192.168.5.174:8080 maxconn 1024 weight 3 check inter 2000 rise 2 fall 3
server web3 192.168.5.178:8080 maxconn 1024 weight 3 check inter 2000 rise 2 fall 3
backend 171server
balance roundrobin
mode http
server dg1 192.168.5.174:80 check
server dg2 192.168.5.178:80 check
backend ilanni
server web1 www.yuanbaopu.com:80 weight 3 check inter 2000 rise 2 fall 3
mode http
backend acl
balance source
mode http
server web1 www.ilanni.com:80 maxconn 1024 weight 3 check inter 2000 rise 2 fall 3
backend mui_acl
balance source
mode http
server web1 192.168.5.178:80 maxconn 1024 weight 3 check inter 2000 rise 2 fall 3
backend backend_default
server web1 192.168.5.178:8080 weight 3 check inter 2000 rise 2 fall 3
mode http
listen 8090
bind 0.0.0.0:8090
mode http
balance roundrobin
server web1 192.168.5.174:8090 maxconn 1024 weight 5 check inter 2000 rise 2 fall 3
server web2 192.168.5.178:8090 maxconn 1024 weight 3 check inter 2000 rise 2 fall 3
listen 8099
bind 0.0.0.0:8099
mode tcp
server 174_22 192.168.5.174:22 maxconn 1024 weight 5 check inter 2000 rise 2 fall 3
listen 8098
bind 0.0.0.0:8098
mode tcp
server 77_3306 192.168.7.7:3306 maxconn 1024 weight 5 check inter 2000 rise 2 fall 3
三、验证要求
haproxy配置完毕后,我们来验证haproxy的配置是否正确,如下:
3.1 验证haproxy代理ssh
现在我们来验证haproxy代理ssh,在Linux客户端上使用如下命令:
ssh -p8099 wangxy@192.168.5.171

通过上图,我们可以很明显的看出haproxy成功的代理了192.168.5.174的ssh端口。
3.2 验证haproxy代理mysql
现在我们来验证haproxy代理mysql,在Linux客户端上使用如下命令:
mysql -P8098 -h192.168.5.171 -uroot –p

通过上图,我们可以很明显的看出haproxy成功的代理了192.168.7.7的3306端口(也即是mysql)。
烂泥:高负载均衡学习haproxy之TCP应用的更多相关文章
- 烂泥:高负载均衡学习haproxy之安装与配置
本文由秀依林枫提供友情赞助,首发于烂泥行天下 有关高负载均衡的软件,目前使用比较多的是haproxy.nginx和lvs.下面我们就开始学习haprxoy这款软件. 一.haproxy介绍 以下开始介 ...
- 烂泥:高负载均衡学习haproxy之关键词介绍
本文由ilanniweb提供友情赞助,首发于烂泥行天下 上一篇文章我们简单讲解了有关haproxy的安装与搭建,在这篇文章我们把haproxy配置文件中使用到的关键词一一介绍下. 关注我微信ilann ...
- 高负载均衡学习haproxy之安装与配置
https://www.cnblogs.com/ilanni/p/4750081.html
- 千万级高并发负载均衡软件HAproxy
1负载均衡产品介绍 基于硬件的负载均衡设备例如F5,Big-IP,基于软件的负载均衡产品HAproxy,LVS,nginx在这些软件产品中,又分为基于操作系统的软负载实现和基于第三方应用的软负载实现. ...
- http层负载均衡之haproxy
http层负载均衡之haproxy实践篇(一) 方案 上篇文章讲到了负载均衡的相关理论知识,这篇文章我打算讲讲实践方法以及实践中遇到的问题 方案:haproxy http层负载均衡 安装一个hapro ...
- Web负载均衡学习笔记之四层和七层负载均衡的区别
0x00 简介 简单理解四层和七层负载均衡: ① 所谓四层就是基于IP+端口的负载均衡:七层就是基于URL等应用层信息的负载均衡:同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡. ...
- 【官方文档】Nginx负载均衡学习笔记(二)负载均衡基本概念介绍
简介 负载均衡(Server Load Balancer)是将访问流量根据转发策略分发到后端多台 ECS 的流量分发控制服务.负载均衡可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应 ...
- Nodejs负载均衡:haproxy,slb以及node-slb - i5ting的个人空间 - 开源中国社区
Nodejs负载均衡:haproxy,slb以及node-slb - i5ting的个人空间 - 开源中国社区 undefined
- 千万级高并发负载均衡软件haproxy配置文件详解
balance roundrobin #轮询方式 balance source #将用户IP经过hash计算后,使同一IP地址的所有请求都发送到同一固定的后 ...
随机推荐
- PostgreSQL类型转换
1.int装string select CAST (1234 AS text) select to_char(1234,’999‘) 2.string转int select cast('999' as ...
- virtualenvwrapper安装使用
安装 linux和mac下安装 pip install virutalenv virtualenvwrapper windows下安装 pip install virtualenvwrapper-wi ...
- 烦人的win10的输入法
这段时间在使用win10,被win10的输入法折腾的要死要死的... 通过度娘把它设置得跟win7使用习惯差不多了, (见:http://jingyan.baidu.com/article/b2c18 ...
- js控制页面显示和表单提交
早期的web页面在显示方面一般在后台进行控制,虽然对后台开发来讲是比较容易做到的,但是涉及到一个问题,那就是数据库压力. 因为要控制显示,所以会比较频繁的从数据库中来回调用. 现在的js功能越来越强, ...
- Monkey测试4——Monkey命令行可用的全部选项
Monkey命令行可用的全部选项 常规 --help 列出简单的用法. -v 命令行的每一个-v将增加反馈信息的级别. Level 0(缺省值)除启动提示.测试完成和最终结果之外,提供较少信息. Le ...
- jenkins 邮件配置
jenkins 自带一个邮件的通知的功能,但是自带的邮件通知功能,有点简单不能自定义信息,所以我们安装邮件插件Email-ext plugin.1.首先在系统管理-插件管理-安装Email-ext p ...
- 前端mvc框架backbone.js入门
关于backbone.js的优缺点,这里就不详谈了,网上关于这方面的讨论很多了,而且各种框架之所以长久生存,通常都是有其特定优势和擅长点的. 使用backbone.js作为前端框架的应用通常都是htm ...
- JAVA JDK的动态代理反射实现
动态代理类使用到了一个接口InvocationHandler和一个代理类Proxy ,这两个类配合使用实现了动态代理的功能. 什么是动态代理呢? 普通代理类是指: 给每个具体类写一个代理类,以后要使 ...
- angular学习的一些小笔记(中)之ng-disabled轻松实现按钮是否可点击状态
哇,这个可以轻松实现输入值就按钮可点击,输入框没有值则不可点击的状态呀 看代码 <!doctype html> <html ng-app=""> <h ...
- bootstrap源码分析之form、navbar
一.表单(Form) 源码文件:_form.scssmixins/_form.scss 1.按层次结构分:form-group -> form-control/input-group/form- ...