高可用说起来感觉很高大上,我刚接触的时候也是一头雾水,但是需求的时候很容易理解的,当一台服务器挂了另一台能够马上顶上去继续提供服务,这就叫做高可用,需求其实不难理解,只是需要自身根据项目的实际需求还有环境进行搭建环境,每一步还有整体的安装方法都需要自己去踩坑的,而且这个坑非常多,要不停的复现各种问题,然后尝试各种思路来解决碰到的问题,而且我们的客户大部分都是离线环境,也就是不接触外网的,所以安装起来就会有很多问题,我所需要达到的目的就是,根据我的文档步骤安装就能实现需求,所以工作量是可想而知的,你需要下各种软件包,还有每个软件包的版本会不会有不兼容的情况,当这个软件出现问题我的虚拟机需要重新回滚到刚开始的快照,都是一些麻烦点,所以当一个先驱踩坑者还是需要划分大量的时间的

前言:为了减少三维数据中心可视化管理系统的停工时间,保持其服务的高度可用性。同时部署多套同样的三维可视化系统,让三维数据中心可视化系统同时部署并运行到多个服务器上。同时提供一个虚拟IP,然后外面通过这个虚拟IP来访问三维可视化管理系统,当一台实体服务器挂掉时会自动的切到另一条服务器,但是这个虚拟IP依然能提供服务。

要实现高可用性,需要保证数据的一致,因此需要保证这几台服务器上的数据库中的数据一致;同时还需要保证上传的文件信息一致。最后需要通过软件监听程序来监听并且挂掉时进行自动切换。

# 一、什么是高可用?

高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。

假设系统一直能够提供服务,我们说系统的可用性是100%。

如果系统每运行100个时间单位,会有1个时间单位无法提供服务,我们说系统的可用性是99%。

很多公司的高可用目标是4个9,也就是99.99%,这就意味着,系统的年停机时间为8.76个小时。

百度的搜索首页,是业内公认高可用保障非常出色的系统,甚至人们会通过www.baidu.com 能不能访问来判断“网络的连通性”,百度高可用的服务让人留下啦“网络通畅,百度就能访问”,“百度打不开,应该是网络连不上”的印象,这其实是对百度HA最高的褒奖。-----摘选自知乎

# 二、如何保障系统的高可用

我们都知道,单点是系统高可用的大敌,单点往往是系统高可用最大的风险和敌人,应该尽量在系统设计的过程中避免单点。方法论上,高可用保证的原则是“集群化”,或者叫“冗余”:只有一个单点,挂了服务会受影响;如果有冗余备份,挂了还有其他backup能够顶上。

保证系统高可用,架构设计的核心准则是:冗余。

有了冗余之后,还不够,每次出现故障需要人工介入恢复势必会增加系统的不可服务实践。所以,又往往是通过“自动故障转移”来实现系统的高可用。-----摘选自知乎

# 人话:两台或者多台服务器启动着相同的服务,如果有一台故障,另一台自动接管,我们将这个称之为高可用;

类似服务器:冗余,类似服务器有2-4个电源,其中一个断了另外一个启用.或者是ups

# 上图:

![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181645979-1470463213.png)

# 安装keepalived:

### 离线安装方法:因为我们的大部分客户都是属于数据中心,并不会连接外网,所以采取离线安装的方式比较多,在线安装的方法非常简单,如下命令即可,在安装keepalived之前确保安装了摄像头的那一套东西,因为这里涉及到需要安装openssl的模块,如果没有装请先装nginx摄像头相应的软件

### keepalived的运行模式:

准备条件:

需要三个ip,并且保证是局域网,相互之间ping的通,前面两个ip好理解,两台服务器,第三个ip就是一个虚拟ip,就是空余ip没被启用的即可,我们访问系统的话就是通过这个虚拟ip访问

#### 优先级

VRRP根据优先级来确定虚拟路由器中每台路由器的地位;

#### 非抢占方式

