如果一台系统能够不间断的提供服务,那么这台系统的可用性据说100%。那如果系统每运行100个时间单位,就会出现1个时间单位无法提供服务,那么该台系统的可用性是99%。
目前大部分企业的高可用目标是4个9,也就是99.99%,也就是允许这台系统的年停机时间为52.56分钟。
使用keepalived做mysql主从切换的高可用
keepalived切换的优缺点
1.可以切换虚拟IP
2.可能发生裂脑,就是主从服务器都同时出现一样的VIP,导致写入数据的时候,往主从都写入了数据
3.可能导致主从mysql数据不一致。主在down机的时候,有部分数据还没同步到从mysql
此实验在mysql使用gtid同步实现的前提下的
192.168.209.132 master
192.168.209.131 slave
1.安装keepalived
直接yum安装或者编译安装都可以,生产环境也是ok的
2.配置keepalived的配置文件
keepalived配置文件默认放在/etc/keepalived/文件夹下
如果不把配置文件放这里,那么启动keepalived的时候,需要用参数指定配置文件的位置
这里我用默认安装和默认配置文件位置
192.168.209.132:
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
}
router_id SLAVE
}
vrrp_script chk_mysql {
script "/data/script/mysql_check.sh"
interval 2
weight -20
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
nopreempt
virtual_router_id 131
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.209.16
}
track_script {
chk_mysql
}
}
监控脚本:
vim /data/script/mysql_check.sh
#!/bin/sh
mysqlstr=/usr/local/mysql/bin/mysql
host=localhost
user=root
password=123456
port=33061
mysql_status=1
$mysqlstr -h $host -u $user -p$password -P $port -e "show status" >/dev/null 2>&1
if [ $? = 0 ] then
echo "mysql_status=1"
exit 0
else
pkill keepalived
fi
192.168.209.131:
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
}
router_id SLAVE
}
vrrp_script chk_mysql {
script "/data/script/mysql_check.sh"
interval 2
weight -20
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
nopreempt
virtual_router_id 131
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.209.16
}
track_script {
chk_mysql
}
}
配置文件:
vim /data/script/mysql_check.sh
#!/bin/sh
mysqlstr=/usr/local/mysql/bin/mysql
host=localhost
user=root
password=123456
port=33061
mysql_status=1
$mysqlstr -h $host -u $user -p$password -P $port -e "show status" >/dev/null 2>&1
if [ $? = 0 ] then
echo "mysql_status=1"
exit 0
else
pkill keepalived
fi
对实验结果开始进行验证
192.168.209.132上获取到vip
把192.168.209.132上的mysqld给干掉
查看192.168.209.132上的mysqld和keepalived进程是否都被干掉了;虚拟IP是否切换到192.168.209.131上了
查看192.168.209.131上是否有VIP
把192.168.209.132上的keepalived和mysqld都启动起来。先启mysqld再起keepalived
此时keepalived启动起来了,虽然权重比192.168.209.131的高,但是设置了不抢夺,所以192.168.209.132上的keepalived不会切换vip过来
此时,把192.168.209.131上的mysql停掉它
查看131上的mysql和keepalived是否已经都停止了
查看192.168.209.132上是否有VIP了
第77篇
极客时间《从0开始学架构》课程笔记。
本质:通过冗余来规避部分故障的风险
设计思想:通过增加更多服务器达到计算高可用
设计复杂度:任务管理,即失败后如何重新分配任务
设计关键点:哪些服务器可以执行任务;任务如何重新执行。
常见的计算高可用架构有3种:主备、主从和集群。主备又分为冷备和温备;集群分为对称集群和非对称集群。
详细设计:
优点:实现简单,主备机不需要进行交互,状态判断和切换操作都由人工执行
缺点:人工操作时间不可控,操作效率较低,容易出错
适用场景:内部管理系统、后台管理系统这类使用人数不多、使用频率不高的业务,不太适合在线业务
详细设计:
优点:从机也在执行任务,发挥了从机的硬件性能
缺点:需要对计算任务进行分类,任务分配器更为复杂
主备或主从架构的问题:需要人工操作、效率低、容易出错、不能及时处理故障
高可用集群方案就是为了实现自动完成切换操作。
根据服务器节点角色不同,分为对称集群和非对称集群两类。
与存储高可用不一样,计算高可用集群包括2台服务器的集群。
定义:集群中每个服务器的角色都是一样的,都可以执行所有任务,也叫负载均衡集群
详细设计:
设计关键点:
定义:集群中的服务器分为多个不同的角色,不同的角色执行不同的任务,例如最常见的 Master-Slave 角色
详细设计:
设计关键点:
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)