keepalived原理和安装
一、高可用原理
1、VRRP是什么
keepalived主要使用的是VRRP功能,VRRP(VritrualRouterRedundancyProtocol,虚拟路由冗余协议)出现的目的就是解决静态路由出现的单点故障问题。
健康检查和失败切换是keepalived的两大核心功能。所谓的健康检查,就是采用tcp三次握手,icmp请求,http请求,udp echo请求等方式对负载均衡器后面的实际的服务器(通常是承载真实业务的服务器)进行保活;而失败切换主要是应用于配置了主备模式的负载均衡器,利用VRRP维持主备负载均衡器的心跳,当主负载均衡器出现问题时,由备负载均衡器承载对应的业务,从而在最大限度上减少流量损失,并提供服务的稳定性。
2、VRRP选举机制
VRRP路由器在运行过程中有三种状态:
1. Initialize状态: 系统启动后就进入Initialize,此状态下路由器不对VRRP报文做任何处理;
2. Master状态;
3. Backup状态;
一般主路由器处于Master状态,备份路由器处于Backup状态。
VRRP使用选举机制来确定路由器的状态,优先级选举:
1.VRRP组中IP拥有者。如果虚拟IP地址与VRRP组中的某台VRRP路由器IP地址相同,则此路由器为IP地址拥有者,这台路由器将被定位主路由器。
2.比较优先级。如果没有IP地址拥有者,则比较路由器的优先级,优先级的范围是0~255,优先级大的作为主路由器
3.比较IP地址。在没有Ip地址拥有者和优先级相同的情况下,IP地址大的作为主路由器。
如下图所示,虚拟IP为10.1.1.254,在VRRP组中没有IP地址拥有者,则比较优先级,很明显RB和RA的优先级要大于RC,则比较RA和RB的IP地址,RB的IP地址大。所以RB为组中的主路由器。
路由器使用VRRP 功能后,会根据优先级确定自己在备份组中的角色。优先级高的路由器成为Master 路由器,优先级低的成为Backup 路由器。Master 拥有对外服务的虚拟IP,提供各种网络功能,并定期发送VRRP 报文,通知备份组内的其他设备自己工作正常;Backup 路由器只接收Master 发来的报文信息,用来监控Master 的运行状态。当Master 失效时,Backup 路由器进行选举,优先级高的Backup 将成为新的Master 。
在抢占方式下,当Backup 路由器收到VRRP 报文后,会将自己的优先级与报文中的优先级进行比较。如果大于通告报文中的优先级,则成为Master 路由器;否则将保持Backup状态;
在非抢占方式下,只要Master 路由器没有出现故障,备份组中的路由器始终保持Master 或Backup 状态,Backup 路由器即使随后被配置了更高的优先级也不会成为Master 路由器;
如果Backup 路由器的定时器超时后仍未收到Master 路由器发送来的VRRP报文,则认为Master 路由器已经无法正常工作,此时Backup 路由器会认为自己是Master 路由器,并对外发送VRRP报文。备份组内的路由器根据优先级选举出Master 路由 器,承担报文的转发功能。
二、安装
1、环境
vip:192.168.0.16
server1:192.168.1.60
server2:192.168.1.65
centos 7
2、两台机器都安装keepalived
# cd /usr/local/src
# tar -zxvf keepalived-1.4.5.tar.gz
# cd keepalived-1.4.5
# ./configure --prefix=/usr/local/keepalived
# make && make install
拷贝文件
mkdir /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/ #这个文件可能没有,需要手动创建
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
这个文件可能没有,需要手动创建,/usr/local/keepalived/etc/rc.d/init.d/keepalived ,内容:
#!/bin/sh
#
# Startup script for the Keepalived daemon
#
# processname: keepalived
# pidfile: /var/run/keepalived.pid
# config: /etc/keepalived/keepalived.conf
# chkconfig: - 21 79
# description: Start and stop Keepalived# Source function library
. /etc/rc.d/init.d/functions# Source configuration file (we set KEEPALIVED_OPTIONS there)
. /etc/sysconfig/keepalivedRETVAL=0prog="keepalived"start() {echo -n $"Starting $prog: "daemon keepalived ${KEEPALIVED_OPTIONS}RETVAL=$?echo[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
}stop() {echo -n $"Stopping $prog: "killproc keepalivedRETVAL=$?echo[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
}reload() {echo -n $"Reloading $prog: "killproc keepalived -1RETVAL=$?echo
}# See how we were called.
case "$1" instart)start;;stop)stop;;reload)reload;;restart)stopstart;;condrestart)if [ -f /var/lock/subsys/$prog ]; thenstopstartfi;;status)status keepalivedRETVAL=$?;;*)echo "Usage: $0 {start|stop|reload|restart|condrestart|status}"RETVAL=1
esacexit $RETVAL
chkconfig keepalived on #开机启动
三、配置
1、配置server1(主)
vi /etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {router_id master #是运行keepalived的一个表示,多个集群设置不同。
}vrrp_script chk_nginx {script "/etc/keepalived/nginx_check.sh"interval 2weight -20
}vrrp_instance VI_1 {state MASTER #指定实例初始状态,实际的MASTER和BACKUP是选举决定的。interface em1 # 绑定虚拟 IP 的网络接口,ifconfig 查看IP对应的网卡virtual_router_id 51 #设置VRID标记,多个集群不能重复(0..255)mcast_src_ip 192.168.1.60 #localIP,可以不要该属性priority 100 #设置优先级,优先级高的会被竞选为Master,Master要高于BACKUP,至少50nopreempt #设置为不抢占,说明:这个配置只能在BACKUP主机上面设置advert_int 1 #检查的时间间隔,默认1sauthentication {auth_type PASSauth_pass 123456}track_script {chk_nginx}virtual_ipaddress { #设置VIP,可以设置多个,用于切换时的地址绑定。10.1.125.244 #vip}
}
2、配置server2(备机)
vi /etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {router_id slave
}
vrrp_script chk_nginx {script "/etc/keepalived/nginx_check.sh"interval 2weight -20
}vrrp_instance VI_1 {state BACKUPinterface em1virtual_router_id 51mcast_src_ip 192.168.1.65 priority 90advert_int 1authentication {auth_type PASSauth_pass 123456}track_script {chk_nginx}virtual_ipaddress {192.168.1.16}
}
vi /etc/keepalived/nginx_check.sh
#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then/usr/local/nginx/sbin/nginxsleep 2if [ `ps -C nginx --no-header |wc -l` -eq 0 ];thenkillall keepalivedfi
fi
授权
# chmod +x /etc/keepalived/nginx_check.sh
两台机器都添加vrrp协议到防火墙,vi /etc/sysconfig/iptables
service iptables restart 重启防火墙。
四、测试
我这里只做keepalived测试,nginx的测试大家自行处理。
1、启动
service keepalived start
2、通过 ip a 查看是不是只有一个台机器绑定的vip,正常应该只有一个台机器有vip,如下图192.168.1.60,
3、停掉主 keepalived,备机自动切换为master,备机日志:
4、启动主机得keepalived,会自动抢占为master,备机日志如下:
tail -200 /var/log/messages
这个架构nginx+keepalived方案的缺点:
只有一台服务器对外提供服务,使用率是50%。可以采用双nginx对外提供服务的架构方案,提高服务的使用率。
五、注意
1、当主机服务恢复后,vip的master会自动切回到主机。
2、查看keepalived日志
tail -f /var/log/messages
3、如果主备发生网络不通分区的情况,可能让keepalived集群发生脑裂的情况,导致两台机器抢占vip。比如当防火墙隔离了keepalived的通讯端口112。
keepalived原理和安装相关推荐
- keepalived 原理,安装,配置
什么是Keepalived呢,keepalived观其名可知,保持存活,在网络里面就是保持在线了,也就是所谓的高可用或热备,用来防止单点故障(单点故障是指一旦某一点出现故障就会导致整个系统架构的不可用 ...
- 使用LVS实现负载均衡原理及安装配置详解
使用LVS实现负载均衡原理及安装配置详解 负载均衡集群是 load balance 集群的简写,翻译成中文就是负载均衡集群.常用的负载均衡开源软件有nginx.lvs.haproxy,商业的硬件负载均 ...
- nginx负载均衡(四)----keepalived原理及实现双vip
keepalived原理及实现双vip 一.什么是keepalived? 二.VRRP协议 1.vrrp协议格式 2.相关术语 3.vrrp协议工作原理 4.master选举 4.1备份组中路由器的优 ...
- puppet完全攻略(一)puppet应用原理及安装部署
puppet完全攻略(一)puppet应用原理及安装部署 puppet简介 puppet官方网站:http://www.puppetlabs.com/ puppet中文wiki:http://pu ...
- 负压电路_通风设备之负压风机的工作原理与安装方法是怎样的?
点击上方蓝字关注我吧! 作为通风设备之一的负压风机在厂房车间通风换气降温的过程中也发挥了比较重要的作用,常见的车间通风降温方案有工业大风扇+环保空调的"扇机组合",也有环保空调+负 ...
- 麦克纳姆轮运动原理怎么安装_家用中央空调水系统原理是什么?怎么样安装比较好呢?...
家用中央空调水系统简称水机,与家用中央空调氟系统的区别主要是水机是二次换热冷媒到水,而氟机则是冷媒直接到末端.我们的消费者在购买水机时,应该如何选择呢?它的工作原理与安装步骤是怎样的呢?面对众多水机品 ...
- fail2ban原理与安装(centos6)
fail2ban 原理 首先我们去访问一个服务器的时候,一定会留下访问日志.比如说我们用ssh来访问我们的虚拟机,我们可以去看/var/log/secure. 如果我们有一个ip访问,登录失败了> ...
- Nginx 教程(一)-- 工作原理及安装配置
Nginx简介 Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在一个BSD-like协议下发行,由俄罗斯人IgorSysoev开发,共俄罗斯大型的搜索 ...
- 大数据Canal(四):Canal HA原理及安装
文章目录 Canal HA原理及安装 一.Canal HA原理
最新文章
- 惊呆了,Spring中竟然有12种定义bean的方法
- 【云炬大学生创业基础笔记】第1章第4节 为什么需要创业测试
- Vigenère密码
- 一句话讲清楚IOC容器以及什么时候使用@Autowired
- IPMI远程管理一点记录
- php全局cors,PHP开启CORS - slagga的个人页面 - OSCHINA - 中文开源技术交流社区
- 阿德莱德大学招聘博士后研究员
- NLP高阶实战必读:一文走遍完整自然语言处理流程 文章
- [ mongoDB ] - 文档型数据库设计模式-如何存储树形数据 [转]
- 头条限流是什么原因_教训:千万不要用百家号去绑定头条号,后果你想象不到...
- 源码推荐-380套大型商业源码
- DeepFaceLab:手动提取高精度脸图,减少抖动!
- 徐思/杨玲《面向对象程序设计(Java)》第十一周学习总结
- jQuery全屏插件fullPage的基本使用
- java编程判断斐波那契数是质数
- 盘点一个Python面向对象的基础问题
- 第 2 课 第二次鸦片战争(1856-1860 年) (咸丰帝在位)
- 计算机思维典型方法有抽象,传说中的四大编程思维 一篇彻底搞清楚
- NOIP2008年普及组初赛题目答案及解析
- 基于SpringBoot的电子招标投标管理系统
热门文章
- cut最后几位 shell_shell命令_cut
- 5个被忽视的习惯,决定了你无法成为高级开发工程师
- 历史上的今天:首条海底光缆开通;VeriSign 收购 Network Solutions;计算机图形学先驱诞生...
- 软件工程师安德烈·梅萨加冕 2021 世界小姐冠军
- ​芯片大神,英特尔、AMD、特斯拉前首席芯片架构师 Jim Keller 加盟 AI 初创公司...
- 程序员删库被判 6 年,公司损失近亿,云原生时代如何打造安全防线?
- 知乎技术热帖:Qt 这么强大为什么火不起来?
- 一文搞懂 Spring JPA
- iOS 14 大改还有神秘硬件登场,苹果 WWDC20 今夜线上发布
- 阿里回应“拼多多员工淘宝账号被封”;微信脸书合办新冠病毒黑客马拉松;Kubernetes 1.18发布 | 极客头条...