如果Backup路由器工作在非抢占方式下,则只要Master路由器没有出现故障Backup路由器即使随后被配置了更高的优先级也不会成为Master路由器;

#### 抢占方式

如果Backup路由器工作在抢占方式下,当它收到VRRP报文后,会将自己的优先级与通告报文中的优先级进行比较。如果自己的优先级比当前的Master路由器的优先级高,就会主动抢占成为Master路由器;否则,将保持Backup状态.

### 
```plain
yum install keepalived-y   //这是在线安装方式,没有网络的话直接往下看
```
下载文件
链接: https://pan.baidu.com/s/1EhQWMzks8pKTeKEgGgtSCg 
提取码: y27r

# 1.上传文件

1.首先把文件传到opt下面

![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646302-2110220730.png)

# 2.解压安装

```plain
cd /opt   
```

```plain
tar -zxvf keepalived-2.0.20.tar.gz
```
![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181645999-1175174957.png)

# 3.编译

```plain
cd  keepalived-2.0.20
```

![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646345-1957530538.png)

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

会发现有一个报错

![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646279-243724913.png)

# 4.报错信息然后安装

```plain
cd /opt
```

```plain
rpm -ivh libnl-1.1.4-3.el7.x86_64.rpm --force --nodeps
```

```plain
rpm -ivh libnl-devel-1.1.4-3.el7.x86_64.rpm --force --nodeps
```

```plain
cd keepalived-2.0.20
```

```plain
./configure --prefix=/usr/local/keepalived
```
![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646258-962223562.png)

没有报错了,继续往下执行

```plain
 make && make install
```
输入上面的命令会报以下错误
![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646044-1536917721.png)

解决:

```plain
cd /usr/local/lib64
```

```plain
export LIBRARY_PATH=/usr/local/lib64
```

```plain
cd /opt/keepalived-2.0.20
```

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

```
 make && make install
```
执行完之后也没报错了
![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646262-1516070487.png)

# 5.初始化keepalived

```plain
 cp /opt/keepalived-2.0.20/keepalived/etc/init.d/keepalived /etc/init.d/
```

```plain
 cp /opt/keepalived-2.0.20/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
```

```plain
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
```

```plain
mkdir -p /etc/keepalived
```

```plain
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
```

```plain
chmod +x /etc/init.d/keepalived
```

# 6.添加keepalived到开机启动

```plain
chkconfig -add keepalived 
```
![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646324-337855398.png)

```plain
chkconfig keepalived on 
```
![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646068-1306263459.png)

# 7.启动、关闭、重启

```plain
service keepalived start  //启动
```

```plain
service keepalived stop   //停止
```

```plain
service keepalived restart   //重启
```

当我们启动使用  service keepalived start 启动的时候会报错

![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646279-715535011.png)

解决:

```plain
ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1
```

```plain
ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
```
 
在输入命令启动

```plain
service keepalived start
```
![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646325-492598766.png)

# 以上的1-7步骤在备机上也需要装一下,请注意

# 8.配置keepalived

主机:192.168.10.65

备机:192.168.10.38

虚拟ip:192.168.10.78

## 在主机下操作:

```plain
vi /etc/keepalived/keepalived.conf
```
以下就是我们需要修改的内容,这里注意下最后面一个
> virtual_ipaddress {
>       192.168.10.78/24 dev ens33 label ens33:1  #推荐配置
>      #192.168.10.78(有的是这么写的,但是如果这么写,当备机切换为主机的时候会黑屏3分钟)
>    }

前面一串就是虚拟机的ip,后面按照我的格式写,最后那个ens33:1,绑定的就是enss33下面子网卡的第二块,默认是从0开始的,所以就是第一块,这里也可以直接填虚拟机ip,但是当备机切换为主机的时候会黑屏3分钟,这里我已经被坑的差点爬不起来了,真的![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646279-437550667.png)

![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646376-1168927504.png)

填完直接  :wq!保存退出即可

上面图里面说的网卡名称查询方法:

```plain
ip addr
```
![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646343-619947753.png)

