• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

基于TCP的Haproxy署理_mysql

mysql 搞代码 7年前 (2018-06-09) 183次浏览 已收录 0个评论

基于tcp的Haproxy代理

     HaProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。应用到Haproxy主要是因为他免费,并且基于TCP和HTTP的应用代理。

  先介绍一下Haproxy的应用场景,一个是TCP代理,这边也是我项目中应用的,另一个是HTTP代理,我就简单介绍一下。基于Tcp协议的Haproxy代理应用场景:在VPC网络环境下,虚机A的数据库不能被外界网络访问到,只能被在同一内网环境下的虚机B访问,这时候可以通过在虚机B上搭建Haproxy环境,通过Haproxy代理实现外部虚机C对虚机A数据库的访问;这里我项目中实际运用到的场景是这样的,在公有云上创建RDS实例,会有VPC网络和Classic网络,在选择VPC网络创建RDS后,在进行数据同步时,会对该RDS数据库进行数据同步,这时候由于RDS的数据库在VPC网络环境下,外网是不能直接访问这个RDS数据库。这时候我们采用的是用一个ECS云服务器上搭建一个Haproxy代理,公网通过haproxy代理访问这个RDS数据库,这样就解决了VPC网络的访问问题;

  基于HTTP协议的Haproxy代理应用场景:用户访问网站域名时,通过我们设置的Haproxy代理,HTTP请求到后端配置的web服务器上,获得后方服务器返回的内容后重新封装,响应给客户端;就不啰嗦了,直接来干货,应用haproxy代理访问后端mysql数据库(这里不一定是mysql数据库)。

(一)Haproxy下载、安装:网上的资源都要积分,所以直接在yum上找免费资源。

yum install -y haproxy rpm -qi haproxy rpm -ql haproxy

(二)配置haproxy.cfg文件(重点)

cd /etc/haproxy vim haproxy.cfg

#配置的haproxy.cfg文件 global     log         127.0.0.1 local2     chroot      /var/lib/haproxy     pidfile     /var/run/haproxy.pid     maxconn     4000     user        haproxy     group       haproxy     daemon     # turn on stats unix socket     stats socket /var/lib/haproxy/stats  #--------------------------------------------------------------------- # common defaults that all the 'listen' and 'backend' sections will # use if not designated in their block #--------------------------------------------------------------------- defaults         log     global         log 127.0.0.1 local3         mode    http         option httplog         option  dontlognull         retries 10         option redispatch         maxconn         2000         timeout http-request    10s                           timeout queue           1m                            timeout connect         10s                           timeout client          1m                            timeout server          1m                            timeout http-keep-alive 10s                           timeout check           10s                    #后端mysql配置,访问虚机地址+端口号可以访问后端的mysql,例如:192.168.108.133:7306可以访问140的mysql数据库 listen  mysql         bind 0.0.0.0:7306         mode tcp         balance roundrobin         server mysql1 192.168.108.140:3306  #haproxy监听端口(可去掉),访问虚机地址+端口号+/stats可以看到,例如:192.168.108.133:1080/stats listen stats         bind 0.0.0.0:1080         mode http         option httplog         maxconn 10         stats refresh 30s         stats uri /stats         stats realm XingCloud/ Haproxy         stats auth admin:admin #用这个账号登录,可以自己设置         stats auth Frank:Frank         stats hide-version         stats admin if TRUE

(三)创建日志文件/var/log/haproxy/haproxy.log

cd /var/log mkdir haproxy cd haproxy touch haproxy.log chmod a+w haproxy.log

(四)开启rsyslog的haproxy的日志记录功能

vim /etc/rsyslog.cnf --修改rsyslog.cfg文件     $ModLoad imudp       $UDPServerRun 514      将这两行前的#去掉。     在local7.*                                                /var/log/boot.log之后添加如下内容     # Save haproxy log       local2.*                       /var/log/haproxy/haproxy.log vim /etc/sysconfig/rsyslog --修改rsylog文件 SYSLOGD_OPTIONS=""  改为  SYSLOGD_OPTIONS="-r -m 2 -c 2" 

(五)重启日志和haproxy服务

systemctl restart rsyslog systemctl restart haproxy

(六)haproxy相关命令

killall haproxy --停止haproxy ps -ef |grep haproxy |grep -v grep --查看haproxy的运行状态(这里直接可以通过配置的监听页面也可以看到192.168.108.133:1080/stats) netstat -plantu | grep 7306 --查看端口7306

(七)测试

 1.输入网址http://192.168.108.133:1080/stats可以查看Haproxy的监考页面,出现这个页面也说明你haproxy配置成功了。

基于TCP的Haproxy署理_mysql

2.haproxy代理访问后端的mysql数据库,这里我用的工具是Navicat。这里7306连接的就是192.168.108.140:3306数据库,这里用的用户名和密码是140数据库的用户名和密码。有疑问的同学可以在140上新建个数据库,通过7306这个端口访问数据库也可以看见刚新建的数据库。

基于TCP的Haproxy署理_mysql

  结束语:Haproxy功能还是挺强大的,基于Haproxy代理的web应用,还有一个强大的负载均衡这边都没有用到,因为项目比较紧急也没时间去深入了解,下次有机会自己搭几个web服务器去测试使用。这里一直遇到一个很棘手的问题,就是测试连接后端mysql数据库的时候,一直报Host is blocked because of many connection errors; unblock with ‘mysqladmin flush-hosts’,最后解决的是查看140服务器上的3306端口一直有个连接占用着,并且没有连接成功,最后只能重启140的mysql数据库就好使了。这个问题现在没有办法复现,所以这里就不分析具体的错误原因了。这里主要就是Haproxy简单的应用,如果有不对或者疑问大家都可以积极指出。

  

欢迎大家阅读《基于TCP的Haproxy署理_mysql》,跪求各位点评,by 搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:基于TCP的Haproxy署理_mysql

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址