centos7环境配置haproxy实现mysql数据库和redis代理服务器

centos7环境配置haproxy实现mysql数据库代理





我们通常会碰到这样的业务场景:

b主机和c数据库在同一个内网,a主机不能直接访问c数据库,我们可以通过在b主机上搭建代理让a访问c数据库,我们使用haproxy来干这个事情

centos7环境配置haproxy实现mysql数据库和redis代理服务器



安装haproxy

yum install -y haproxy





配置haproxy:

vim /etc/haproxy/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

    stats socket /var/lib/haproxy/stats

 

defaults

        log     global

log 127.0.0.1 local3

        mode    http

        option tcplog

        option  dontlognull

        retries 10

        option redispatch

        maxconn         2000

        timeout connect      5000

        timeout client      50000

        timeout server      50000

 

listen  mysql

        bind 0.0.0.0:7306

        mode tcp             

        balance roundrobin          

        server mysql1 192.168.3.18:3306





CentOS 7上yum安装的Haproxy,默认没有记录日志。需要做一下配置才能记录日志。





1.创建日志文件/var/log/haproxy/haproxy.log

cd /var/log  

mkdir haproxy  

cd haproxy  

touch haproxy.log  

chmod a+w haproxy.log 





2.开启rsyslog的haproxy日志记录功能





编辑vim /etc/rsyslog.conf文件,将





$ModLoad imudp  

$UDPServerRun 514

两行前的#去掉。

centos7环境配置haproxy实现mysql数据库和redis代理服务器



local7.*                                                /var/log/boot.log  

之后添加





# Save haproxy log  

local2.*                       /var/log/haproxy/haproxy.log





修改vim /etc/sysconfig/rsyslog 文件,将

SYSLOGD_OPTIONS=""  

改为

SYSLOGD_OPTIONS="-r -m 2 -c 2" 



centos7环境配置haproxy实现mysql数据库和redis代理服务器

3.配置haproxy





修改/etc/haproxy/haproxy.cfg文件,在global区段添加

log         127.0.0.1 local2





重启rsyslog和haproxy服务,haproxy就能记录日志了。

systemctl restart rsyslog

systemctl restart haproxy

测试

centos7环境配置haproxy实现mysql数据库和redis代理服务器

centos7环境配置haproxy实现mysql数据库和redis代理服务器

报错:

Stopping haproxy:                                          [  OK  ]

Starting haproxy: [WARNING] 313/111853 (29445) : parsing [/etc/haproxy/haproxy.cfg:17] : 'option httplog' not usable with proxy 'mysql' (needs 'mode http'). Falling back to 'option tcplog'.

将haproxy.cfg的httplog改为tcplog即可

可能报错:

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet successfully received from the server was 50,158 milliseconds ago.  The last packet sent successfully to the server was 50,157 milliseconds ago

参数可以适当调整:

timeout connect      500000

        timeout client      500000

        timeout server      500000

连接redis的配置,centos6.5

global
maxconn 2
# debug
quiet
user haproxy
group haproxy
nbproc 1
log 127.0.0.1 local3
defaults
timeout server 3s
timeout connect 3s
timeout client 60s
timeout http-request 3s
timeout queue 3s
frontend redis_read
bind 0.0.0.0:7736
default_backend cluster_redis
backend cluster_redis
mode tcp
option tcpka
balance static-rr
option httpchk
server redis_01 192.168.1.1:6379 weight 1

直接通过RedisDesktopManager工具连接redis即可

centos7环境配置haproxy实现mysql数据库和redis代理服务器

上一篇:云上技术 | AI一体机高速*流收费稽核


下一篇:Eclipse之NDK编译-- Type 'jint' could not be resolved, and JNIEnv, jclass错误解决办法