Mysql + Hproxy负载均衡

本文介绍了HAProxy作为负载均衡器的配置和使用,特别是在MySQL读操作的负载均衡场景下。通过配置全局设置、前端、后端和监听段,实现了对多个MySQL服务器的轮询负载。在环境中,haproxy代理了两个相同配置的MySQL集群,并通过keepalived实现热备功能,确保高可用性。配置包括创建haproxy容器、编写配置文件以及连接测试。
摘要由CSDN通过智能技术生成

Hproxy负载均衡(主要针对读)

haproxy介绍

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

相较与 Nginx,HAProxy 更专注与反向代理,因此它可以支持更多的选项,更精细的控制,更多的健康状态检测机制和负载均衡算法。

haproxy 的配置文件由两部分组成:

  1. 全局设定(global settings)

    全局设定

    global settings:主要用于定义 haproxy 进程管理安全及性能相关的参数

  2. 对代理的设定(proxies)

    代理设定

    proxies 共分为4段:defaults,frontend,backend,listen

    proxies:代理相关的配置可以有如下几个配置端组成
    
    defaults:为除了global以外的其它配置段提供默认参数,默认配置参数可由下一个“defaults”重新设定。
    
    frontend:定义一系列监听的套接字,这些套接字可接受客户端请求并与之建立连接。
    
    backend:定义 “后端” 服务器,前端代理服务器将会把客户端的请求调度至这些服务器。
    
    listen:定义监听的套接字和后端的服务器。类似于将 frontend 和 backend 段放在一起,所有代理的名称只能使
    
    用大写字母、小写字母、数字、-(中线)、_(下划线)、.(点号)和:(冒号)。此外,ACL 名称会区分字母大小写。
    

环境搭建准备:

服务器名称IP操作系统安装服务
Haproxy-Master192.168.48.128CentOS7.1haproxy-Master
Mysql,Haproxy-slave192.168.48.137CentOS7.1mysql,mysql2 haproxy-slave
Mysql192.168.48.111CentOS7.1mysql,mysql2
Mysql192.168.48.134CentOS7.1mysql,mysql2

架构top

在这里插入图片描述

当前环境中,haproxy分别代理两个不同集群环境的mysql服务器,这些服务器的mysql配置与数据几乎是一模一样的,haproxy只是做了个负载均衡而已,在这里因为服务器不够,因此这些数据库和haproxy会部署到同一台服务器中,以不同的端口来进行区分,在实际的开发生产中,是可以部署到不同的服务器中的

在后面中,会加入keepalived对两个集群做一个热备的功能,当集群一种的所有mysql宕机了或者haproxy宕机了,keepalived会把备用的集群二顶上来,代替集群一,当集群一修复好后,集群一就变成了备用集群,等待集群二的故障转移

HAProxy-mysql负载均衡

1.拉取haproxy镜像

docker pull haproxy

2.配置目录

mkdir /docker/haproxy-master/

touch /docker/haproxy-master/haproxy.cfg

3.编辑haproxy.cfg

主与从都分别配置,mysql的用户尽量都一致

vim /docker/haproxy-master/haproxy.cfg
defaults
    mode    	tcp
    log        	global
    option    	tcplog
    option    	dontlognull
    option		http-server-close
    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

#配置haproxy可连接的地址,与绑定固定的域名
frontend	mysql
	bind	0.0.0.0:13306
	mode	tcp
	log		global
	default_backend	mysql_server

#负载均衡的真实数据库地址
backend 	mysql_server
    balance roundrobin
    server  mysql1 192.168.238.111:3309 check inter 5s rise 2 fall 3
    server  mysql2 192.168.238.137:3306 check inter 5s rise 2 fall 3
    server  mysql3 192.168.238.134:3306 check inter 5s rise 2 fall 3
    
    #rise 2是2次正确认为服务器可用,fall 3是3次失败认为服务器不可用


#客户端配置
listen  admin_status
        mode  http
        bind 0.0.0.0:8899
        option httplog
        log global
        stats enable
        stats refresh 10s
        stats hide-version
        stats realm Haproxy\ Statistics
        stats uri  /admin-status 
        stats auth  admin:123456 
        stats admin if TRUE

4.构建haproxy容器

docker run -d -p 8899:8899 -p 13306:13306 --name haproxy-master \
-v /docker/haproxy-master/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg \
--privileged=true haproxy:latest

结果:

在这里插入图片描述

5.连接测试

mysql -uroot -proot -P13306 -h192.168.238.128 -e "show variables like 'server_id';"

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值