然后重启keepalived

```plain
service keepalived restart
```

![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646054-2004387284.png)

```plain
service keepalived status     //查看keepalived的状态,下图表示已经启动
```

![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646344-569302183.png)

## 在备机下操作:

```plain
vi /etc/keepalived/keepalived.conf
```
以下就是我们需要修改的内容
![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646301-1181930947.png)

填完直接  :wq!保存退出即可

然后重启keepalived

```plain
service keepalived restart
```

![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646054-2004387284.png)

```plain
service keepalived status     //查看keepalived的状态,下图表示已经启动
```

![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646343-1323330244.png)

# 9.验证

启动后看对应的虚拟IP地址是否生成,当主机关掉或者其对应的keepalived服务挂掉后备机是否生成对应的虚拟IP,以及主机重启工作时虚拟IP是否重新漂移到主机上。

我们可以相互ping一下,可以看见是通的

![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646299-169520540.png)

上面我们讲过,默认访问就是主机,主机挂了就是切换到备机,我们只需要查看主机上面的ip,上面很明显有两个ip,其中有一个就是虚拟机ip

![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646325-246776232.png)

当我们把主机关掉或者主机的keepalived服务关掉之后看能否重新漂移回来呢?

![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646344-1580941440.png)

我们再看看ip addr,很明显已经没有了虚拟ip

![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646351-1028345836.png)

我们已经成功关掉了主机的keepalived服务,我们看下备机上能够看到虚拟ip吗

我们在备机上操作,我们可以看到虚拟ip跑到了这上面,看到这里你是不是对keepalived的工作模式有了一个浅显的认识,接下来我们开启主机的keepalived服务,能够在跳过去嘛.这就是模拟当主机已经恢复服务了,看能否自动跳转过去

![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646299-169520540.png)

启动主机的keepalived服务:

```plain
service keepalived start
```

```plain
service keepalived status
```
![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646351-285451722.png)

查看ip,很明显已经切换回来了,自此已经配置完成了keepalived服务

![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646299-169520540.png)

# mysql主主备份:

保证各服务器上的数据库中的数据一致,因此需要开启数据库同步机制。由于是一整套系统,并且系统内含数据库。由于任何一台服务器都有可能被选中,因此要让所有的数据库上的数据都是最新的,任何一个服务器上的数据发生变化时都要自动的同步到其他的服务器上。

三维可视化管理系统使用的时Mysql数据库,这里采用的时主-主备份机制进行同步的。

主一数据库:192.168.10.38

主二数据库:192.168.10.65

## 主数据库1:

编辑数据库

```plain
vi /etc/my.cnf
```

```plain
# 开启二进制同步
log-bin=mysql-bin

# 设置ID,不能重复,可以使用IP最后一位数字 
server-id=129

# 需要同步的数据名称,多个数据库则要重复设置: bin-do-db,bin-ignore-db为互斥关系, 只需设置其中一项即可
replicate-do-db=itv

# 自增长字段初始值为1
auto-increment-offset=2

# 自增长字段增量值
auto-increment-increment=2

# 跳过所有复制的错误
slave-skip-errors=all
```

![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646428-153819896.png)

```plain
systemctl restart mysqld   //重启mysql服务
```

## 主数据库2:

编辑数据库

```plain
vi /etc/my.cnf
```

```plain
# 开启二进制同步
log-bin=mysql-bin

# 设置ID,不能重复,可以使用IP最后一位数字 
server-id=128

# 需要同步的数据名称,多个数据库则要重复设置: bin-do-db,bin-ignore-db为互斥关系, 只需设置其中一项即可
replicate-do-db=itv

# 自增长字段初始值为1
auto-increment-offset=1

# 自增长字段增量值
auto-increment-increment=2

# 跳过所有复制的错误
slave-skip-errors=all
```

![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646375-980138967.png)

```plain
systemctl restart mysqld   //重启mysql服务
```

## 创建mysql复制账户:

### 在主一数据库操作:

