前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mysq+Haproxy+Keepalived高可用

Mysq+Haproxy+Keepalived高可用

作者头像
剧终
发布2020-08-27 00:27:42
5250
发布2020-08-27 00:27:42
举报
文章被收录于专栏:Linux学习日志

实验环境

代码语言:javascript
复制
全部关闭防火墙和selinux
双主模式的数据库
centos7.3
VIP地址 172.16.0.100
master 172.16.0.10
backup 172.16.0.8
mysqla 172.16.0.4 
mysqlb 172.16.0.5

环境准备

全部服务器都需要执行以下

代码语言:javascript
复制
systemctl stop firewalld
setenforce 0

vim /etc/hosts
172.16.0.10 master
172.16.0.8  backup
172.16.0.4  mysqla
172.16.0.5  mysqlb

安装Haproxy

代码语言:javascript
复制
master:
[root@master /]# yum -y install haproxy
[root@master /]# cp -rf /etc/haproxy/haproxy.cfg{,.bak}
[root@master /]# 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
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    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

frontend mysql
    mode tcp
    bind *:6039
    default_backend back_mysql

backend back_mysql
    mode  tcp
    balance     roundrobin
    server  mysqla 172.16.0.4:3306 check
    server  mysqlb 172.16.0.5:3306 check

backup:
[root@backup /]# yum -y install haproxy
[root@backup /]# cp -rf /etc/haproxy/haproxy.cfg{,.bak}
[root@backup /]# 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
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    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

frontend mysql
    mode tcp
    bind *:6039
    default_backend back_mysql

backend back_mysql
    mode  tcp
    balance     roundrobin
    server  mysqla 172.16.0.4:3306 check
    server  mysqlb 172.16.0.5:3306 check

3:安装keepalived 1>安装keepalived

代码语言:javascript
复制
[root@master /]# yum install -y keepalived
[root@backup /]# yum install -y keepalived

编辑配置文件

代码语言:javascript
复制
master:
[root@master /]# cp /etc/keepalived/keepalived.conf{,.bak}
[root@master /]# vim /etc/keepalived/keepalived.conf
global_defs {
   router_id directory1
}
vrrp_script check_haproxy {
   script "/etc/keepalived/check_haproxy_status.sh"
   interval 5  #每5秒执行一次
}
vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 80
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.16.0.100/24
    }

    track_script {
        check_haproxy
    }
}

backup:
[root@backup /]# cp /etc/keepalived/keepalived.conf{,.bak}
[root@backup /]# vim /etc/keepalived/keepalived.conf
global_defs {
   router_id directory2
}
vrrp_script check_haproxy {
   script "/etc/keepalived/check_haproxy_status.sh"
   interval 5  #每5秒执行一次
}
vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 80
    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.16.0.100/24
    }

    track_script {
        check_haproxy
    }
}

编辑脚本

代码语言:javascript
复制
master:
vim /etc/keepalived/check_haproxy_status.sh
#!/bin/bash
/usr/bin/curl -I http://localhost &>/dev/null   
if [ $? -ne 0 ];then                                                                     
#       /etc/init.d/keepalived stop
            systemctl stop keepalived
fi     
    
backup:
vim /etc/keepalived/check_haproxy_status.sh
#!/bin/bash
/usr/bin/curl -I http://localhost &>/dev/null   
if [ $? -ne 0 ];then                                                                     
#       /etc/init.d/keepalived stop
            systemctl stop keepalived
fi

测试

在master和backup上面启动haproxy和keepalived

代码语言:javascript
复制
master:
[root@master /]# systemctl start haproxy
[root@master /]# systemctl start keepalived

backup:
[root@backup /]# systemctl start haproxy
[root@backup /]# systemctl start keepalived

查看VIP IP绑定成功了没

代码语言:javascript
复制
[root@master /]# ip add |grep 172.16.0.
inet 172.16.0.10/24 brd 172.16.0.255 scope global dynamic ens33
inet 172.16.0.100/24 scope global secondary ens33

[root@backup /]# ip add |grep 172.16.0.
inet 172.16.0.8/24 brd 172.16.0.255 scope global dynamic ens33

连接mysql数据库

在连接数据库的时候需要使用VI+haproxy_PORT,上面我们配置haproxy监听了6039端口,那么连接的时候就是用VIP+6039端口。

连接成功

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 实验环境
  • 环境准备
  • 安装Haproxy
  • 编辑配置文件
  • 编辑脚本
  • 测试
  • 在master和backup上面启动haproxy和keepalived
  • 查看VIP IP绑定成功了没
  • 连接mysql数据库
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档