18.1 集群介绍 18.2 keepalived介绍 18.3/18.4/18.5 用keepalived配置高可用集群
18.2 keepalived介绍
18.3/18.4/18.5 用keepalived配置高可用集群
集群介绍
根据功能分为二大类
1.高可用集群
高可用集群通常为两台服务器,一台工作,另外一台作为冗余,当提供服务器服务的服务器宕机了(工作),马上切换另一台(冗余)。
实现高可用的软件有:keepalived
2.负载均衡集群
需要有一台服务器作为分开器,他负责把用户的请求分发给后端的服务器处理,除了分发起外,就是给用户提供服务的服务器。这些服务器数量至少为2。
例子:
比如一台服务器最高请求量为1000,当请求量超过1000后,服务器就会负载高,会导致服务卡死,这时我们可以用负载均衡来分发这些请求到其他服务器上,当然也可以提高服务器自身硬件配置。
实现负载均衡的开源软件有:LVS,keepalived、haproxy、nginx。商店的有F5、Netscaler
keepalived介绍
1.keepalived通过VRRP协议来实现高可用
2.在VRRP协议里,将多台功能相同的集齐组成一个小组,这个小组会又一个master角色和backup角色(N>=1)这个角色可以多个。
3.master会通过组播的形式向各个backup发现VRRP协议的数据包,当backup收不到master发来的VPPR数据包时,就会认为master宕机了,这时backup就会启动服务来替换新的master,如果有多台backup就要看优先级来决定。
4.keepalived要有三个模块:
core :核心,负责主进程的启动、维护以及全局配置文件的加载和解析
check:负责模块的健康检查
vrrp:提供VPPR协议
用keepalived配置高可用集群
实验:
准备2台机器,master为128,backup为130,
2台机器安装keepalived
yum install -y keepalived
2台机器安装nginx
配置master:
1.清空keepalived的目录下conf配置文件添加以下
vim /etc/keepalived/keepalived.conf
vrrp_script chk_nginx {
script "/usr/local/test.sh" //检查nginx是否正常的脚本(下面需要写个脚本)
interval 3
}
vrrp_instance VI_1 {
state MASTER //定义角色
interface ens32 //针对那个网卡监听VIP
virtual_router_id 51 //这个ID需要与backup保持一致
priority 100 //定义权重master要比backup要大
advert_int 1
authentication {
auth_type PASS //用户认证类型
auth_pass keep //用户认证密码
}
virtual_ipaddress { //当master宕机,VIP分配给back
192.168.142.100
}
track_script {
chk_nginx //定义监控脚本,与上面保持一致
}
}
2.配置定义检查脚本
vim /usr/local/test.sh //要与配合文件一致
添加:
#!/bin/bash#时间变量,用于记录日志
d=`date --date today +%Y%m%d_%H:%M:%S`
#计算nginx进程数量
n=`ps -C nginx --no-heading|wc -l`
#如果进程为0,则启动nginx,并且再次检测nginx进程数量,
#如果还为0,说明nginx无法启动,此时需要关闭keepalived
if [ $n -eq "0" ]; then
/etc/init.d/nginx start
n2=`ps -C nginx --no-heading|wc -l`
if [ $n2 -eq "0" ]; then
echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log
systemctl stop keepalived
fi
fi
3.启动keepalived服务
systemctl start keepalived
ps aux|grep keepalived
ps aux |grep nginx
配置从:
vim /etc/keepalived/keepalived.conf
vrrp_script chk_nginx {
script "/usr/local/test.sh"
interval 3
}
vrrp_instance VI_1 {
state BACKUP //角色
interface ens32
virtual_router_id 51 //主从保持一致ID
priority 90 //权重要比master小,多台的话就看优先级
advert_int 1
authentication {
auth_type PASS
auth_pass aminglinux>com //密码
}
virtual_ipaddress {
192.168.142.100 ////当master宕机,VIP分配给back(主从保持一致)
}
track_script {
chk_nginx
}
}
2.配置定义检查脚本
#!/bin/bash
#时间变量,用于记录日志
d=`date --date today +%Y%m%d_%H:%M:%S`
#计算nginx进程数量
n=`ps -C nginx --no-heading|wc -l`
#如果进程为0,则启动nginx,并且再次检测nginx进程数量,
#如果还为0,说明nginx无法启动,此时需要关闭keepalived
if [ $n -eq "0" ]; then
/etc/init.d/nginx start
n2=`ps -C nginx --no-heading|wc -l`
if [ $n2 -eq "0" ]; then
echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log
systemctl stop keepalived
fi
fi
systemctl start keepalived
4.查看服务
测试:
1.master机器没停掉keepalived服务前
2.在master运行 systemctl stop keepalived再访问
以上2张图可以看到,当master宕机的时候,启动了backup机器。
注意:
VIP:虚拟ip,这个IP是由keepalived给服务器配置上的,服务器靠这个VIP
对外提供服务,当master机器宕机,VIP被分配上backup上,这样就能保证服务运作。