为主二的所在的ip创建一个账号密码为root1,这样就能够允许远程访问本机数据库了

登录mysql:

```plain
mysql -uroot -proot   //登录mysql
```

```plain
use mysql;
```

```plain
grant replication slave on *.* to root1@'192.168.10.68' identified by 'root1';
```

赋予权限:如果就这样连接的话虽然能访问但还是看不了数据的,所以需要赋予root1权限

```plain
update user set `Select_priv` = 'Y',`Insert_priv` = 'Y',`Update_priv` = 'Y',`Delete_priv` = 'Y',`Create_priv` = 'Y',`Drop_priv` = 'Y',
`Reload_priv` = 'Y',`Shutdown_priv` = 'Y',`Process_priv` = 'Y',`File_priv` = 'Y',`Grant_priv` = 'Y',`References_priv` = 'Y',
`Index_priv` = 'Y',`Alter_priv` = 'Y',`Show_db_priv` = 'Y',`Super_priv` = 'Y',`Create_tmp_table_priv` = 'Y',
`Lock_tables_priv` = 'Y',`Execute_priv` = 'Y',`Repl_slave_priv` = 'Y',`Repl_client_priv` = 'Y',`Create_view_priv` = 'Y',
`Show_view_priv` = 'Y',`Create_routine_priv` = 'Y',`Alter_routine_priv` = 'Y',`Create_user_priv` = 'Y',`Event_priv` = 'Y',
`Trigger_priv` = 'Y',`Create_tablespace_priv` = 'Y'
where user='root1';
```

### 立即生效:

```plain
flush privileges;
```

### 在主二数据库操作:

为主一的所在的ip创建一个账号密码为root1,这样就能够允许远程访问本机数据库了

登录mysql:

```plain
mysql -uroot -proot   //登录mysql
```

```plain
use mysql;
```

```plain
grant replication slave on *.* to root1@'192.168.10.38' identified by 'root1';
```

赋予权限:如果就这样连接的话虽然能访问但是访问不了itv的数据,所以需要赋予root1权限

linux下:

```plain
update user set `Select_priv` = 'Y',`Insert_priv` = 'Y',`Update_priv` = 'Y',`Delete_priv` = 'Y',`Create_priv` = 'Y',`Drop_priv` = 'Y',
`Reload_priv` = 'Y',`Shutdown_priv` = 'Y',`Process_priv` = 'Y',`File_priv` = 'Y',`Grant_priv` = 'Y',`References_priv` = 'Y',
`Index_priv` = 'Y',`Alter_priv` = 'Y',`Show_db_priv` = 'Y',`Super_priv` = 'Y',`Create_tmp_table_priv` = 'Y',
`Lock_tables_priv` = 'Y',`Execute_priv` = 'Y',`Repl_slave_priv` = 'Y',`Repl_client_priv` = 'Y',`Create_view_priv` = 'Y',
`Show_view_priv` = 'Y',`Create_routine_priv` = 'Y',`Alter_routine_priv` = 'Y',`Create_user_priv` = 'Y',`Event_priv` = 'Y',
`Trigger_priv` = 'Y',`Create_tablespace_priv` = 'Y'
where user='root1';
```
windows下:
```plain
GRANT ALL PRIVILEGES ON *.* TO 'root1'@'192.168.10.38' IDENTIFIED BY 'root1' WITH GRANT OPTION;

grant all privileges on *.* to 'sk'@'localhost';  //试下这条
```
### 立即生效:

```plain
flush privileges;
```

### 测试能否访问:

在主一登录主二的数据库:

```plain
mysql -h192.168.10.65 -uroot1 -p    //登录主二的数据库
```
发现连接失败
![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646350-749187967.png)

我们查看3306端口发现被占用,我们开启3306端口,我们在主备机都需要开放此端口

![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646353-444059659.png)

应该是防火墙的原因,

```plain
firewall-cmd --zone=public --add-port=3306/tcp --permanent
```

![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646376-595337549.png)

