综合项目: 前端:Keepalived双击热备,节点:LAMP+Discuz搭建,后端:MHA

实验拓扑图如下

在这里插入图片描述

实验环境如下

在这里插入图片描述

实验环境如下

所有主机的防火墙要关闭
后面用到的所有软件包,都在这里了

链接:https://pan.baidu.com/s/1L7j55GvLEuYLFQ1HTWLD8w
提取码:rgi1

一.首先配置后端mysql

关于安装这里不阐述,直接进行MHA配置

在sqlmaster,sqlsalve1,sqlslave2,主机操作,注意看我这前面的主机名,关于在哪个主机上操作,我就不阐述了

1)配置免密登陆

master

[root@sqlmaster ~]# ssh-keygen -t rsa
[root@sqlmaster ~]# ssh-copy-id 192.168.1.11
[root@sqlmaster ~]# ssh-copy-id 192.168.1.12
[root@sqlmaster ~]# ssh-copy-id 192.168.1.13

slave1

[root@sqlslave1 ~]# ssh-keygen -t rsa
[root@sqlslave1 ~]# ssh-copy-id 192.168.1.11
[root@sqlslave1 ~]# ssh-copy-id 192.168.1.12
[root@sqlslave1 ~]# ssh-copy-id 192.168.1.13

slave2

[root@sqlslave2 ~]# ssh-keygen -t rsa
[root@sqlslave2 ~]# ssh-copy-id 192.168.1.11
[root@sqlslave2 ~]# ssh-copy-id 192.168.1.12
[root@sqlslave2 ~]# ssh-copy-id 192.168.1.13

2)上传节点软件包并安装

master

[root@sqlmaster ~]# mkdir mha
在这里插入图片描述
[root@sqlmaster mha]# tar -zxvf mhapath.tar.gz -C /root
[root@sqlmaster mha]# vim /etc/yum.repos.d/centos7.repo

[centos]
name=centos7
baseurl=file:///mnt
enabled=1
gpgcheck=0

[mha]
name=mha
baseurl=file:///root/mhapath
enabled=1
gpgcheck=0

[root@sqlmaster mha]# mount /dev/cdrom /mnt/
[root@sqlmaster mha]# yum -y install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager --skip-broken --nogpgcheck
[root@sqlmaster mha]# rpm -ivh mha4mysql-node-0.57-0.el7.noarch.rpm

给slave节点传过去,也安装上MHA软件
[root@sqlmaster ~]# scp -r /etc/yum.repos.d/* 192.168.1.12:/etc/yum.repos.d/
[root@sqlmaster ~]# scp -r /etc/yum.repos.d/* 192.168.1.13:/etc/yum.repos.d/
[root@sqlmaster ~]# scp -r /root/mha/mha4mysql-node-0.57-0.el7.noarch.rpm 192.168.1.12:/root
[root@sqlmaster ~]# scp -r /root/mha/mha4mysql-node-0.57-0.el7.noarch.rpm 192.168.1.13:/root
[root@sqlmaster ~]# scp -rf mhapath 192.168.1.12:/root
[root@sqlmaster ~]# scp -r mhapath 192.168.1.13:/root

slave1中

[root@sqlslave1 ~]# mount /dev/cdrom /mnt/
[root@sqlslave1 ~]# yum -y install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager --skip-broken --nogpgcheck
[root@sqlslave1 ~]# rpm -ivh /root/mha4mysql-node-0.57-0.el7.noarch.rpm

slave2中

[root@sqlsalve2 ~]# mount /dev/cdrom /mnt/
[root@sqlsalve2 ~]# yum -y install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager --skip-broken --nogpgcheck
[root@sqlsalve2 ~]# rpm -ivh /root/mha4mysql-node-0.57-0.el7.noarch.rpm

3)安装管理节点

安装一下MHA manager管理节点,我这是在master上安装的
master中

[root@sqlmaster ~]# yum install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker perl-CPAN -y
[root@sqlmaster ~]# rpm -ivh /root/mha/mha4mysql-manager-0.57-0.el7.noarch.rpm

