使用Haproxy对MariaDB做负载均衡

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
传统型负载均衡 CLB,每月750个小时 15LCU
简介:

服务器环境:

wKioL1NrXYri1iztAAEdbd2C-Vc420.jpg


安装

1
2
3
4
5
6
vim  /etc/apt/sources .list.d /mariadb .list      # 添加以下两句
deb http: //mirror .yongbok.net /mariadb/repo/5 .5 /ubuntu  precise main
deb-src http: //mirror .yongbok.net /mariadb/repo/5 .5 /ubuntu  precise main
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
apt-get update
apt-get  install  mariadb-server-5.5

/etc/mysql/my.cnf 

多实例配置文件:3306,3307,3308


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
[mysqld_multi]
mysqld      =  /usr/bin/mysqld_safe
mysqladmin  =  /usr/bin/mysqladmin
user        = root            # 指定用于启动、停止mysql实例的用户
log     =  /var/log/mysql/mysqld_multi .log 
[client]
port        = 3306
socket      =  /var/run/mysql/mysql .sock
default-character- set    = utf8
[mysqld3306]
port        = 3306
socket      =  /var/run/mysql/mysql .sock
pid- file     /var/run/mysql/mysql .pid
datadir     =  /var/lib/mysql/3306
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
default-storage-engine  = MyISAM
character- set -server    = utf8
skip-name-resolve
collation-server        = utf8_general_ci
log-error               =  /var/log/mysql/mysqld-error .log
log-slow-admin-statements
long-query- time          = 3
slow-query-log
slow-query-log- file      /var/log/mysql/mysqld-slow .log
innodb_buffer_pool_size=1G
innodb_additional_mem_pool_size=20M
max_connections     = 1000
tmpdir      =  /tmp/
server- id    = 2
log-slave-updates
log-bin         = mysql-bin
binlog_format   = mixed
relay_log       = mysql-relay-bin
replicate- do -db        = wordpress
replicate-ignore-db        = mysql
replicate-ignore-db        = information_schema
replicate-ignore-db        = performance_schema
replicate-ignore-db        =  test
[mysqldump]
quick
max_allowed_packet = 16M
[mysqld3307]
port        = 3307
socket      =  /var/run/mysql/mysql-3307 .sock
pid- file     /var/run/mysql/mysql-3307 .pid
datadir     =  /var/lib/mysql/3307
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
default-storage-engine  = MyISAM
character- set -server    = utf8
skip-name-resolve
collation-server        = utf8_general_ci
log-error               =  /var/log/mysql/mysqld-error-3307 .log
log-slow-admin-statements
long-query- time          = 3
slow-query-log
slow-query-log- file      /var/log/mysql/mysqld-slow-3307 .log
innodb_buffer_pool_size=1G
innodb_additional_mem_pool_size=20M
max_connections     = 1000
tmpdir      =  /tmp/
server- id    = 2
log-slave-updates
log-bin         = mysql-bin
binlog_format   = mixed
relay_log       = mysql-relay-bin
replicate- do -db        = futurestar
replicate- do -db        = verywx
replicate-ignore-db        = mysql
replicate-ignore-db        = information_schema
replicate-ignore-db        = performance_schema
replicate-ignore-db        =  test
[mysqldump]
quick
max_allowed_packet = 16M
[mysqld3308]
port        = 3308
socket      =  /var/run/mysql/mysql-3308 .sock
pid- file     /var/run/mysql/mysql-3308 .pid
datadir     =  /var/lib/mysql/3308
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
default-storage-engine  = MyISAM
character- set -server    = utf8
skip-name-resolve
collation-server        = utf8_general_ci
log-error               =  /var/log/mysql/mysqld-error-3308 .log
log-slow-admin-statements
long-query- time          = 3
slow-query-log
slow-query-log- file      /var/log/mysql/mysqld-slow-3308 .log
innodb_buffer_pool_size=1G
innodb_additional_mem_pool_size=20M
max_connections     = 1000
tmpdir      =  /tmp/
server- id    = 2
log-slave-updates
log-bin         = mysql-bin
binlog_format   = mixed
relay_log       = mysql-relay-bin
replicate- do -db        = futurestar
replicate- do -db        = verywx
replicate-ignore-db        = mysql
replicate-ignore-db        = information_schema
replicate-ignore-db        = performance_schema
replicate-ignore-db        =  test
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
socket  =  /var/run/mysql/mysql .sock
auto-rehash
default-character- set    = utf8
[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout


初始化数据库文件:

1
2
3
mysql_install_db --datadir= /var/lib/mysql/3306  --user=mysql
mysql_install_db --datadir= /var/lib/mysql/3307  --user=mysql
mysql_install_db --datadir= /var/lib/mysql/3308  --user=mysql


启动数据库:

1
2
3
mysqld_multi start 3306
mysqld_multi start 3307
mysqld_multi start 3308


查看启动情况:

1
netstat  -tunlp |  grep  -E  '(3306|3307|3308)'

wKioL1NrV5ig87b0AAB_xC-JOUY727.jpg


wKiom1NrWimwvRhwAANSvXGqZGk724.jpg

wKioL1NrWf7gC7IxAAFEWAJact0591.jpg


安装Haporxy

1
apt-get  install  haproxy

然后vim etc/default/haproxy

修改 ENABLED=0 -> ENABLED=1 保存。


修改haproxy配置文件:

vim /etc/haproxy/haproxy.cfg

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# this config needs haproxy-1.1.28 or haproxy-1.2.1
global
     log 127.0.0.1   local0
     log 127.0.0.1   local1 notice
     #log loghost    local0 info
     maxconn 4096
     #chroot /usr/share/haproxy
     user haproxy
     group haproxy
     daemon
     #debug
     #quiet
defaults
     log global
     mode    http
     #option httplog
     option  dontlognull
     retries 3
     option redispatch
     maxconn 2000
     contimeout  5000
     clitimeout  50000
     srvtimeout  50000
listen  mysql 0.0.0.0:6666
     mode tcp
     option mysql-check user root
     balance roundrobin
     server  mysql_1 127.0.0.1:3306 weight 1 check inter 1s rise 2 fall 5
     server  mysql_2 127.0.0.1:3307 weight 1 check inter 1s rise 2 fall 5
     server  mysql_3 127.0.0.1:3308 weight 1 check inter 1s rise 2 fall 5
                                                                                                          
listen stats
     mode http
     bind 0.0.0.0:8888
     stats  enable
     stats uri  /dbs
     stats realm Global\ statistics
     stats auth admin:admin
                                                                                                          
     errorfile   400  /etc/haproxy/errors/400 .http
     errorfile   403  /etc/haproxy/errors/403 .http
     errorfile   408  /etc/haproxy/errors/408 .http
     errorfile   500  /etc/haproxy/errors/500 .http
     errorfile   502  /etc/haproxy/errors/502 .http
     errorfile   503  /etc/haproxy/errors/503 .http
     errorfile   504  /etc/haproxy/errors/504 .http

执行命令:

1
/etc/init .d /haproxy  start


测试结果:

wKioL1NrXIbTgo1GAAJI5Gv0EDI394.jpg

wKiom1NrXLGQzJiDAAHAOUvDXvs301.jpg

wKioL1NrXIaDhmMQAAF6jyMU-AQ809.jpg


查看haproxy监控页面:


wKiom1NrXQuAe5xBAAcFX6jljjw614.jpg

配置成功。



本文转自birdinroom 51CTO博客,原文链接:http://blog.51cto.com/birdinroom/1408525,如需转载请自行联系原作者

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
负载均衡 算法 应用服务中间件
百度搜索:蓝易云【Linux系统如何使用 HAProxy、Nginx 和 Keepalived 进行负载均衡?】
通过上述步骤,你可以在Linux系统中使用HAProxy、Nginx和Keepalived来实现负载均衡。这些工具可以帮助你将流量分配到多个后端服务器上,提高系统的性能、可靠性和可扩展性。
140 0
|
2月前
|
负载均衡 前端开发 应用服务中间件
负载均衡指南:Nginx与HAProxy的配置与优化
负载均衡指南:Nginx与HAProxy的配置与优化
161 3
|
6月前
|
负载均衡 算法 前端开发
HAProxy 和负载均衡概念简介
HAProxy 和负载均衡概念简介
116 3
|
9月前
|
负载均衡 算法 网络协议
LVS、Nginx和HAProxy负载均衡器对比总结
LVS、Nginx和HAProxy负载均衡器对比总结
|
9月前
|
负载均衡 监控 网络协议
使用haproxy实现负载均衡集群
【4月更文挑战第14天】HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,快速并且可靠的一种解决方案。
338 1
|
9月前
|
负载均衡 网络协议 应用服务中间件
【亮剑】在Linux中构建高可用性和高性能网络服务的负载均衡工具HAProxy、Nginx和Keepalived。
【4月更文挑战第30天】本文介绍了在Linux中构建高可用性和高性能网络服务的负载均衡工具HAProxy、Nginx和Keepalived。HAProxy是一个高性能的开源TCP和HTTP负载均衡器,适合处理大量并发连接;Nginx是一个多功能Web服务器和反向代理,支持HTTP、HTTPS和TCP负载均衡,同时提供缓存和SSL功能;Keepalived用于监控和故障切换,通过VRRP实现IP热备份,保证服务连续性。文中详细阐述了如何配置这三个工具实现负载均衡,包括安装、配置文件修改和启动服务,为构建可靠的负载均衡系统提供了指导。
224 0
|
负载均衡 前端开发 网络协议
Keepalived+HAProxy 搭建高可用负载均衡(二)
Keepalived+HAProxy 搭建高可用负载均衡
448 0
|
负载均衡 算法 调度
Keepalived+HAProxy 搭建高可用负载均衡
Keepalived+HAProxy 搭建高可用负载均衡
782 0
|
负载均衡 前端开发 应用服务中间件
企业实战(22)基于Haproxy负载均衡+Keepalived高可用集群实战详解
企业实战(22)基于Haproxy负载均衡+Keepalived高可用集群实战详解
126 0

推荐镜像

更多