然后重启防火墙

```plain
systemctl restart firewalld.service
```

继续连接,发现可以连接成功,并且可以查看数据

![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646355-1412005539.png)

```plain
show databases;  //查看数据库
```
![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646082-539744589.png)

同理,在主二的数据库可以访问主一的数据库看下:

```plain
mysql -h192.168.10.51 -uroot1 -p    //登录主一的数据库
```

```plain
show databases;  //查看数据库
```

![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646376-32653946.png)

### 重启数据库

```plain
主数据库1: systemctl restart mysqld
```

```plain
主数据库2: systemctl restart mysqld 
```

## 互告bin-log信息

登录本地的mysql

主主同步还有主从同步都是基于binlog的原理进行,相当于我们打开了这个开关,每次操作数据库都会产生一个binlog日志,然后把binlog日志进行发给对方进行执行,这样数据就保持同步了

首先进入MySQL命令行:

![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646147-1586380148.png)

### 主数据库1:

查看日志: show master status;

![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646350-562377969.png)

设置同步:

```plain
change master to master_host = '192.168.10.65',master_user='root1',master_password='root1',master_port=3306,master_log_file='mysql-bin.000002',master_log_pos=154;
```
![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646094-95575269.png)

备注: master_log_file与File值一致, master_log_pos与Position值一致

开始同步: start slave;

![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646377-1385409813.png)

查看同步情况:

```plain
show slave status\G;
```

当看到了两个yes,即:Slave_IO_Running: Yes

Slave_SQL_Running: Yes

说明已经配置成功了,但是这里有一个显示为no,明显有问题

![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646431-111181207.png)

解决办法:

```plain
stop slave;
```

```plain
reset slave;
```

```plain
start slave;
```

然后我们继续查看同步情况;

```plain
show slave status\G;
```

![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646427-881319889.png)

灰常完美

### 主数据库2:

![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646147-1586380148.png)

这里其实跟上面的主数库一是一样的操作

```plain
show master status;
```
![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646454-1986320446.png)

```plain
change master to master_host = '192.168.10.51',master_user='root1',master_password='root1',master_port=3306,master_log_file='mysql-bin.000002',master_log_pos=154;
```

**备注**: master_log_file与File值一致, master_log_pos与Position值一致

开始同步:

```plain
  start slave;
```
![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646429-35376031.png)

查看同步情况:

```plain
 show slave status\G;
```
![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646394-123304106.png)

当看到了两个yes,即:

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

说明已经配置成功了,如果这里的slave_io_Running显示no依然采用上面的办法操作即可

# 开启keepalivedde 项目测试:

在主一和主二机器上分别部署项目,并且导入相同的数据库,然后用forever启动,这个在之前的部署环境就有讲过,此处不再赘述,我们开启项目

## 在主机上开启机房:

![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646393-981806362.png)

## 在备机上也开启机房:

![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646450-1149992046.png)

然后我们开始访问这两个项目(注意此时的防火墙,虚拟ip的也要把8081端口打开):

![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646428-1530772274.png)

![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646410-1933338552.png)

我们发现两个项目都可以顺利的打开,这时候我们就使用虚拟ip进行访问,因为实际我们也是通过这个虚拟ip进行访问的,我们的虚拟ip是192.168.10.78,可以顺利访问了

![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646399-162194271.png)

现在我们就关掉主机的机房程序,看他能不能访问

关掉主机服务:

```plain
forever stopall
```

![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646452-119054494.png)

然后关掉主机的keepalived的服务:

```plain
service keepalived stop
```

![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646450-2096330865.png)

这里插入一下知识点:

在实际项目中,keepalived并不知道我们的机房程序已经挂了,所以要时刻监听8081端口的状态,如果8081端口监听不到那么就停止keepalived这个服务,以下是shell脚本,然后我们设置监听一分钟即可

```plain
crontab -e    //设置1分钟检测一次
```

```plain
*/1 * * * * /usr/bin/bash /home/t3.sh
```

