keepalived介绍
1. keepalived是什么
Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP (Virtual Router Redundancy Protocol ,虚拟路由器冗余协议)功能。
因此,Keepalived除了能够管理LVS软件外,还可以作为其他服务(例如:Nginx、Haproxy、MySQL等)的高可用解决方案软件。
2. keepalived主要功能
- 管理LVS负载均衡软件
- 实现LVS集群节点的健康检查
- 作为系统网络服务的高可用性(failover)
3. keepalived故障转移
Keepalived高可用服务之间的故障切换转移,是通过 VRRP 来实现的。
.
在 Keepalived服务正常工作时,主 Master节点会不断地向备节点发送(多播的方式)心跳消息,用以告诉备Backup节点自己还活着,当主 Master节点发生故障时,就无法发送心跳消息,备节点也就因此无法继续检测到来自主 Master节点的心跳了,于是调用自身的接管程序,接管主Master节点的 IP资源及服务。
.
而当主 Master节点恢复时,备Backup节点又会释放主节点故障时自身接管的IP资源及服务,恢复到原来的备用角色。扩展一下,之前的实践类文章:搭建Redis集群和MySQL主从同步
说明:keepalived的主从切换和redis的主从切换是不一样的,keepalived的主节点挂了以后,从节点变为主节点,之前的主节点恢复以后继续做主节点。redis的主节点挂了以后,重新恢复以后变为从节点
一、 linux安装nginx
1、配置linux网络为NAT模式
虚拟机网络配置:
设置虚拟机为NAT模式
ip:192.168.70.0
网关:192.168.70.2
子网掩码:255.255.255.0
linux网络配置:
在/etc/sysconfig/network-scripts配置或者采用如图界面配置:
IPADDR=192.168.70.4
GATEWAY=192.168.70.2
DNS1=192.168.70.2
2、安装nginx
-
windows访问虚拟机时,开启VMware Virtual Ethernet Adapter for VMnet
二、keepalive使用
原理:类似心跳检测
相同功能:LVS
三、Nginx主备搭建
1、linux安装keepalived
参考: keepalived安装
- 下载keepalived链接
- 安装依赖包
yum install -y curl gcc openssl-devel libnl3-devel net-snmp-devel
- 上传压缩包到linux
tar -zxvf keepalived-2.0.7.tar.gz
cd keepalived-2.0.7
./configure --prefix=/usr/local/keepalived
make && make install
- 主从都需安装keepalived
2、keepalived配置
配置重启脚本
mkdir /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/keepalived
cp /usr/local/keepalived-2.0.20/keepalived/etc/init.d/keepalived /etc/init.d/keepalived
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/keepalived
- 开机启动:chkconfig keepalived on
- 查看开机启动的服务:chkconfig –list
- 启动、关闭、重启service keepalived start|stop|restart
配置:keepalived.conf 及启动脚本nginx_check.sh
nginx_check.sh:
#!/bin/bash
A=`ps -C nginx ¨Cno-header |wc -l`
if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx
sleep 2
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi
keepalived.conf
! Configuration File for keepalived
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh" #运行脚本,脚本内容下面有,就是起到一个nginx宕机以后,自动开启服务
interval 2 #检测时间间隔
weight -20 #如果条件成立的话,则权重 -20
}
# 定义虚拟路由,VI_1 为虚拟路由的标示符,自己定义名称
vrrp_instance VI_1 {
state MASTER #来决定主从
interface eno16777736 # 绑定虚拟 IP 的网络接口,根据自己的机器填写
virtual_router_id 121 # 虚拟路由的 ID 号, 两个节点设置必须一样
mcast_src_ip 192.168.110.141 #填写本机ip
priority 100 # 节点优先级,主要比从节点优先级高
nopreempt # 优先级高的设置 nopreempt 解决异常恢复后再次抢占的问题
advert_int 1 # 组播信息发送间隔,两个节点设置必须一样,默认 1s
authentication {
auth_type PASS
auth_pass 1111
}
# 将 track_script 块加入 instance 配置块
track_script {
chk_nginx #执行 Nginx 监控的服务
}
virtual_ipaddress {
192.168.110.110 # 虚拟ip,也就是解决写死程序的ip怎么能切换的ip,也可扩展,用途广泛。可配置多个。
}
}
-
注意:keepalived.conf的 virtual_ipaddress 要配置在与linux的ip在同一网段,否则不能从本机访问到虚拟机的linux的虚拟ip
三、测试nginx主从切换
同时启动时:访问主机
主机关闭:访问备机