TiDB配置HAProxy负载均衡

摘要:
HAProxy提供两种负载平衡功能,L4和L7,功能丰富。
1、简介

HAProxy是一个C语言编写的免费的负载均衡软件,可以运行于大部分主流的Linux操作系统上。

HAProxy提供了L4(TCP)和L7(HTTP)两种负载均衡能力,具备丰富的功能。


2、配置使用

2.1、下载安装

https://www.haproxy.org/download/1.9/src/

此处使用的是1.9版本

解压安装:
tar
-xzf haproxy-1.9.8.tar.gz
make PREFIX=/home/ha/haproxy TARGET=linux2628
make install PREFIX=/home/ha/haproxy

2.2、配置

创建配置文件:
mkdir -p /home/ha/haproxy/conf vi /home/ha/haproxy/conf/haproxy.cfg
haproxy.cfg:
global #全局属性
    daemon  #以daemon方式在后台运行
    maxconn 256  #最大同时256连接
    pidfile /home/ha/haproxy/conf/haproxy.pid  #指定保存HAProxy进程号的文件
#log 127.0.0.1 local0 info  #配置log,需要设置 syslog
#log 127.0.0.1 local1 warning  #配置log
defaults #默认参数 #mode http #http模式
mode tcp
#log global  #配置log
#option tcplog  #配置log timeout connect 5000ms #连接server端超时5s timeout client 50000ms #客户端响应超时50s timeout server 50000ms #server端响应超时50s frontend http-in #前端服务http-in bind *:8080 #监听8080端口 default_backend tidbs #请求转发至名为"servers"的后端服务 backend tidbs #后端服务servers server server1 127.0.0.1:4000 maxconn 32 #backend servers中只有一个后端服务,名字叫server1,起在本机的8000端口,HAProxy同时最多向这个服务发起32个连接
#server server2 ip:port [params] #如有多个TiDB可继续配置,默认权重为1

2.3、启停

启动:

./sbin/haproxy -f conf/haproxy.cfg

重启:

./sbin/haproxy -f conf/haproxy.cfg -p conf/haproxy.pid -sf $(cat conf/haproxy.pid)

2.4、[日志配置]

 2.4.1、设置haproxy.cfg

  取消haproxy.cfg 里 配置log 的注释

 2.4.2、设置rsyslog

  为rsyslog添加haproxy日志的配置

vi /etc/rsyslog.d/haproxy.conf
$ModLoad imudp
$UDPServerRun 514
$FileCreateMode 0644  #日志文件的权限
$FileOwner ha  #日志文件的owner
local0.*     /var/log/haproxy.log  #local0接口对应的日志输出文件
local1.*     /var/log/haproxy_warn.log  #local1接口对应的日志输出文件

  修改rsyslog的启动参数

vi /etc/default/rsyslog
# Options for rsyslogd
# Syslogd options are deprecated since rsyslog v3.
# If you want to use them, switch to compatibility mode 2 by "-c 2"
# See rsyslogd(8) for more details
SYSLOGD_OPTIONS="-c 2 -r -m 0"
2.4.3、重启
rsyslog :
service rsyslog restart
haproxy:
./sbin/haproxy -f conf/haproxy.cfg -p conf/haproxy.pid -sf $(cat conf/haproxy.pid)

2.5、配置高可用

可使用keepalive配置高可用,具体自查资料

2.6、更多配置

参考官方文档:http://cbonte.github.io/haproxy-dconv/1.9/configuration.html

3、参考

https://www.jianshu.com/p/c9f6d55288c0

===================================分割线========================================

2019-11-5更新:

遇到新的问题,按上面的配置客户端可以通过haproxy访问tidb,但是tidb识别到的IP是haproxy服务器的IP,并不是客户端的真实IP。

可能会报错:

ERROR 2013 (HY000): Lost connection to MySQL server at 'reading authorization packet', system error: 0

解决这个问题需要修改haproxy配置和tidb配置:

  • add proxy-protocol in HAProxy
  • add proxy_protocol_networks to my.cnf and set it to the proxy’s IP
  • bind mysql to its IPv4 IP

1、haproxy增加send-proxy:

server server1 127.0.0.1:4000 maxconn 32 send-proxy

2、tidb 增加networks:

[proxy-protocol]

networks="127.0.0.1"


参考:
https://www.percona.com/blog/2015/10/15/proxy-protocol-percona-xtradb-cluster-quick-guide/
https://asktug.com/t/haproxy-ip/1507




免责声明:文章转载自《TiDB配置HAProxy负载均衡》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Python框架-pygal之世界地图阿里代码扫描插件安装 (IDEA)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

IIS7 使用server farms 进行负载均衡

1、首先,到微软官网下载web平台安装程序: https://www.microsoft.com/web/downloads/ 2、安装好后,会在IIS里有这个图标: 3、双击这个图标:安装 4、安装完成后,会在IIS中出现:  5、右击这个Server Farms然后 Create Server Farm: 新建用于要负载的IP地址及端口,并指...

使用SQLAlchemy操作已存在的数据库的表

需求场景: 使用sqlalchmy从现有的表中获取数据(不是自己建表)。百度了一下,网上都是使用sqlalchemy自己先创建表,然后导入数据表的模型类进行增删改查;现在不是自己建表,该如何操作呢? 操作方案 通过sqlalchmey执行原生的sql语句,增删改查的原生语句携带表名,就不需要导入数据表的模型类了。 使用的包: SQLAlchemy (1.3...

org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; 前言中不允许有内容。

二月 25, 2016 9:24:24 下午 org.apache.tomcat.util.digester.SetPropertiesRule begin 警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclip...

haproxy部署及配置

HAProxy介绍 (1)HAProxy 是一款提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。 HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在时下的硬件上,完全可以支持数以万计的 并发连接。并且它的运行模式使...

Git查看某一天的详细修改日志

$git log –since=2011-3-24 –until=2011-3-25 -p 查看2011-3-25的日志,包括commit和修改涉及的代码; 参考了:http://www.enjoyrails.com/wikis/Git%E4%B8%80%E5%88%86%E9%92%9F%E4%B8%8A%E6%89%8B Git一分钟上手 流程:取...

airtest之脚本批量运行

项目目录      根目录:D:workspaceairtestsuite   脚本:douyin.air,dy.air   日志目录:log     日志目录由custom_launcher.py自动生成,custom_launcher.py目录:D:workspaceairtestsuitecustom_launcher.py,即在根目录下      ...