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负载均衡的更多相关文章

  1. haproxy负载均衡的安装配置

    haproxy是一款可靠,高性能的并且可以支持TCP/HTTP的负载均衡器,和前面说过的nginx负载均衡类似,这里haproxy对于负载均衡来说更专业,支持的配置选项更多,稳定性也很强,甚至只需要一 ...

  2. [记录]HAproxy负载均衡配置教程

    HAproxy负载均衡配置教程 一.简介 haproxy是一个开源的高性能负载均衡软件:支持双机热备.虚拟主机和图形化的管理界面,自带强大的对RS健康检查功能:支持TCP(四层).HTTP(七层)应用 ...

  3. Nginx/LVS/HAProxy负载均衡软件的优缺点详解

    PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验,总结一下. 一般对负载均衡的使用是随着网站规模的提升根据不 ...

  4. Nginx/LVS/HAProxy负载均衡软件的优缺点详解(转)

    PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验,总结一下. 一般对负载均衡的使用是随着网站规模的提升根据不 ...

  5. Nginx/LVS/HAProxy负载均衡软件的优缺点详解(转)

    PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验,总结一下. 一般对负载均衡的使用是随着网站规模的提升根据不 ...

  6. (总结)Nginx/LVS/HAProxy负载均衡软件的优缺点详解

    PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验,总结一下. 一般对负载均衡的使用是随着网站规模的提升根据不 ...

  7. 解决 RabbitMQ 集群 Channel shutdown: connection error 错误(HAProxy 负载均衡)

    相关文章:搭建 RabbitMQ Server 高可用集群 具体错误信息: 2018-05-04 11:21:48.116 ERROR 60848 --- [.168.0.202:8001] o.s. ...

  8. Nginx/LVS/HAProxy 负载均衡软件的优缺点详解

    Nginx/LVS/HAProxy 负载均衡软件的优缺点详解   Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验 ...

  9. rabbitmq3.6.5镜像集群搭建以及haproxy负载均衡

    一.集群架构 后端75.103.69分别是3台rabbitmq节点做镜像集群,前端103用haproxy作为负载均衡器 二.安装rabbitmq节点 参照 https://www.cnblogs.co ...

随机推荐

  1. 将.py文件转换成.exe文件

    1.安装pyinstaller模块 pip install pyinstaller 2.打开python目录下的scripts文件夹 cmd下,使用pyinstaller -F test.py,运行后 ...

  2. Lindström–Gessel–Viennot lemma

    解决不相交路径计数 有两个大小为N的点集A,B A上每一个点对应着B的每一个点 求满足条件的路径集合有多少个 图里面可能还有一些障碍 Codeforces 348 D 有一个N*M的网格图 有两个点 ...

  3. linux如何判断上一条命令执行是否正确

    echo $? 如果输出0代表结果正确 如果输出非0代表结果错误

  4. MyEclipse使用教程:使用DevStyle增强型启动

    [MyEclipse CI 2019.4.0安装包下载] DevStyle不仅仅是一组新的主题,它还包含了一个完全改进的启动体验,拥有更直观的UI,帮助开发人员快速启动IDE.DevStyle作为Ec ...

  5. 使用vux的x-input组件中show-clear=“true”清除icon点击失效的问题

    问题场景: 在电脑浏览器点击清除icon正常 在手机浏览器,手机微信,微信开发者工具中点击清除icon失效 查看vux中的x-input组件中的源码发现,清除icon使用了v-show显示与隐藏,对应 ...

  6. vue 路由拦截器和请求拦截器

    路由拦截器 已路由为导向 router.beforeEach((to,from,next)=>{ if(to.path=='/login' || localStorage.getItem('to ...

  7. layui静态表格固定td宽度,table固定td宽度

    正在做一个项目,要求数据表的列是不固定的,有可能是有10列,有可能是20列,第一列宽度要固定,然后我怎么设置都没有用, 这个问题困扰了我三天,后来终于百度到了, 这个博客: https://www.c ...

  8. GO语言学习笔记4-int与string类型转换

    int与string类型之间相互转换可以借助strconv包里自带的函数实现. 1.string转换成int 函数原型: // base指定进制(2到36),如果base为0,则会从字符串前置判断, ...

  9. python4---打印长方形

    1:方法1for i in range(6): for j in range(3): print("*", end=" ") print() 2:输入显示长方形 ...

  10. 小样本学习Few-shot learning

    One-shot learning Zero-shot learning Multi-shot learning Sparse Fine-grained Fine-tune 背景:CVPR 2018收 ...