images\cherry_red.png1 实训二前期LNMP简易架构
      images\cherry_blue.png1.1 php server安装
      images\cherry_blue.png1.2 安装初始化数据库
   images\cherry_red.png2 Mysql数据库
      images\cherry_blue.png2.1 Mysql5.7安装
         images\cherry_orange.png2.1.1 rpm安装
         images\cherry_orange.png2.1.2 yum安装
         images\cherry_orange.png2.1.3 源码安装
         images\cherry_orange.png2.1.4 编译好的非rpm包安装
         images\cherry_orange.png2.1.5 my.cnf常见选项
      images\cherry_blue.png2.2 Mysql基础
         images\cherry_orange.png2.2.1 MySql数据库操作
         images\cherry_orange.png2.2.2 MySql数据类型
            images\cherry_cyan.png2.2.2.1 整型
            images\cherry_cyan.png2.2.2.2 浮点数和定数
            images\cherry_cyan.png2.2.2.3 字符串类型
            images\cherry_cyan.png2.2.2.4 日期和时间类型
            images\cherry_cyan.png2.2.2.5 字段修饰和约束
            images\cherry_cyan.png2.2.2.6 业务建表练习
         images\cherry_orange.png2.2.3 MySql表操作
         images\cherry_orange.png2.2.4 MySql体系结构
         images\cherry_orange.png2.2.5 MySql存储引擎
      images\cherry_blue.png2.3 MySql操作
         images\cherry_orange.png2.3.1 MySql数据操作
         images\cherry_orange.png2.3.2 MySql单表查询
         images\cherry_orange.png2.3.3 MySql多表查询
         images\cherry_orange.png2.3.4 MySql存储过程与函数
      images\cherry_blue.png2.4 MySql操作-2
         images\cherry_orange.png2.4.1 MySql安全机制
         images\cherry_orange.png2.4.2 MySql日志管理
         images\cherry_orange.png2.4.3 MySql复制概述
         images\cherry_orange.png2.4.4 主从同步
      images\cherry_blue.png2.5 最基本sql语句及主从架构
      images\cherry_blue.png2.6 MyCat中间件
         images\cherry_orange.png2.6.1 部署Mycat
         images\cherry_orange.png2.6.2 配置读写分离
            images\cherry_cyan.png2.6.2.1 安全的读写分离
         images\cherry_orange.png2.6.3 XML语法格式
         images\cherry_orange.png2.6.4 mycat 分表分库
      images\cherry_blue.png2.7 Mysql MHA
         images\cherry_orange.png2.7.1 MHA-部署
         images\cherry_orange.png2.7.2 MHA-故障切换VIP透明
            images\cherry_cyan.png2.7.2.1 VIP切换脚本内容
            images\cherry_cyan.png2.7.2.2 VIP-手动在线切换脚本
         images\cherry_orange.png2.7.3 MHA+Mycat高可用Mysql读写分离
         images\cherry_orange.png2.7.4 MHA+VIP+Mycat
         images\cherry_orange.png2.7.5 MHA-故障切换邮件报警
         images\cherry_orange.png2.7.6 自动配置Slave主机
   images\cherry_red.png3 实验
      images\cherry_blue.png3.1 mysql授权问题
      images\cherry_blue.png3.2 1.单节点数据库
      images\cherry_blue.png3.3 2.主从同步
      images\cherry_blue.png3.4 3.实验(高可用)
         images\cherry_orange.png3.4.1 高可用keepalived
            images\cherry_cyan.png3.4.1.1 keepalived install
      images\cherry_blue.png3.5 4.实验(高可用+大并发)
         images\cherry_orange.png3.5.1 HAproxy代理
      images\cherry_blue.png3.6 4.实验(mycat-读写分离)
         images\cherry_orange.png3.6.1 mycat安装部署
         images\cherry_orange.png3.6.2 读写分离高可用
         images\cherry_orange.png3.6.3 mycat管理端口命令
      images\cherry_blue.png3.7 5.双主双从-读写分离-高可用
      images\cherry_blue.png3.8 6.mycat分库操作
      images\cherry_blue.png3.9 7.mycat分表
      images\cherry_blue.png3.10 8.mycat分库分表之下实现读写分离
   images\cherry_red.png4 Shell脚本编程
   images\cherry_red.png5 Zabbix监控
      images\cherry_blue.png5.1 zabbix设置邮件报警--自定义报警媒介
      images\cherry_blue.png5.2 zabbix解决中文界面乱码问题
      images\cherry_blue.png5.3 ziabbix自带的template Linux OS
      images\cherry_blue.png5.4 zabbix-agent自定义收集数据
      images\cherry_blue.png5.5 zabbix监控Nginx性能
      images\cherry_blue.png5.6 综合配置
      images\cherry_blue.png5.7 实验:监控nginx端口实现告警
   images\cherry_red.png6 ELK日志分析
      images\cherry_blue.png6.1 PS
      images\cherry_blue.png6.2 es-head插件安装
      images\cherry_blue.png6.3 安装filebeat nginx日志模板


