首页 > 其他分享 >HAProxy实现mycat集群的负载均衡

HAProxy实现mycat集群的负载均衡

时间:2023-04-02 17:24:17浏览次数:51  
标签:HAProxy haproxy 负载 http option mycat timeout

上文我们已经实现了mycat集群(https://www.cnblogs.com/zwh0910/p/17278863.html),现在我们来实现mycat集群的负载均衡

在前面架构中,虽然对mycat做了集群,保障了mycat的可靠性,但是,应用程序需要连接到多个mycat,显然不是很友好的,也就是说缺少负载均衡的组件,接下来我们来了解下HAProxy。

一、HAProxy简介

HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。

HAProxv特别适用于那些负载特大的web5站点,这些站点通常又需要会话保持或七层外理。HAProxy云行在当前的硬件上,完全可以支持数以万计的并发连接。并目它的运行模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的web服务器不被暴露到网络上。

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

包括 GitHub,Bitbucket、Stack Overfilow、Reddit,Tumblr、Twitter和 Tuenti在内的知名网站,及亚马逊网服务系统都使用了HAProxy。

官网: http://www.haproxy.org/

 关于并发性能,haproxy可以做到千万级的并发。(当然了,运行环境不同,测试结果也不相同的)

架构

二、部署安装HAProxy

我们依然是通过 docker进行安装。

拉取镜像

docker pull haproxy:2.5.13

创建目录,用于存放配置文件

mkdir /root/haproxy

编写配置文件:

cd haproxy/
vim haproxy.cfg

内容如下:

global
    log     127.0.0.1 local2
    maxconn   4000
    daemon
defaults
    mode          http
    log           global
    option         httplog
    option         dontlognull
    option http-server-close
    option forwardfor    except 127.0.0.0/8
    option         redispatch
    retries         3
    timeout http-request  10s
    timeout queue      1m
    timeout connect     10s
    timeout client     1m
    timeout server     1m
    timeout http-keep-alive 10s
    timeout check      10s
    maxconn         3000
listen  admin_stats
    bind  0.0.0.0:4001
    mode http
    stats uri    /dbs
    stats realm Global\ statistics
    stats auth  admin:admin123
listen  proxy-mysql
    bind  0.0.0.0:4002
    mode tcp
    balance roundrobin
    option  tcplog
    server  mycat1 localhost:8066 check port 8066 maxconn 2000
    server  mycat2 localhost:8067 check port 8067 maxconn 2000

global为全局配置,defaults为默认配置,listen为监听,admin_stats为管理界面,端口为4001,登录认证的账号为admin,密码为admin123,uri为浏览器访问的路径IP:prot/uri。proxy-mysql为mysql代理,端口为4002,采用的负载均衡策略balance为roundrobin。

云服务器要放开4001和4002端口

保存退出

创建容器

docker create --name haproxy --net host -v /root/haproxy:/usr/local/etc/haproxy haproxy:2.5.13

启动容器:

docker restart haproxy && docker logs -f haproxy

结果如下:

[root@hecs-140905 haproxy]# docker restart haproxy && docker logs -f haproxy
haproxy
[NOTICE]   (1) : haproxy version is 2.5.13-6f0edfa
[NOTICE]   (1) : path to executable is /usr/local/sbin/haproxy
[WARNING]  (1) : config : 'option forwardfor' ignored for proxy 'proxy-mysql' as it requires HTTP mode.
[NOTICE]   (1) : New worker (8) forked
[NOTICE]   (1) : Loading success.

浏览器访问:http://114.115.246.152:4001/dbs,显示如下:

输入haproxy.cfg文件中配置的用户名admin,密码admin123,点击登录后进入如下页面:

测试通过haproxy代理连接到两个mycat

注意:用户名和密码使用mycat的用户和密码

打开TB_AD表,

此时已经实现了通过haproxy代理对接两个mycat,并且两个mycat又分别对接到两个mysql集群。亲测有效

 

标签:HAProxy,haproxy,负载,http,option,mycat,timeout
From: https://www.cnblogs.com/zwh0910/p/17278957.html

相关文章

  • Jmeter-负载测试场景设计
    负载测试场景设计负载测试逐步增加并发用户数,找到最大可接受的并发用户数区间。最大并发用户数一般是说把服务器压奔溃、或者出现持续报错最大可接受并发用户数能接收的标准最大可接受的并发用户数,并不一定是tps值最大所需插件负载测试,需要引入插件:......
  • mycat集群
    前面我们是用一个mycat对应两个mysql集群,参考:https://www.cnblogs.com/zwh0910/p/17278041.html但是在高并发的情况下,我们的系统也会出现性能的问题,显然是mycat,即所有的压力都压倒mycat上面,所以需要给mycat做集群。mycat做了数据库的代理,在高并发的情况下,必然也会面临单节点性......
  • Haproxy
    Haproxy负责均衡的作用Web服务器的动态水平扩展--->对用户无感知增加业务并发访问及处理能力--->解决单服务器瓶颈问题节约公网IP地址--->降低IT支持成本隐藏内部服务器IP--->提高内部服务器安全性配置简单--->固定格式的配置文件功能丰富--->支持四层和七层,支持动态下线......
  • mycat写库分片
    之前的读写分离(一主一从)https://www.cnblogs.com/zwh0910/p/17267627.html架构如下:从该系统架构中,可以看出:(1)、数据库从之前的单节点变为多节点提供服务(2)、主节点数据,同步到从节点数据(3)、应用程序需要连接到2个数据库节点,并且在程序内部实现判断读写操作但是上面的架构存在......
  • mycat分库分表一主一从(主从复制)
    一、mysql主从复制1、准备挂载文件为了将配置文件在宿主机做挂载,先运行测试镜像拷贝配置文件1)、拉取镜像dockerpullmysql:8.0.262)、创建测试容器mysql-demodockerrun-it-p3300:3306\--namemysql-demo\-eMYSQL_ROOT_PASSWORD=123456\-dmysql:8.0.26运行......
  • nginx 负载均衡
    准备虚拟机one:192.168.30.135:80虚拟机two:192.168.30.128:80两个虚拟机装的nginx都是:nginxversion:nginx/1.18.0官网参考地址: http://nginx.org/ 配置代理在各虚拟机上的conf.d文件夹下建立nginx配置文件,名字分别为:“xuniji_one.conf”、“xuniji_two.conf”反向代......
  • HDFS Balancer负载均衡器
    目录1、背景2、什么是平衡2.1每个DataNode的利用率计算2.2集群的利用率2.3平衡3、hdfsbalancer语法4、运行一个简单的balance案例4.1设置平衡数据传输带宽4.2执行ban......
  • 负载均衡load balancing和算法介绍
    一、负载均衡介绍1.1什么是负载均衡负载均衡(loadbalancing)它是计算机的一种技术,用来在计算机集群、网络连接、CPU、磁盘驱动器或其他资源中分配负载,以达到优化资源使......
  • 大型高并发高负载网站的系统架构
    一个小型的网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构、性能的要求都很简单。随着互联网业务......
  • MyCAT实现MySQL的读写分离
     在MySQL中间件出现之前,对于MySQL主从集群,如果要实现其读写分离,一般是在程序端实现,这样就带来一个问题,即数据库和程序的耦合度太高,如果我数据库的地址发生改变......