zoukankan      html  css  js  c++  java
  • TiDB配置HAProxy负载均衡

    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




  • 相关阅读:
    今日头条核心技术“个性推荐算法”揭秘
    今日头条架构演进之路
    今日头条的核心架构解析
    Retrofit2+Rxjava+MVP实践
    Android MVP 构架封装
    Android MVP 构架初试
    C++ tinyXML的使用和字符编码转换
    C++tinyXML使用
    代码实现文件驱动的安装 (转载)
    SC命令---安装、开启、配置、关闭windows服务 bat批处理(转载)
  • 原文地址:https://www.cnblogs.com/GO-NO-1/p/10938043.html
Copyright © 2011-2022 走看看