然后在在/home/ 下写一t3.sh文件,内容如下

```plain
A=`netstat -lnp | grep 8081 | wc -l`

if [ $A -eq 0 ]; then
    # echo "keepalived 应该关闭了"
    /usr/sbin/service keepalived stop
fi
```

现在我们继续访问主机的程序,然后在访问虚拟ip

![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646451-536914110.png)

可以看到,主机程序已经访问不到,那么访问虚拟ip呢(这里注意虚拟ip机大的防火墙一定要关闭或者是开放8081端口)

可以看到,虚拟ip已经飘到备用服务器上了,这时候备机上面已经有了虚拟ip

![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646455-1558956768.png)

![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646154-944242511.png)

如果现在主机重新上线,虚拟ip还会从备机飘到主机上,这时候就会产生一个现象,就是脑裂

我们启动主机的机房并且启动keepalived

![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646450-969932444.png)

我们再看备机,我们发现两个机器上都有虚拟vip,我们把这称之为脑裂

# 什么是脑裂?

脑裂(split-brain):指在一个高可用(HA)系统中,当联系着的两个节点断开联系时,本来为一个整体的系统,分裂为两个独立节点,这时两个节点开始争抢共享资源,结果会导致系统混乱,数据损坏。(类似癫痫病人)

![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646198-1344728259.png)

如何解决?

指定keepalived配置的网卡:ens33,固定的VRRP广播地址:224.0.0.18,

在主机上操作:

```plain
firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --in-interface ens33 --destination 224.0.0.18 --protocol vrrp -j ACCEPT
```

```plain
firewall-cmd --reload
```

在备机上操作:

```plain
firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --in-interface ens33 --destination 224.0.0.18 --protocol vrrp -j ACCEPT
```

```plain
firewall-cmd --reload
```

咱们再来看有没有脑裂现像

主机上操作:

![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646454-747216919.png)

备机上操作:

![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646451-158971477.png)

可以看到,脑裂现象已经消失,至此主备机的切换已经完成,我们继续测试数据库同步

# 开启数据库主主备份项目测试:

咱们开始进行数据的主主备份测试,

测试方法:我们在其中一个机房项目的后台修改数据,看另一台机房数据库会不会同步

我们在65这台机上,在描述里修改为tset

![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646451-363287480.png)

![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646493-496652011.png)

接着我们去另外一台机上去看一下数据,我们看到数据也同步修改过来了,至此测试成功