4)主从配置

master中

[root@sqlmaster ~]# vim /etc/my.cnf 添加如下两句

log-bin=mysql-bin-master
server-id=1

[root@sqlmaster ~]# systemctl restart mysqld
授权
[root@sqlmaster ~]# mysql -uroot -p123456

mysql>  grant replication slave on *.* to repl@'192.168.1.%' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql>  grant all privileges on *.* to 'root'@'192.168.1.%' identified  by '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges; 
Query OK, 0 rows affected (0.00 sec)
slave1中

[root@sqlslave1 ~]# vim /etc/my.cnf
添加

log-bin=mysql-salve1
server-id=2
log_slave_updates=1

[root@sqlslave1 ~]# systemctl restart mysqld
授权
[root@sqlslave1 ~]# mysql -uroot -p123456

mysql> grant replication slave on *.* to 'repl'@'192.168.1.%' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> grant all privileges on *.* to 'root'@'192.168.1.%' identified  by '123456';
Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> flush privileges; 
Query OK, 0 rows affected (0.01 sec)

建立主从

mysql> change master to master_host='192.168.1.11',master_user='repl',master_password='123456';
Query OK, 0 rows affected, 2 warnings (0.21 sec)

mysql> start slave;
Query OK, 0 rows affected (0.01 sec)

mysql> show slave status\G;
...
            Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
...
slave2中

[root@sqlsalve2 ~]# vim /etc/my.cnf
添加

log-bin=mysql-slave2
server-id=3
log_slave_updates=1

[root@sqlsalve2 ~]# systemctl restart mysqld
授权
[root@sqlsalve2 ~]# mysql -uroot -p123456

mysql> grant replication slave on *.* to 'repl'@'192.168.1.%' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> grant all privileges on *.* to 'root'@'192.168.1.%' identified  by '123456';
Query OK, 0 rows affected, 1 warning (0.04 sec)

mysql>  flush privileges;
Query OK, 0 rows affected (0.15 sec)

主从关系

mysql> change master to master_host='192.168.1.11',master_user='repl',master_password='123456';
Query OK, 0 rows affected, 2 warnings (0.07 sec)

mysql>  start slave;
Query OK, 0 rows affected (0.08 sec)

mysql> show slave status\G
...
            Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
...
5)两台slave设置临时只读

[root@sqlslave1 ~]# mysql -uroot -p123456 -e 'set global read_only=1’
[root@sqlsalve2 ~]# mysql -uroot -p123456 -e 'set global read_only=1’

6)MHA设置
master(MHA manager)中

[root@sqlmaster ~]# mkdir -p /etc/masterha
[root@sqlmaster ~]# mkdir -p /var/log/masterha/app1
[root@sqlmaster ~]# vim /etc/masterha/app1.cnf

[server default]
manager_workdir=/var/log/masterha/app1
manager_log=/var/log/masterha/app1/manager.log
master_binlog_dir=/data/mysql/data
user=root
password=123456
ping_interval=1
remote_workdir=/tmp
repl_user=repl
repl_password=123456
ssh_user=root

[server1]
hostname=192.168.1.11
port=3306

[server2]
hostname=192.168.1.12
port=3306
candidate_master=1
check_repl_delay=0

[server3]
hostname=192.168.1.13
port=3306

在slave1和slave2中,设置不自动清除中继日志
[root@sqlslave1 ~]# mysql -uroot -p123456 -e 'set global relay_log_purge=0’
[root@sqlsalve2 ~]# mysql -uroot -p123456 -e 'set global relay_log_purge=0’

7)检测群集状态
master(MHA manager)中

SSH检测
[root@sqlmaster ~]# masterha_check_ssh --conf=/etc/masterha/app1.cnf
在这里插入图片描述
环境检测
[root@sqlmaster ~]# masterha_check_repl --conf=/etc/masterha/app1.cnf
在这里插入图片描述

8)配置VIP地址
master(MHAmanager)中

[root@sqlmaster ~]# ifconfig ens33:1 192.168.1.99 netmask 255.255.255.0 up
[root@sqlmaster ~]# ifconfig

