简介:
Keepalived是Linux下一个轻量级别的高可用解决方案。高可用(High Avalilability,HA),其实两种不同的含义:广义来讲,是指整个系统的高可用行,狭义的来讲就是指主机的冗余和接管,
Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。
为什么使用集群
1. 防止单点故障;
2. 负载均衡;
3. 高并发;
4. 高可靠;
keepalived安装与配置
基本命令
安装keepalived
yum -y install keepalived
启动keepalived
systemctl start keepalived
查看状态:
systemctl status keepalived
查看进程:
ps -aux | grep keppalived
关闭keepalive
systemctl stop keepalived
配置开机自启动
systemctl enable keepalived
1.安装keepalived:
用4台虚拟机每台的IP分别是
MSTER 192.168.158.129
BACKUP 192.168.158.132
项目挂载:192.168.158.130
项目挂在:192.168.158.131
1)安装keepalived
yum -y install keepalived
2)启动keepalived
systemctl start keeplived
3)查看进程是否启动成功
ps -aux|grep keepalived
4)执行 yum -y install psmisc 安装 killall(不安装用不了)
5)配置主从文件
路径 cd /etc/keepalived/keepalived.config 内容都删了把以下复制进去
global_defs {
notification_email {
123@qq.com #设置报警邮件地址,可以设置多个,可以不设置
}
notification_email_from master@qq.com #发送通知邮件时邮件源地址
smtp_server 127.0.0.1 # 发送email时使用的smtp服务器地址,这里可以用本地的sendmail来实现
smtp_connection_timeout 30 #连接smtp连接超时时间
router_id 192.168.159.35 #定义路由标识信息,相同局域网唯一
}
vrrp_script chk_http_port {
script "/usr/local/src/check_nginx_pid.sh" #最后手动执行下此脚本,以确保此脚本能够正常执行
interval 2 #(检测脚本执行的间隔,单位是秒)
weight -2 #当检查失败后,将vrrp_instance的priority减小5
fall 3 #连续监测失败3次,才认为真的健康检查失败。并调整优先级
rise 2 #连续监测2次成功,就认为成功。但不调整优先级
}
# 虚拟ip配置 vrrp
vrrp_instance VI_1 {
state BACKUP # 指定keepalived的角色,MASTER为主,BACKUP为备,大写
interface ens32 # 当前进行vrrp通讯的网络接口卡(当前centos的网卡)
mcast_src_ip 192.168.159.35 #发送心跳包的源IP,可使用绑定的网卡IP
virtual_router_id 51 # 虚拟路由编号,主从要一直
priority 98 # 优先级,数值越大,获取处理请求的优先级越高
advert_int 1 # 检查间隔,默认为1s(vrrp组播周期秒数)
authentication {
auth_type PASS #设置验证类型和密码,MASTER和BACKUP必须使用相同的密码才能正常通信
auth_pass 1111
}
track_script {
chk_http_port #(调用检测脚本)
}
virtual_ipaddress {
192.168.159.100 # 定义虚拟ip(VIP),可多设,每行一个
}
}
配置:MASTER(主)
BACKUP(从)
6)配置nginx状态检测的脚本
vim /usr/local/src/check_nginx_pid.sh
#!/bin/bash
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi
MSTER 192.168.158.129
BACKUP 192.168.158.132
都要启动keepalived和nginx
项目挂载:192.168.158.130
项目挂在:192.168.158.131
都要挂载成功
就算是把主虚拟机关掉还有从虚拟机保底,就还能继续使用