![图片](https://img2020.cnblogs.com/blog/2589936/202110/2589936-20211018181646207-723922765.png)

# 总结:
这个文档是我写过所有文档最难的一篇,踩得坑也真是不计其数,差点都爬不起来了,到处都是坑,虚拟机问题都折腾了好几次,不过功夫不负有心人终于完成了,坑虽然多,不过踩得也很过瘾,研究一些新鲜事物可以提高自己的思维方式和思维能力,已经上升到了系统架构方面的一些东西,刚开始还是比较难以理解的,等后面自己实践的时候发现并没有那么复杂,相反还是比较有趣的,前前后后总共快写了2周吧,继续加油!

![图片](data:image/png;base64,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)

# 问题:如果想更改mysql的端口话,可以关闭selinux,然后把change那个执行一次就好了

```plain
setenforce 0   临时关闭selinux 
```

高可用(keepalived)部署方案相关推荐

  1. 基于共享存储的Harbor高可用-Docker部署方案

    部署规划 架构图 Redis也可以和Harbor集中部署.这样避免了在不使用Reids集群模式下单节点的故障. 使用此模式,目前测试对于Harbor的登录,镜像信息查看,在计算节点,镜像的推送和下载没 ...

  2. Keepalived+Haproxy+Mysql(双主)高可用架构部署

    Keepalived+Haproxy+Mysql(双主)高可用架构部署 一.背景 公司原部署的Mysql架构为keepalived+Mysql双主,但是这个架构有个缺陷是所有的读写请求都在一台机器上( ...

  3. 镭速(Raysync)文件传输高可用安装部署介绍!

    使用HeartBeat实现高可用HA的配置.HA即(high available)高可用,又被叫做双机热备,用于关键性业务.简单理解就是,有2台机器 A 和 B,正常是 A提供服务,B待命闲置,当 A ...

  4. 云服务器搭建高可用keepalived+nginx+emqx集群

    云服务器搭建高可用keepalived+nginx+emqx集群 一.高可用emqx集群搭建 1 单机搭建emqx 2 配置认证和鉴权插件 3 搭建emqx集群 二.nginx搭建负载均衡 1 ngi ...

  5. 解决nginx负载均衡高可用keepalived只针对物理机的问题

    在高可用keepalived软件,在默认的情况下仅仅在对方机器宕机或keepalived停掉的时候才会接管业务. 但是在实际工作过程中,例如在nginx负载均衡工作实例中,nginx服务已停止,而ke ...

  6. 高可用+负载均衡 方案

    高可用:keepalived / HeartBeat 负载: LVS / Haproxy 浅谈web应用的负载均衡.集群.高可用(HA)解决方案 <构建高性能web站点>笔记--基础架构篇 ...

  7. 14、高可用keepalived搭建及切换

    14.高可用keepalived搭建及切换 keepalived主从切换试验: 1.先搭建192.168.1.20与192.168.1.21的主主架构     192.168.1.76为VIP 2.在 ...

  8. MHA高可用架构部署以及配置(详细)

    目录 一.MHA概述 1.简介 2.MHA特点 3.何为高可用 4.故障切换过程 二.MHA高可用架构部署 1.架构图 2. 实验环境:需要四台Centos7服务器 3.实验部署 3.1.master ...

  9. keepalived脑裂实践、高可用keepalived补充

    1-脑裂模拟 1)开启防火墙(两台lb开启防火墙,都出现vip10.0.0.3) [root@lb01 ~]# systemctl start firewalld.service [root@lb01 ...

最新文章

  1. 《剑指offer》链表中倒数第k个结点
  2. 学而不思则罔 - SAP云平台ABAP编程环境的由来和适用场景
  3. Java:放心(或非常容易)
  4. linux下挂载windows上的共享目录,并设置所有者为非root用户
  5. IIAI CVPR 2019 跟踪、检测、分割论文荐读
  6. python职业发展方向_59秒看懂IT运维的发展方向及职业规划
  7. access数据库窗体设计实验报告_来自窗体控件的数值条件(VBA)
  8. 蓝桥杯2020国赛太原理工学子成绩大跃进
  9. spring security执行原理流程
  10. 如何使用bat批处理命令打开WSL
  11. 搜索关键字拼音智能提示实现
  12. 什么叫做POJO类?
  13. data类型的Url格式--url(data:image/gif;base64,AAAA):把小数据直接嵌入到Url中
  14. jxls2-java生成/导出excel工具!基于jxls2写的jxls增强版jxlss的完整教程
  15. 简单 python 爬虫(一)
  16. 史记.(闸北)刀客列传
  17. python语言网课答案_Python语言基础答案
  18. 深入理解java虚拟机-第五章:虚拟机字节码执行引擎
  19. ICT界的基建狂魔—上海季冠:借助闪星云平台一天改造150家品牌珠宝店
  20. 一个Android下ping的简单工具类

热门文章

  1. 弘辽科技:淘宝全款预售合法吗?什么叫淘宝全款预售?
  2. 小学五年级计算机试题,小学五年级语文下册期中试卷2015(附答案)
  3. 西安理工大学计算机就业,西安理工大学毕业以后就业的去向
  4. Buff/Debuff
  5. eclipse与idea快捷键
  6. uni-app获取当前苹果设备系统版本
  7. 终于跑完了马拉松半程了
  8. MacOS和Windows下打开大的TXT文件的软件推荐
  9. jQuery 用each() 添加click事件
  10. python agg函数_pandas agg函数使用方法