...

ens33:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.99  netmask 255.255.255.0  broadcast 192.168.1.255
        ether 00:0c:29:ea:b3:4d  txqueuelen 1000  (Ethernet)

修改配置文件,支持VIP
添加下面句话,在[server default]段中
master_ip_failover_script=/usr/bin/master_ip_failover
如下

[server default]
manager_workdir=/var/log/masterha/app1
manager_log=/var/log/masterha/app1/manager.log
master_binlog_dir=/data/mysql/data
user=root
password=123456
ping_interval=1
remote_workdir=/tmp
repl_user=repl
repl_password=123456
ssh_user=root
master_ip_failover_script=/usr/bin/master_ip_failover

[server1]
hostname=192.168.1.11
port=3306

[server2]
hostname=192.168.1.12
port=3306
candidate_master=1
check_repl_delay=0

[server3]
hostname=192.168.1.13
port=3306

编写VIP自动切换脚本

[root@sqlmaster ~]# vim /usr/bin/master_ip_failover

#!/usr/bin/env perl
use strict;
use warnings FATAL => 'all';

use Getopt::Long;

my (
    $command,          $ssh_user,        $orig_master_host, $orig_master_ip,
    $orig_master_port, $new_master_host, $new_master_ip,    $new_master_port
);

my $vip = '192.168.1.99/24';
my $key = '1';
my $ssh_start_vip = "/sbin/ifconfig ens33:$key $vip";
my $ssh_stop_vip = "/sbin/ifconfig ens33:$key down";

GetOptions(
    'command=s'          => \$command,
    'ssh_user=s'         => \$ssh_user,
    'orig_master_host=s' => \$orig_master_host,
    'orig_master_ip=s'   => \$orig_master_ip,
    'orig_master_port=i' => \$orig_master_port,
    'new_master_host=s'  => \$new_master_host,
    'new_master_ip=s'    => \$new_master_ip,
    'new_master_port=i'  => \$new_master_port,
);

exit &main();

sub main {

    print "\n\nIN SCRIPT TEST====$ssh_stop_vip==$ssh_start_vip===\n\n";

    if ( $command eq "stop" || $command eq "stopssh" ) {

        my $exit_code = 1;
        eval {
            print "Disabling the VIP on old master: $orig_master_host \n";
            &stop_vip();
            $exit_code = 0;
        };
        if ($@) {
            warn "Got Error: $@\n";
            exit $exit_code;
        }
        exit $exit_code;
    }
    elsif ( $command eq "start" ) {

        my $exit_code = 10;
        eval {

给与执行权限
[root@sqlmaster ~]# chmod +x /usr/bin/master_ip_failover

再次检测,结果应该和上面检测结果一样才对
[root@sqlmaster ~]# masterha_check_repl --conf=/etc/masterha/app1.cnf
在这里插入图片描述

9)开启监控

运行如下指令,然后回车

nohup masterha_manager --conf=/etc/masterha/app1.cnf \
   --remove_dead_master_conf  --ignore_last_failover < /dev/null > \
   /var/log/masterha/app1/manager.log 2>&1 &

查看状态,如下是成功
[root@sqlmaster ~]# masterha_check_status --conf=/etc/masterha/app1.cnf
app1 (pid:5326) is running(0:PING_OK), master:192.168.1.11

看一下日志
[root@sqlmaster ~]# cat /var/log/masterha/app1/manager.log
在这里插入图片描述

二.配置中间的Web服务器

下面都是Web1上的配置
1)安装并启动apache

在这里插入图片描述
[root@web1 ~]# tar -zxvf httpd-2.4.38.tar.gz
[root@apache ~]# yum -y install gcc gcc-c++ apr apr-devel cyrus-sasl-devel expat-devel libdb-devel openldap-devel apr-util-devel apr-util pcre-devel pcre openssl*

[root@web1 ~]# cd httpd-2.4.38/
[root@web1 httpd-2.4.38]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi --enable-ssl --enable-mpms-shared=all

[root@web1httpd-2.4.38]# make && make install

[root@web1~]# cp /usr/local/httpd/bin/apachectl /etc/init.d/apache
[root@web1 ~]# vim /etc/init.d/apache
在第一行后添加两行内容,如下#号也要写上,注意格式要一致,空格都要一致,不然会报错

#chkconfig: 2345 11 88
# despriction:httpd apache server

[root@web1 ~]# chkconfig --add apache

[root@web1 ~]# vim /usr/local/httpd/conf/httpd.conf
我这里主机名是web1你们写你们的主机名即可,然后保存退出即可
在这里插入图片描述
[root@web1 ~]# /etc/init.d/apache start
[root@web1 ~]# netstat -anpt | grep 80
tcp6 0 0 :::80 :::* LISTEN 50482/httpd

2)安装PHP

