MySQL架构实战2--主主复制+Keepalived高可用搭建

1 下载安装

安装包下载:
链接:https://pan.baidu.com/s/1af5YGVIP3Sb5ok8w_ITE2g
提取码:29bf

1.1 解压
tar -zxf keepalived-1.2.18.tar.gz

解压后可以在目录中看到keepalived-1.2.18目录,进入目录如下:
在这里插入图片描述

1.2 编译

创建目录

mkdir /usr/local/keepalived

在上图目录中执行编译命令:

./configure --prefix=/usr/local/keepalived 

编译过程中如看到类似的提示,就安装C语言依赖,如下:
在这里插入图片描述

yum install gcc openssl-devel pcre-devel zlib-devel -y

如果出现下面的问题,需要安装依赖:
在这里插入图片描述

yum -y install zlib zlib-devel openssl openssl--devel pcre pcre-devel

看到下图所示内容,就表示编译成功了:
在这里插入图片描述
同时在指定目录/usr/local/keepalived下已经有了文件。

1.3 安装

在解压的目录中继续执行

make && make install

安装成服务:

mkdir /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
ln -s /usr/local/sbin/keepalived /usr/sbin/
ln -s /usr/local/keepalived/sbin/keepalived /sbin/

设置开机启动

chkconfig keepalived on

2 配置文件

vi /etc/keepalived/keepalived.conf
2.1 Master
! Configuration File for keepalived
global_defs {
   router_id test-04-microservices-db-2
}
vrrp_script chk_mysql {
    script "/etc/keepalived/mysql_check.sh"  ## 检测 mysql 状态的脚本路径
    interval 2  ## 检测时间间隔
    weight -10 ## 如果条件成立,权重-10
    false 2  #检测连续2次失败才算确定是真失败。会用weight减少优先级(1-255之间)
    rise 1  #检测1次成功就算成功。但不修改优先级
}
vrrp_instance VI_1 {
    state MASTER  # 主节点,从节点写BACKUP
    interface eth1  # 用ifconfig 或ip addr来查看你的物理网卡,我的是eth1
    virtual_router_id 52  # 所有节点统一的id,一个keepalived群内,多个群之间不同
    priority 100 # 主节点比从节点高,默认100
    advert_int 1 # 心跳1秒一次
#    authentication {
#        auth_type PASS
#        auth_pass 1111
#    }
    track_script {
        chk_mysql  ## 执行 MySQL 监控的服务
    }
    virtual_ipaddress {
        172.168.2.201/24 dev eth1 label eth1:2  
        # 统一一个虚拟ip,绑定到子回路上,避免对真实网卡造成未知影响(网工这块没听课,知道这么写就行了,不懂自己百度吧)
    }
}
2.2 Backup
! Configuration File for keepalived
global_defs {
   router_id test-04-microservices-aio-5
}
vrrp_script chk_mysql {
    script "/etc/keepalived/mysql_check.sh"  
    interval 2 
    weight -10 
    false 2  
    rise 1 
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth1
    virtual_router_id 52
    priority 99
    nopreempt
    advert_int 1
#    authentication {
#        auth_type PASS
#        auth_pass 1111
#    }
    track_script {
        chk_mysql 
    }
    virtual_ipaddress {
        172.168.2.201/24 dev eth1 label eth1:2
    }
}

2.3 配置iptables (所有节点都要)

vi /etc/sysconfig/iptables

下面的ip地址是上面配置文件中设的,keepalived组中共用的虚拟地址网段

-A INPUT -s 172.168.2.0/24 -d 224.0.0.18 -j ACCEPT   #允许组播地址通信
-A INPUT -s 172.168.2.0/24 -p vrrp -j ACCEPT  #允许 VRRP(虚拟路由器冗余协议)通信

重启防火墙

/etc/init.d/iptables restart

附:开放端口

/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT  ## 比如要用80端口通信
/etc/rc.d/init.d/iptables save  ## 保存
/etc/rc.d/init.d/iptables restart   ## 重启防火墙
/etc/rc.d/init.d/iptables status  ## 查看是否生效

3 创建监听脚本

vi /etc/keepalived/mysql_check.sh

脚本内容:

#!/bin/bash
counter=$(netstat -na|grep "LISTEN"|grep "3306"|wc -l)
if [ "${counter}" -eq 0 ]; then
    /etc/init.d/keepalived stop
fi

开放权限:

权限
chmod +x /etc/keepalived/mysql_check.sh

4 Keepalived服务操作

service keepalived start
service keepalived stop
service keepalived restart

5 Springboot + Durid测试

创建一个简单项目,配置一个Durid,然后配上VIP(虚拟IP)地址,就可以测试高可用了。亲测高可用,切换时间最快1秒内,慢的十几秒。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值