linux mysql ha_Linux运维知识之keepalived + haproxy + mysql 构建高可用数据库

本文主要向大家介绍了Linux运维知识之keepalived + haproxy + mysql 构建高可用数据库,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助。

69c304978fec507d34fab25e19f95c6d.png

keepalived + haproxy + mysql 构建高可用

keepalived 的高可用是主备,有一台作为备用

keepalived + haproxy 搭建的高可用是可以两台都会调度的高可用

拓扑图:

keepalived:负责抢占虚拟ip,使用vrrp协议haproxy:负责做访问调度,减轻单点压力,单独监听一个端口,这里用23306

1、安装mysql

分别在两台机器上面搭建mysql,并做主从配置,这里不做介绍

2、搭建haproxy

download 源码包,下载地址:http://www.haproxy.org/#down

在81.128和81.129解压缩安装

tar xf haproxy-1.8.4.tar.gzcd haproxy-1.8.4yum install -y gccmake TARGET=linux310 ARCH=x86_64 # uname -a查看主机信息填写make install SBINDIR=/usr/sbin/ MANDIR=/usr/share/man/ DOCDIR=/usr/share/doc/

3、提供启动脚本

#!/bin/sh## haproxy## chkconfig:   - 85 15# description:  HAProxy is a free, very fast and reliable solution \#               offering high availability, load balancing, and \#               proxying for TCP and  HTTP-based applications# processname: haproxy# config:      /etc/haproxy/haproxy.cfg# pidfile:     /var/run/haproxy.pid# Source function library.. /etc/rc.d/init.d/functions# Source networking configuration.. /etc/sysconfig/network# Check that networking is up.[ "$NETWORKING" = "no" ] && exit 0exec="/usr/sbin/haproxy"prog=$(basename $exec)[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$progcfgfile=/etc/haproxy/haproxy.cfgpidfile=/var/run/haproxy.pidlockfile=/var/lock/subsys/haproxycheck() {    $exec -c -V -f $cfgfile $OPTIONS}start() {    $exec -c -q -f $cfgfile $OPTIONS    if [ $? -ne 0 ]; then        echo "Errors in configuration file, check with $prog check."        return 1    fi    echo -n $"Starting $prog: "    # start it up here, usually something like "daemon $exec"    daemon $exec -D -f $cfgfile -p $pidfile $OPTIONS    retval=$?    echo    [ $retval -eq 0 ] && touch $lockfile    return $retval}stop() {    echo -n $"Stopping $prog: "    # stop it here, often "killproc $prog"    killproc $prog    retval=$?    echo    [ $retval -eq 0 ] && rm -f $lockfile    return $retval}restart() {    $exec -c -q -f $cfgfile $OPTIONS    if [ $? -ne 0 ]; then        echo "Errors in configuration file, check with $prog check."        return 1    fi    stop    start}reload() {    $exec -c -q -f $cfgfile $OPTIONS    if [ $? -ne 0 ]; then        echo "Errors in configuration file, check with $prog check."        return 1    fi    echo -n $"Reloading $prog: "    $exec -D -f $cfgfile -p $pidfile $OPTIONS -sf $(cat $pidfile)    retval=$?    echo    return $retval}force_reload() {    restart}fdr_status() {    status $prog}case "$1" in    start|stop|restart|reload)        $1        ;;    force-reload)        force_reload        ;;    check)        check        ;;    status)        fdr_status        ;;    condrestart|try-restart)        [ ! -f $lockfile ] || restart        ;;    *)        echo $"Usage: $0 {start|stop|status|restart|try-restart|reload|force-reload}"        exit 2esac

4、提供配置文件

mkdir /etc/haproxymkdir /var/lib/haproxyuseradd -r 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/statsdefaults    mode                    tcp    log                     global    option                  dontlognull    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                 600listen stats    mode http    bind :6677     stats enable    stats hide-version                  stats uri     /haproxyadmin?stats    stats realm   Haproxy\ Statistics    stats auth    admin:admin    stats admin if TRUE frontend  main     bind  *:23306    default_backend             mysqlbackend mysql    balance     leastconn    server m1 192.168.81.128:3306 check port 3306 maxconn 300    server m2 192.168.81.129:3306 check port 3306 maxconn 300

5、修改日志系统

###Provides UDP syslog reception //去掉下面两行注释,开启UDP监听$ModLoad imudp$UDPServerRun 514local2.* /var/log/haproxy.log //添加此行service rsyslog restart

6、启动测试haproxy

service haproxy start chkconfig --add haproxychkconfig haproxy onnetstat -tnlpmysql -P23306 -uroot -p123456 -h192.168.81.129 # 查看

server_id,判断是否成功

7、搭建keepalived

1、download 源码包,下载地址:http://www.keepalived.org/download.html

2、在81.128和81.129解压缩安装

tar xf keepalived-1.2.7.tar.gz cd keepalived-1.2.7./configure --prefix=/usr/local/keepalived --sbindir=/usr/sbin/ --sysconfdir=/etc/ --mandir=/usr/local/share/man/make && make installchkconfig --add keepalivedchkconfig keepalived on

3、提供配置文件

vim /etc/keepalived/keepalived.conf # 两个机器配置文件不同! Configuration File for keepalivedglobal_defs {           notification_email {          # 忽略     acassen@firewall.loc     failover@firewall.loc     sysadmin@firewall.loc   }   notification_email_from Alexandre.Cassen@firewall.loc   smtp_server 192.168.200.1   smtp_connect_timeout 30   router_id LVS_DEVEL}vrrp_script chk_haproxy {    script "/etc/keepalived/chk.sh"     # 检查haproxy的脚本    interval 2                          # 每两秒检查一次}vrrp_instance VI_1 {    state BACKUP                        # 定义为BACKUP节点    nopreempt                           # 开启不抢占,另一个不写    interface ens33    virtual_router_id 51    priority 100                        # 开启了不抢占,所以此处优先级必须高于另一台,另一个写99    advert_int 1    authentication {        auth_type PASS        auth_pass abcd    }    virtual_ipaddress {        192.168.81.150                  # 配置VIP    }    track_script {        chk_haproxy                     # 调用检查脚本    }    notify_backup "/etc/init.d/haproxy restart"    notify_fault "/etc/init.d/haproxy stop"}

4、创建check文件

vim /etc/keepalived/chk.sh

#!/bin/bashif [ $(ps -C haproxy --no-header | wc -l) -eq 0 ]; then       /etc/init.d/keepalived stopfichmod +x /etc/keepalived/chk.sh service keepalived start

5、测试

ip addr # 查看是否绑定了虚iptcpdump -nn -i ens33 vrrp # 抓包查看http://192.168.81.128:6677/haproxyadmin?stats # 通过haproxy查看状态

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注系统运维Linux频道!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值