PHP的作用是用来连接后端的mysql,mysql返回数据后,PHP进行运算返回客户端动态页面
在这里插入图片描述
libmcrypt-2.5.7:是PHP的依赖包,因为系统的yum没有这个安装包,这里安装上就行了

[root@web1 ~]# tar zxvf libmcrypt-2.5.7.tar.gz
[root@web1 ~]# cd libmcrypt-2.5.7/
[root@web1 libmcrypt-2.5.7]# ./configure --prefix=/usr/local/libmcrypt && make && make install
[root@web1 ~]# mount /dev/cdrom /mnt/

[root@web1 ~]# yum -y install php-mcrypt libmcrypt libmcrypt-devel autoconf freetype gd libmcrypt libpng libpng-devel libjpeg libxml2 libxml2-devel zlib curl curl-devel re2c libmcrypt-devel freetype-devel libjpeg-devel bzip2-devel

[root@web1 ~]# tar -zxvf /root/php-5.6.36.tar.gz -C /usr/local/src/
[root@web1 php-5.6.36]# ./configure --prefix=/usr/local/php5.6 --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-openssl --enable-fpm --enable-sockets --enable-sysvshm --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --with-mhash --with-mcrypt=/usr/local/libmcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/usr/local/php5.6/etc/ --with-bz2 --enable-maintainer-zts --with-apxs2=/usr/local/httpd/bin/apxs

这里解释几个重要的参数
--with-mysql=mysqlnd
--with-pdo-mysql=mysqlnd
--with-mysqli=mysqlnd

上面这三个选项的作用是,后端数据库不和PHP在一台服务器上,需要添加这项项,就是连接数据库驱动

--with-apxs2:必须添加这项,表示把PHP作为apache的一个模块使用,apache的所有功能,都是模块的形式体现

--with-config-file-path=/usr/local/php5.6/etc :配置文件存放路径

没有提到的参数不是很重要,但最好也都加上,以防止后面要使用

[root@web1 php-5.6.36]# make && make install
[root@web1 php-5.6.36]# cp php.ini-production /usr/local/php5.6/etc/php.ini

3)配置PHP,测试后端数据库VIP

让Apache支持PHP,

添加两处,下面第一处
在这里插入图片描述
第二处,添加这句

AddType application/x-httpd-php .php .phtml

在这里插入图片描述
保存退出
[root@web1 ~]# /etc/init.d/httpd restart

创建测试页面
[root@web1 ~]# vim /usr/local/httpd/htdocs/index.php

<?php
phpinfo();
?>

[root@web1 htdocs]# /etc/init.d/httpd restart

访问http://192.168.1.14/
在这里插入图片描述
先去sqlmaster(主)上创建一个测试账号,也是一会discuz论坛账号
[root@sqlmaster ~]# mysql -uroot -p123456

mysql> grant all on *.* to dtest@'%' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

回到web1中,测试连接,这里指定后端mysql的VIP就可以
[root@web1 ~]# cd /usr/local/httpd/htdocs/
[root@web1 htdocs]# vim ptest.php

<?php
$link=mysql_connect('192.168.1.99','dtest','123456');
if ($link)echo "connection success......";
mysql_close();
?>

