设为首页 收藏本站
查看: 979|回复: 0

[经验分享] 烂泥:高负载均衡学习haproxy之TCP应用

[复制链接]

尚未签到

发表于 2019-1-2 08:35:23 | 显示全部楼层 |阅读模式
  本文由ilanniweb提供友情赞助,首发于烂泥行天下
  在前几篇文章中,我们介绍了haproxy的配置参数,而且配置例子都是http协议(7层应用)的。
  这篇文章,开始介绍haproxy的4层TCP应用。
  一、业务要求

  现在我们有两个要求,这两个要求的协议都是通过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)。




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-658488-1-1.html 上篇帖子: 使用Haproxy实现动静分离和负载均衡 下篇帖子: CentOS7上部署Haproxy+Nginx实现Web群集
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表