Keepalived+mysql+nginx

Keepalived的安装及使用教程(mysql+nginx)

  1. centos7.9部署keepalived
    1. keepalived下载

https://www.keepalived.org/software/keepalived-2.2.2.tar.gz

    1. 安装依赖

yum -y install gcc curl openssl-devel libnl3-devel net-snmp-devel

安装依赖时如果遇到yum报错,则需要更换镜像源,可以参考下面的链接:

解决CentOS7的yum无法安装的问题_cenos 安装不了任何服务-CSDN博客

    1. 部署keepalived

tar -xf keepalived-2.2.2.tar.gz

cd keepalived-2.2.2

./configure --prefix=/data/keepalived

make

make install

    1. 查看版本

ln -s/data/keepalived/sbin/keepalived /usr/sbin/keepalived

keepalived -v

    1. 配置启动服务

vim /usr/lib/systemd/system/keepalived.service

[Unit]

Description=LVS and VRRP High Availability Monitor

After=network-online.target syslog.target

Wants=network-online.target

[Service]

Type=forking

PIDFile=/run/keepalived.pid

KillMode=process

EnvironmentFile=-/data/keepalived/etc/sysconfig/keepalived

ExecStart=/data/keepalived/sbin/keepalived  $KEEPALIVED_OPTIONS

ExecReload=/bin/kill -HUP $MAINPID

[Install]

WantedBy=multi-user.target

1.6创建配置文件,两台电脑,一台主机,一台从机,都安装同样的配置,配置文件直接替换为以下内容。

1.6.1主配置文件

mkdir /etc/keepalived

cp /data/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {

    notification_email {

        # 定义收件人

        248737677@qq.com

    }

    notification_email_from 248737677@qq.com

    smtp_server 127.0.0.1

    smtp_connect_timeout 30

    router_id nginx-mysql-ha

}

vrrp_script chk_nginx {

    script "/usr/local/bin/chk_nginx.sh"

    interval 2

    weight -10

    fall 3

    rise 2

}

vrrp_script chk_mysql {

    script "/usr/local/bin/chk_mysql.sh"

    interval 2

    weight -10

    fall 3

    rise 2

}

vrrp_instance VI_1 {

    state MASTER

    interface ens33

    mcast_src_ip 192.168.31.210

    virtual_router_id 51

    priority 100

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 12345

    }

    virtual_ipaddress {

        192.168.31.110

    }

    track_script {

        chk_nginx

        chk_mysql

    }   

}

1.6.2从配置文件

mkdir /etc/keepalived

cp /data/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {

    notification_email {

        # 定义收件人

        248737677@qq.com

    }

    notification_email_from 248737677@qq.com

    smtp_server 127.0.0.1

    smtp_connect_timeout 30

    router_id nginx-mysql-ha-backup

}

vrrp_script chk_nginx {

    script "/usr/local/bin/chk_nginx.sh"

    interval 2

    weight -10

    fall 3

    rise 2

}

vrrp_script chk_mysql {

    script "/usr/local/bin/chk_mysql.sh"

    interval 2

    weight -10

    fall 3

    rise 2

}

vrrp_instance VI_1 {

    state BACKUP

    interface ens33

    mcast_src_ip 192.168.31.19

    virtual_router_id 51

    priority 90  # 从节点的优先级应低于主节点

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 12345

    }

    virtual_ipaddress {

        192.168.31.110

    }

    track_script {

        chk_nginx

        chk_mysql

    }

}

1.7、nginx检测脚本,放到/usr/local/bin目录下

#!/bin/bash

# 检查 Nginx 进程是否存在

nginx_status=$(ps -ef | grep nginx | grep -v grep)

if [ -z "$nginx_status" ]; then

    # 如果 Nginx 没有运行,尝试启动 Nginx

    systemctl start nginx

    sleep 2

    # 再次检查 Nginx 是否启动成功

    nginx_status=$(ps -ef | grep nginx | grep -v grep)

    if [ -z "$nginx_status" ]; then

        # 如果 Nginx 启动失败,退出脚本,这将触发 Keepalived 故障转移

        exit 1

    fi

fi

exit 0

1.8、mysql检测脚本,放到/usr/local/bin目录下

#!/bin/bash

# 尝试连接到 MySQL 服务器并执行简单的查询

mysql -u dbs1000 -p Beta_dbs1000mysql -e "show status" > /dev/null 2>&1

# 如果连接失败,返回非零退出码以触发 Keepalived 故障转移

if [ $? -ne 0 ]; then

    exit 1

fi

exit 0

1.9、keepalived启动、停止、重启命令

systemctl start keepalived

systemctl stop keepalived

systemctl restart keepalived

  1. 两台设备安装nginx

2.1、安装

# 下载nginx安装包

[root@ chenc01 ~]# wget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