访问测试,应该是如下页面,如果是空白页面,就说明配置有误
http://192.168.1.14/ptest.php
在这里插入图片描述

安装discuz论坛

discuz是开源的网址论坛软件,是国内较火的论坛软件
在这里插入图片描述
[root@web1 ~]# unzip Discuz_7.2_FULL_SC_UTF8.zip -d discuz
[root@web1 ~]# cd discuz/
[root@web1 discuz]# cp -r upload /usr/local/httpd/htdocs/discuz

[root@web1 ~]# vim /usr/local/php5.6/etc/php.ini
改为On
在这里插入图片描述
[root@web1 ~]# /etc/init.d/httpd restart

赋予权限,一会浏览器用户,使用daemon用户去安装论坛,所以要有权限
[root@web1 ~]# chown -R daemon:daemon /usr/local/httpd/htdocs/

访问
http://192.168.1.14/discuz/install/index.php
在这里插入图片描述
继续下一步,到我如下,按我下图填写
在这里插入图片描述
等待安装,到如下,跳过
在这里插入图片描述
在这里插入图片描述

下面就是配置Web2服务器

因为web1上都已经安装好了,这里直接把Web1安装好的PHP和Discuz,传给Web2

web1中

[root@web1 ~]# scp -r /usr/local/httpd/ root@192.168.1.15:/usr/local
[root@web1 ~]# scp -r /usr/local/php5.6 root@192.168.1.15:/usr/local
[root@web1 ~]# scp -r /usr/local/libmcrypt root@192.168.1.15:/usr/local/

Web2中

Web2中也需要安装一些依赖包,才可以运行
[root@web2 ~]# yum -y install gcc gcc-c++ apr apr-devel cyrus-sasl-devel expat-devel libdb-devel openldap-devel apr-util-devel apr-util pcre-devel pcre openssl*

[root@web2 ~]# yum -y install php-mcrypt libmcrypt libmcrypt-devel autoconf freetype gd libmcrypt libpng libpng-devel libjpeg libxml2 libxml2-devel zlib curl curl-devel re2c bzip2-devel libmcrypt-devel freetype-devel libjpeg-devel

[root@web2 ~]# cp /usr/local/bin/apachectl /etc/init.d/
[root@web2 ~]# /etc/init.d/httpd start
[root@web2 htdocs]# chown -R daemon:daemon /usr/local/httpd/htdocs/

访问并测试数据一致性

http://192.168.1.15/discuz/
可以访问,注册一个账号
在这里插入图片描述
如下
在这里插入图片描述
到web1的论坛中,登陆zhangsan账号,可以登陆
http://192.168.1.14/discuz/
在这里插入图片描述
这是因为两个discuz后端的数据库都是一个,数据都是在数据库中的,所以其中数据都是一样的

三.配置前端的Keepliave热备

kemaster中

就是keepliave,中的master主机
[root@kemaster ~]# mount /dev/cdrom /mnt/
[root@kemaster ~]# yum -y install ipvsadm keepalived
[root@kemaster ~]# cd /etc/keepalived/
[root@kemaster keepalived]# rm -rf keepalived.conf
[root@kemaster keepalived]# vim keepalived.conf
配置文件中可以有注释

global_defs {                                                   #全局配置
   router_id master                                     #LVS服务器节点名(不能相同)
}

vrrp_instance VI_1 {
    state MASTER                                                #设置热备类型(MASTER为主,BACKUP为备)
    interface ens33                                     #热备份接口
    virtual_router_id 51                                #热备份组号(必须相同)
    priority 100                                                #优先级,主的优先级要比备的高
    advert_int 1                                                #hello time
    authentication {                                    #密码认证
        auth_type PASS                          #认证的类型为密码认证
        auth_pass 1111
    }
    virtual_ipaddress {                                 #虚拟IP
        192.168.1.200
    }
}

