当前位置:   article > 正文

HA+MySQL高可用负载均衡集群_mysql 集群 ha

mysql 集群 ha

系统结构:

主机名IP
MySQL110.1.1.20
MySQL210.1.1.21
HAProxy10.1.1.26

安装MySQL双主,上面有,不多说。
安装HAProxy:

[root@localhost ~]# yum install -y haproxy #安装
  • 1

查看HAProxy的版本等信息

[root@localhost ~]# rpm -qi haproxy.x86_64
Name        : haproxy
Version     : 1.5.18
Release     : 8.el7
Architecture: x86_64
  • 1
  • 2
  • 3
  • 4
  • 5

查看HAProxy的配置信息,下面只列出简要信息:

[root@localhost ~]# rpm -ql haproxy.x86_64
/etc/haproxy
/etc/haproxy/haproxy.cfg #此处为HAProxy的配置文件位置
/etc/logrotate.d/haproxy
/etc/sysconfig/haproxy
/usr/bin/halog
/usr/bin/iprange
/usr/lib/systemd/system/haproxy.service
/usr/sbin/haproxy
/usr/sbin/haproxy-systemd-wrapper
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

HAProxy安装完成后配置文件默认是不存在的,需要先启动HAProxy,然后才会生成:

[root@localhost ~]# systemctl start haproxy
[root@localhost ~]# systemctl status haproxy
● haproxy.service - HAProxy Load Balancer
   Loaded: loaded (/usr/lib/systemd/system/haproxy.service; enabled; vendor preset: disabled)
   Active: active (running) since 五 2019-05-31 14:03:26 CST; 10min ago
 Main PID: 7291 (haproxy-systemd)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

启动HAProxy后再看/etc/haproxy/haproxy.cfg文件已经生成了,此时我们需要根据我们的MySQL来配置负载:

# vim /etc/haproxy/haproxy.cfg
# 全局配置参数
global
    #开启HAProxy的日志功能
    log 127.0.0.1 local0 info
    user haproxy
    group haproxy

# 一些默认参数
defaults
    log global
    retries 3
    option  dontlognull
    option redispatch
    maxconn 2000
    timeout connect 3000
    timeout server 5000
    timeout client 5000

# 这个是我们定义的负载均衡的配置
listen mysql-lb1
    # 绑定的IP和端口 haproxy服务器一个网卡IP
    bind 0.0.0.0:3344
    # 模式是TCP
    mode tcp
    # 通过mysql连接去检测mysql是否可以访问 创建用户haproxy_check 密码为空,权限usage
    option mysql-check user haproxy_check
    # 负载均衡算法是 轮询
    balance roundrobin
    # 下面两个就是后端被访问的server
    server mysql_1 10.1.1.20:3306
    server mysql_2 10.1.1.21:3306

# 自带的监控服务器的配置
# 监控服务的端口是 8888
listen stats *:8888
       # 监控模式是http
       mode http
       option httpclose
       balance roundrobin
       stats uri /
       stats realm Haproxy\ Statistics
       # 监控的用户名和密码
       stats auth myadmin:myadmin
  • 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

以上配置完成后,重启HAProxy服务会发现服务器不来,通过systemctl status haproxy命令可以看到有如下两个报错:
第一个报错:Starting proxy mysql-lb1: cannot bind socket 0.0.0.0:3344
解决方法:
1,haproxy -f /etc/haproxy/haproxy.cfg -c检查配置文件
2,bind端口不要冲突
3,先设置haproxy连接策略,执行以下命令即可
setsebool -P haproxy_connect_any=1
4,vim /etc/sysctl.conf
添加:net.ipv4.ip_nonlocal_bind=1
然后执行sysctl -p
第二个报错:[/usr/sbin/haproxy.main()] Cannot create pidfile /run/haproxy.pid
错原因:我们再刚安装完HAProxy时启动了一次服务,已经产生了/run/haproxy.pid这个文件。
解决方法:

rm -rf /run/haproxy.pid
  • 1

然后再启动服务就可以成功了。

开启HAProxy日志功能:
服务的日志默认记录在/var/log/haproxy/haproxy.log文件中,但此文件默认是不存在的需要手动创建:

[root@localhost ~]# mkdir -p /var/log/haproxy/
[root@localhost ~]# touch /var/log/haproxy/haproxy.log
[root@localhost ~]# chown -R haproxy:haproxy /var/log/haproxy/
  • 1
  • 2
  • 3

然后修改HAProxy的配置文件,在global全局变量中添加一行配置:
global
#local0是设备,对应于 /etc/rsyslog.conf中的配置,默认回收info的日志级别
log 127.0.0.1 local0 info

开启rsyslog记录haproxy日志功能,编辑“/etc/rsyslog.conf”打开如下配置项:

$ModLoad imudp
$UDPServerRun 514
  • 1
  • 2

添加如下内容:

# Save haproxy log,local0是日志级别对应/etc/haproxy/haproxy.cfg中的日志配置og
local0.*  /var/log/haproxy/haproxy.log
  • 1
  • 2

修改“/etc/sysconfig/rsyslog”文件,内容如下:

SYSLOGD_OPTIONS="-r -m 0 -c 2"
  • 1

验证是否生效:
重启服务

systemctl restart haproxy
service rsyslog restart
  • 1
  • 2

###查看日志记录

tailf /var/log/haproxy/haproxy.log
  • 1

服务启动后检查一下端口监听情况:

[root@localhost ~]# netstat -tunlp|grep haproxy
  • 1

在这里插入图片描述可以看到3344端口和8888端口都处于监听状态。
测试:
使用Navicat连接10.1.1.26:3344数据库:在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/458583
推荐阅读
相关标签
  

闽ICP备14008679号