# 解压nginx包

[root@ chenc01 ~]# rpm -ivh nginx-release-centos-7-0.el7.ngx.noarch.rpm

# 安装nginx

[root@ chenc01 ~]# yum -y install nginx

# 设置nginx开机自动启动

[root@ chenc01 ~]# systemctl enable nginx.service

# 查看nginx版本

[root@ chenc01 ~]# nginx -v

nginx version: nginx/1.26.1

2.2、nginx验证方法

防火墙要关闭,或者开启指定端口

主机nginx

vi /usr/share/nginx/html/index.html

清空该文件的内容,输入以下内容:

Nginx-master

从机nginx

vi /usr/share/nginx/html/index.html

清空该文件的内容,输入以下内容:

Nginx-slave

然后访问vip地址,192.168.31.110,这个根据自己配置keepalived配置文件里设置的来,这里首先会看到Nginx-master,此时,将主机的keepalived停了,systemctl stop keepalived,再刷新页面,会显示Nginx-slave,然后再将主机的keepalived启动,systemctl start keepalived,再刷新页面,则会看到Nginx-master。

  1. 两台设备安装mysql

3.1实现MySQL主主同步注意下面几点:

1)要保证同步服务期间之间的网络联通。即能相互ping通,能使用对方授权信息连接到对方数据库(防火墙开放3506端口)。

2)关闭selinux。

3)同步前,双方数据库中需要同步的数据要保持一致。这样,同步环境实现后,再次更新的数据就会如期同步了。

3.2安装步骤,将如图所示的文件上传到/opt目录下,并将目录内的install_mysql.sh赋权,chmod 777 install_mysql.sh

然后执行脚本即可: ./install_mysql.sh

Mysql启停命令:service mysqld start  service mysqld stop

3.3、主机无需修改内容,从机需要修改如下内容

vi /etc/my.cnf

将log-bin的名字和server-id改成如图所示内容

3.4、主机mysql设置

[root@keepalived-mysql-1 ~]# mysql -uroot -p

Password:

无需输入密码,直接回车

mysql> GRANT ALL PRIVILEGES ON *.* TO 'dbs1000'@'%' WITH GRANT OPTION;

mysql> FLUSH PRIVILEGES;

mysql> exit

mysql -udbs1000 -pBeta_dbs1000mysql

mysql> show master status;

+-------------------------+----------+--------------+------------------+-------------------+

| File                    | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+-------------------------+----------+--------------+------------------+-------------------+

| mysql-bin-master.000001 |      602 |            | mysql            |                   |

+-------------------------+----------+--------------+------------------+-------------------+

1 row in set (0.00 sec)

记录下 mysql-bin-master.000001 和602,这个是给从机使用的

mysql> grant replication slave on *.* to slave@192.168.31.19 identified by "Beta_dbs1000mysql";

这里的192.168.31.19的ip是从机的ip地址

mysql> flush privileges;

mysql> stop slave;

mysql> change master to master_host='192.168.31,19',master_port=3506,master_user='slave',master_password='Beta_dbs1000mysql',master_log_file='mysql-bin-slave.000001',master_log_pos=614;

这里的master_log_pos填写的从机查询出来的614,这个会根据实际情况有所变动

mysql> start slave;

mysql> show slave status\G

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

3.5、从机mysql设置

[root@keepalived-mysql-1 ~]# mysql -uroot -p

Password:

无需输入密码,直接回车

mysql> GRANT ALL PRIVILEGES ON *.* TO 'dbs1000'@'%' WITH GRANT OPTION;

mysql> FLUSH PRIVILEGES;

mysql> exit

mysql -udbs1000 -pBeta_dbs1000mysql

mysql> grant replication slave on *.* to slave@192.168.31.210 identified by "Beta_dbs1000mysql";

这里的ip192.168.31.210是主机的ip

mysql> flush privileges;

mysql> show master status;

+------------------------+----------+--------------+------------------+-------------------+

| File                   | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+------------------------+----------+--------------+------------------+-------------------+

| mysql-bin-slave.000001 |      614 |             | mysql            |                   |

+------------------------+----------+--------------+------------------+-------------------+

记录下 mysql-bin-slave.000001 和614,这个是给主机使用的

mysql> stop slave;

mysql> change master to master_host='192.168.31.210',master_port=3506,master_user='slave',master_password='Beta_dbs1000mysql',master_log_file='mysql-bin-master.000001',master_log_pos=602;

这里的master_log_pos填写的主机查询出来的602,这个会根据实际情况有所变动

mysql> start slave;

mysql> show slave status\G

Slave_IO_Running: Yes

Slave_SQL_Running: Yes
以上表明双方已经实现了mysql主主同步。

上述文件可访问以下链接进行下载:

keepalived+mysql+nginx资源-CSDN文库

  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值