virtual_server 192.168.1.200 80 {                       #创建虚拟服务器 VIP 和端口
    delay_loop 6                                                #多长时间检测一次real server 单位为秒
    lb_algo rr                                                  #调度算法,rr代表轮询
    lb_kind DR                                          #集群工作模式
    persistence_timeout 0                               #健康监测时间,设置0为不检测
    protocol TCP                                                #使用为TCP协议

    real_server 192.168.1.14 80 {                       #添加真实服务器和端口
        weight 1                                                #分配权重
        TCP_CHECK {                                     #检测模块,为TCP连接
            connect_port 80                     #检测端口
            connect_timeout 3                   #连接超时时间
            nb_get_retry 3                      #重试次数
            delay_before_retry 3                #重试间隔时间
        }
    }

    real_server 192.168.1.15 80 {                       #添加真实服务器和端口
        weight 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}
keslave中

[root@keslave ~]# yum -y install keepalived ipvsadm
[root@keslave ~]# cd /etc/keepalived/
[root@keslave keepalived]# rm -rf keepalived.conf
[root@keslave keepalived]# vim keepalived.conf

lobal_defs {
   router_id slave  
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.200
    }
}

virtual_server 192.168.1.200 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    persistence_timeout 0
    protocol TCP

    real_server 192.168.1.14 80 {
        weight 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }

    real_server 192.168.1.15 80 {
        weight 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

两台都启动keepalived
[root@kemaster ~]# systemctl restart keepalived
[root@keslave keepalived]# systemctl restart keepalived

去到kemaster查看VIP地址

在这里插入图片描述

配置Web节点,内核参数

Web1
[root@web1 ~]# vim /root/vip.sh

#!/bin/sh
VIP=192.168.1.200
case  $1  in                                                                                                                                                                                    
start)                                                                                                                                                                                          
    ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
    /sbin/route add -host $VIP dev lo:0
    echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
    echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
    echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
    echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
    sysctl -p >/dev/null 2>&1
    echo "RealServer Start OK"
    exit 0
;;                                                                                                                                                                                              
stop)
    ifconfig lo:0 down
    route del $VIP >/dev/null 2>&1
    echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
    echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
    echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
    echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
    echo "RealServer Stoped OK"
    exit 1
;;
*)
    echo "Usage: $0 {start|stop}"
;;
esac

[root@web1 ~]# chmod +x /root/vip.sh
[root@web1 ~]# cd /root/
[root@web1 ~]# ./vip.sh start

Web2

Web2同这个web1操作一样,复制脚本内容,赋予权限并执行,这里不演示了

四.访问测试

通过VIP的地址访问Discuz论坛,成功
在这里插入图片描述

测试和后端mysql通信

右上角登陆,登陆刚刚创建的 zhangsan 用户,可以登陆上去

在这里插入图片描述

通过查看日志,来查看是否轮询

web1
[root@web1 ~]# tail -f /usr/local/httpd/logs/access_log

web2
[root@web2 ~]# tail -f /usr/local/httpd/logs/access_log

只要刷新页面一次,那个符号应该在web1和web2中变动,表示那个终端有变动
在这里插入图片描述
当然也可以观察,配置文件,访问一次肯定只有一个Web有日志产生,就是那个GET请求

五.故障切换keepaliaved和MHA

关闭后端mysql的当前master,关闭当前keepalived主
[root@sqlmaster ~]# systemctl stop mysqld
[root@kemaster ~]# systemctl stop keepalived

KeepalivedVIP漂移了
在这里插入图片描述

MHA也已经转换
[root@sqlmaster ~]# tail -n20 /var/log/masterha/app1/manager.log
在这里插入图片描述

另外如果MHA老是切换失败,可以先关闭监控再打开,命令如下

关闭
[root@sqlmaster ~]# masterha_stop --conf=/etc/masterha/app1.cnf

开启MHA监控

nohup masterha_manager --conf=/etc/masterha/app1.cnf \
   --remove_dead_master_conf  --ignore_last_failover < /dev/null > \
   /var/log/masterha/app1/manager.log 2>&1 &
访问测试

新打开一个网页访问http://192.168.1.200/discuz/,使用用户zhangsan登陆,可以登陆即可

在这里插入图片描述

实验完毕 !!!

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值