增加三台机器

机器名 IP Port 作用
Frontend2 192.168.211.151 80 备用前端
Backend2 192.168.211.153 8080 备用后端
MySQL2 192.168.211.155 3306 备用数据库

Nginx配置

编辑/etc/nginx/conf.d/default.conf

Nginx

安装keepalived,编辑配置文件/etc/keepalived/keepalived.conf

注释掉其中的vrrp_strict,并更改一下内容:

keepalived

配置防火墙对vrrp数据包放行。

firewall-cmd --permanent --add-protocol=vrrp
firewall-cmd --reload
systemctl restart keepalived

配置健康监测脚本/etc/keepalived/nginx_health_check.sh

#!/bin/bash
A=`ps -C nginx --no-header | wc -l`
if [ $A -eq 0 ];then
    /usr/sbin/nginx
    if [ $A -eq 0 ];then
        exit 1
    else
        exit 0
    fi
else
    exit 0
fi

为脚本配置执行权限chmod +x /etc/keepalived/nginx_health_check.sh

systemctl restart keepalived重启两台机器的keepalived,发现主节点持有VIP。

VIP

MySQL配置

编辑配置文件,在/etc/mysql/my.cnf

MySQL

在两个数据库创建用户用于同步数据,创建一个专门用于给从库使用的用户, 用于从库登录主库复制binlog日志。

create user 'backup'@'%' identified by '!!123Qwe123';

给上面创建的用户授予同步复制的权限。

grant replication slave ON *.* to 'backup'@'%';

刷新权限flush privileges;

M1节点绑定自己与M2的关系 (最重要的一步)

change master to
 master_host='M2节点IP',
 master_user='backup',
 master_password='!!123Qwe123',
 master_auto_position=1;

M2节点绑定自己与M1的关系 (最重要的一步)

change master to
 master_host='M1节点IP',
 master_user='backup',
 master_password='!!123Qwe123',
 master_auto_position=1;

M1和M2节点都启动复制start slave

查看从库的工作状态show slave status\G;

观察从库的两个线程是否工作正常

Slave_IO_Running: Yes       #这里显示No说明从库无法登录主库进行复制
Slave_SQL_Running: Yes      #这里显示No说明从库与主库数据不一样无法写入