images\52-1.png

实验2基础上改进:数据库互为主从,节点安装keepalived实现高可用避免单机故障

当前数据库架构缺点:
虽然数据由两个节点,但是VIP同一时刻只绑定在某一个节点上,因此参与业务负载的只有一个节点,另一个节点为备份节点,因此对于并发并没有提高

keepalvied 会产生一个虚拟IP(VIP),VIP会绑定在某台正常的数据库服务器上,当被绑定的数据服务器出现故障时,VIP会自动漂移到其它正常节点

==========================================================================
安装keepalived(在主从两个数据库节点都安装)

安装libmysqlclient.so.18 库插件
#rpm -ivh mysql-community-libs-compat-5.7.24-1.el7.x86_64.rpm -------在mysql安装包有

#yum install -y keepalived

# systemctl status keepalived ---查看服务状态

keepalived服务配置文件 : /etc/keepalived/keepalived.conf


注意:

1.设置节点的主机名
# hostnamectl set-hostname dn1

2.keepalived节点之间写A记录实现相互解析,也建议给自己的主机名也解析一下
# vi /etc/hosts
192.168.182.150 dn1
192.168.182.151 dn2

3.清楚防火墙和selinux规则
# iptables -F ----没有清除时可能导致节点通信障碍,导致裂脑现象(keepalived节点都有VIP)
# setenforce 0 ----不关闭 建卡检查脚本中无法执行停止 systemctl stop keepalived 服务


配置keepalived:
# vi /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
!节点唯一标识,一般用主机名,实现节点之间的 A记录的互相解析router_id 名字
router_id dn1
!指定通信的组播组
vrrp_mcast_group4 224.4.4.4
}

vrrp_script chk_mysqld {
!具体业务健康检查的脚本,该脚本文件必须具有执行权限 chmod a+x xxx.sh
script "/etc/keepalived/kp_mysql.sh"

!每2秒检测一次mysqld的运行状态
interval 2;

!失败一次,将自己的优先级-2
weight -2
}

vrrp_instance VI_1 {
!指定身份为 备份节点
state BACKUP
!非抢占式
nopreempt
!优先级别 当前两个节点同时起来,推举优先级别高的为临时的主 绑定VIP
priority 100

!通信网卡
interface ens33

!vrrp 组ID,必须保持一致
virtual_router_id 51

!节点之间通信的频率 单位秒
advert_int 2

!通信间的密码
authentication {
auth_type PASS
auth_pass 1111
}
!指定 vrrp vip
virtual_ipaddress {
192.168.182.200/24 dev ens33 label ens33:1
}

!指定业务健康检查的脚本
track_script {
!mysqld存活状态检测脚本
chk_mysqld
}
}
==============================================================
mysql 健康检查的脚本:
# vi /etc/keepalived/kp_mysql.sh
#! /bin/bash
#判断mysqld是否存活
netstat -nlpt | grep -w '3306' &>> /dev/null

#如果数据库不存活
if [ $? -ne 0 ]
then
#停止keepalived服务使得通信中止,VIP则漂移到其他存活的Keepalived节点
systemctl stop keepalived
fi
exit 0


================================================================
测试:
1.启动两个节点的keepalived 然后观察是否有一个节点 能得到虚拟VIP(只能有一个节点有VIP),然后停止 有VIP节点的 keepalived服务,查看VIP是否漂移到另一台.

进一步测试:
2.确保两个节点的mysqld keepalived都为启动状态,观察是否有一个节点得到VIP,然后将有VIP的节点的mysqld服务停止,查看该节点的keepalive服务是否停止,VIP是否漂移到另一个节点.

如果测试1正常,但测试2不能正常,则说明 mysql健康检查的脚本有问题,或者没有被执行




keepalived 的裂脑现象(所有keepalived节点都有VIP),一般时由于节点通信不畅或故障导致的,可能有以下原因:
1.节点之间没有A记录相互解析

2.vrrp_mcast_group4 224.4.4.4 组播组指定不一致

3.virtual_router_id 51 节点id不一致

3.防火墙屏蔽了通信