高可用——Keepalived安装部署使用详解
关注:CodingTechWork,一起学习进步。 keepalived是基于 VRRP (Virtual Router Redundancy Protocol ,虚拟路由器冗余协议)协议实现的 LVS (LinuxVirtual Server ,Linux虚拟服务器)服务高可用方案。主要提供了负载均衡和高可用功能,用来避免单点故障。负载均衡是通过linux的IPVS(ip虚拟服务器)实现,高可用通过VRRP实现多机故障转移。 keepalived一般是2个节点运行keepalived,一台是 主节点(MASTER ),一台是 备节点(BACKUP) , 对外 表现都是 一个虚拟IP ,主节点会发送特定的消息给备节点,如果备节点收不到这个特定消息时,说明 主节点就宕机 了,此时 备节点就会接管虚拟IP 进行服务提供,这就实现了高可用。 将keepalived和nginx部署在一台服务器。 keepalived是基于VRRP协议来实现高可用的,有两种模式,一种是 抢占模式 (默认使用),另一种是 非抢占模式 ,需配置 nopreempt ,在后面的keepalived配置文件详解中我们会讲到。当使用 抢占模式 的时候,这是一种 竞选机制 进行通信, 主节点优先级大于备节点优先级 。当主节点宕机的时候,可以切到备节点进行提供服务。 抢占模式原理 如下 : $ yum install -y keepalived $ cd /etc/keepalived $ vim keepalived.conf 主要修改分配的虚拟ip地址等配置。 $ systemctl start keepalived.service 或者 $ service keepalived start 其他相关命令 1)重启: $ systemctl restart keepalived.service 2)停止: $ systemctl stop keepalived.service 3)状态: $ systemctl status keepalived.service 4)设置开机启动: $ chkconfig keepalived on $ systemctl status keepalived.service $ ps -ef | grep keepalived $ ip add show 配置好keepalived启动后,我们就可以通过10.139.1.1这个VIP进行服务的访问。 除了注释#以外,其他都和主节点保持一致。
keepalived安装与配置
keepalived是集群管理中保证集群高可用的一个服务软件,用来防止单点故障。
keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即 虚拟路由冗余协议 。
虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据 VRRP的优先级 来 选举一个backup当master 。这样的话就可以保证路由器的高可用了。
keepalived主要有三个模块,分别是core、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。vrrp模块是来实现VRRP协议的。
配置虚拟路由器:实现IP流动的部分:
演示说明:
2台ubuntu 主机:node-01,node-02
node-01 ip: 10.0.42.145
node-02 ip: 10.0.40.112
配置完成后,启动服务:
查看进程是否存在:
使用ip 命令查看ip情况:
Keepalive介绍及工作原理
1.两台业务系统启动着相同的服务,如果有一台故障,另一台自动接管,我们将中国称之为高可用。 2.系统可用率算法例: -1个9:(1-90%)*365=36.5天 ----> 表示该系统1年时间里最多可能的业务中断时间是36.5天 -2个9:(1-99%)*365=3.65天 ----> 表示该系统1年时间里最多可能的业务中断时间是3.65天 保证系统可实时不间断的使用。 软件:keepalive keepalive是通过vrrp(虚拟路由冗余协议)实现高可用。 通常业务系统需要保证7X24小时不down机。比如公司内部OA系统,每天公司人员都需要使用,则不允许down机。作为业务系统来说随时随地地都要求可用。 1.安装 2.配置[root@lb01 ~]# 3.启动 4.测试:keepalive高可用地址漂移 (1)keepalive提供一个VIP(虚拟IP)和vmac(虚拟Mac地址) (2)抓包测试 (1)默认配置为抢占式: master挂掉,backup上台,master重新启动则讲IP抢占过去。 (2)非抢占式配置: 两台均为backup,在优先级上做区分,如master挂掉,backup上台,则backup变成master,master变为backup。 a.两个节点的state均为backup(官方建议) b.两个节点都在vrrp_instance中添加nopreempt c.其中一个节点的优先级要高于另外一个节点 两台服务器角色都启用了nopreempt后,必须修改角色状态统一为backup,唯一的区别就是优先级不同。 keepalive高可用故障脑裂 由于某些原因,导致两台keepalive高可用服务器在指定时间内,无法检测到对方的心跳消息,各自取得资源及服务的所有权,而此时的两台高可用服务器又都还活着。 a.服务器网线松动等网络故障 b.服务器硬件故障发生损坏现象而奔溃 c.主备服务器都开启了firewalld防火墙 解决方法: 配置keepalived使用
keepalived工作原理是什么?怎么保证高可用
原理:keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。
虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。
keepalived主要有三个模块,分别是core、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。vrrp模块是来实现VRRP协议的
Keepalived 介绍、安装、配置(高可用)
1、keepalived的工作原理是VRRP(Virtual Router Redundancy Protocol)虚拟路由冗余协议。
2、VRRP路由器是指运行VRRP的路由器,是物理实体,虚拟路由器是指VRRP协议创建的,是逻辑概念。一组VRRP路由器协同工作,共同构成一台虚拟路由器。 Vrrp中存在着一种选举机制,用以选出提供服务的路由即主控路由,其他的则成了备份路由。当主控路由失效后,备份路由中会重新选举出一个主控路由,来继续工作,来保障不间断服务。
3、节点A 192.168.8.4 (主节点), 节点B 192.168.8.6(备用节点),虚拟IP(对外提供服务的IP 192.168.8.100)
在这种模式下,虚拟IP在某时刻只能属于某一个节点,另一个节点作为备用节点存在。
当主节点不可用时,备用节点接管虚拟IP(即虚拟IP漂移至节点B),提供正常服务。
keepalived的原理可以这样简单理解:
keepalived安装在两台物理服务器上,并相互监控对方是否在正常运行。
当节点A正常的时候:节点A上的keepalived会将下面的信息广播出去:
192.168.8.100 这个IP对应的MAC地址为节点A网卡的MAC地址
图中的其它电脑如客户端和NodeB会更新自己的ARP表,对应192.168.8.100的MAC地址=节点A网卡的MAC地址。
当节点A发生故障的时候,节点B上的keepalived会检测到,并且将下面的信息广播出去:
192.168.8.100 这个IP对应的MAC地址为节点B网卡的MAC地址
图中的其它电脑如客户端会更新自己的ARP表,对应192.168.8.100的MAC地址=节点B网卡的MAC地址。
4、安装
wget http://www.keepalived.org/software/keepalived-1.4.3.tar.gz
yum install -y openssl openssl-devel
tar zxvf keepalived-1.4.3.tar.gz
cd keepalived-1.4.3
./configure
make
make install
cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
cp /usr/local/sbin/keepalived /usr/sbin/
# chkconfig keepalived on
#service keepalived start #启动服务
#service keepalived stop #停止服务
#service keepalived restart #重启服务
5、主节点keepalived.conf:
global_defs {
router_id nodea
}
vrrp_instance VI_1 {
state MASTER #设置为主服务器
interface eno16777984
virtual_router_id 51 #主、备必须一样
priority 100 #(主、备机取不同的优先级,主机值较大,备份机值较小,值越大优先级越高)
advert_int 1 #VRRP Multicast广播周期秒数
authentication {
auth_type PASS #VRRP认证方式,主备必须一致
auth_pass 1111 #(密码)
}
virtual_ipaddress {
192.168.100.100/24 #VRRP HA虚拟地址
}
6、备节点:
global_defs {
router_id nodeb #命名
}
vrrp_instance VI_1 {
state BACKUP #备节点
interface eno16777984
virtual_router_id 51 #与主节点一致
priority 90 #优先权要比主节点小
advert_int 1
authentication {
auth_type PASS #与主节点一致
auth_pass 1111 #与主节点一致
}
virtual_ipaddress {
192.168.100.100/24 #与主节点一致
}
7、启动:
keepalived -D -f /usr/local/etc/keepalived/keepalived.conf
8、检查VRRP广播:
tail -f /var/log/messages
Keepalive和lvs
keepalive起初是为LVS设计的,专门用来监控lvs各个服务节点的状态,后来加入了vrrp的功能,因此除了lvs,也可以作为其他服务(nginx,haproxy)的高可用软件。VRRP是virtual router redundancy protocal(虚拟路由器冗余协议)的缩写。VRRP的出现就是为了解决静态路由出现的单点故障,它能够保证网络可以不间断的稳定的运行。所以keepalive一方面具有LVS cluster node healthcheck功能,另一方面也具有LVS director failover。 keepalive的两大功能: healthcheck和failover LVS cluster node healthcheck keepalive高可用服务原理介绍: keepalive director高可用之间的故障切换转移,是通过VRRP协议实现的。 在keepalive director工作时,主节点会不断的向备节点发送心跳消息,告知自己还活着,当主节点故障时,备节点无法接收主节点的心跳消息,此时就会启用自身的服务接管程序将主节点的IP和服务资源接管过来。当主节点恢复工作之后,又会释放IP资源和服务,恢复至备节点的角色。 VRRP协议原理简单介绍: VRRP是通过一种竞选协议协议机制来将路由的任务交给VRRP的路由器。在一VRRP的虚拟路由中,有多台物理的VRRP路由器,但是这多台路由器不同时工作,而是由一台Master负责路由工作,其他的都是backup,master是由backup竞争而来的,当master失去响应时,会从余下的backup中选出master来接管IP地址和服务资源。 VRRP协议的所有报文都是通过IP多播的形式传递消息,在一个虚拟路由器中,只有作为Master的VRRP路由器会一直发送VRRP广播包,当其他backup没有收到广播包时候,会迅速抢占master(谁的有限级高,谁就会抢占成功),处于安全性考虑VRRP协议传输数据时候进行了加密。 VRRP是virtual router redundancy protocal(虚拟路由器冗余协议)的缩写。 小结: 1,VRRP是virtual router redundancy protocal(虚拟路由器冗余协议)的缩写。 2,VRRP是通过一种竞选协议协议机制来将路由的任务交给VRRP的路由器。 3,VRRP协议的所有报文都是通过IP多播的形式传递消息 4,处于安全性考虑VRRP协议传输数据时候进行了加密。 官方网站: http://www.keepalived.org/ 编译安装yum安装都可 全局配置: VRRPD 配置: virtual_server VRRP同步组 两个vrrp_instance同属于一个vrrp_rsync_group,那么其中一个vrrp_instance发生故障切换时,另一个vrrp_instance也会跟着切换(即使这个instance没有发生故障)。 VRRP实例 1,Round-robin(RR)轮询:当新请求到达时候,从服务列表中选择一个Real Server,将请求重定向给这台Real Server。 2,Weighted round-robin(WRR)加权轮询:给每台Real Server分配一个权重/位列,权重越大,分到的请求数越多。 3,Destination hashing (DH)目标散列:来自于同一个IP地址的请求都被重定向到同一台Real Server上(保证目标地址不变)。 4,Source hashing(SH)源地址散列:Director必须确保响应的数据包必须通过请求数据包所经过的路由器或者防火墙(保证原地址不变)。 动态调度算法:通过检查服务器上当前连接的活动状态来重新决定下一步调度方式该如何实现。 5,Lease Connection (LC) 最少连接 哪一个Real Server上的连接数少就将下一个连接请求定向到那台Real Server上去。 【算法:连接数=活动连接数 256+非活动连接数】 6,Weight Least-Connection(WLC) 加权最少连接 在最少连接的基础上给每台Real Server分配一个权重。 【算法:连接数=(活动连接数 256+非活动连接数)÷权重】 一种比较理想的算法。 7,Shortest Expected Delay (SED) 最短期望延迟 不再考虑非活动连接数 【算法:连接数=(活动连接数+1) *256 ÷权重】 8,Never Queue (NQ) 永不排队算法,对SED的改进,当新请求过来的时候不仅要取决于SED算法所得到的值,还要取决于Real Server上是否有活动连接。 9,Locality-Based Least-Connection (LBLC) 基于本地状态的最少连接,在DH算法的基础上还要考虑服务器上的活动连接数。 10,Locality-Based Least-Connection with Replication Scheduling (LBLCR) 带复制的基于本地的最少连接 LBLC算法的改进 TCP UDP ESP (Encapsulation Security Payload) IPsec 封装安全负载 AH (Authentication Header) keepalived是实现服务器级别的接管,服务不可用无法切换keepalive,所以需要做好应用层的监控 参考链接: https://www.cnblogs.com/qq78292959/archive/2012/05/31/2528524.html http://www.keepalived.org/
LVS+keepalived配置
Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能。因此,Keepalived除了能够管理LVS软件外,还可以作为其他服务(例如:Nginx、Haproxy、MySQL等)的高可用解决方案软件。 Keepalived软件主要是通过VRRP协议实现高可用功能的。VRRP是Virtual Router RedundancyProtocol(虚拟路由器冗余协议)的缩写,VRRP出现的目的就是为了解决静态路由单点故障问题的,它能够保证当个别节点宕机时,整个网络可以不间断地运行。 注意 1.配置时不要把主从IP弄混淆。(我做的蠢事是,明明是配置两个机器,结果在xshell中把一个IP设置为两个登录名,结果就很尴尬,好似见鬼了) 2.做高可用时应注意几台机器必须有一台是MASTER,否则会出现虚拟IP获取不到的现象。 3.配置启动时,应先启动master,如果先启动backup,backup不会有虚拟IP,只有master获取到虚拟IP后vrrp的通讯才会开始,之后再关闭master,backup 就会获取到虚拟IP了。 负载均衡的配置主从配置是一样的,本次事例配置lvs的DR模式,DR模式是互联网使用最多的形式。 特点 配置脚本 配置时的注意事项 1.lsof无法检测配置是否成功,因为director不会开启响应端口。 2.director要直接能转发到(直连)real-server,不要经过路由器或其他服务器跳转。
Keepalived LVS+DR合设配置方法以及存在的问题
使用Keepalived可以很方便的配置LVS,而Keepalived实现高可用往往都是一主多从的模式,这样的话备机就处于standby状态,浪费了资源。我们可以将LVS和RS节点合设在一起,这样备机虽然不会作为LVS节点转发,但是也可以作为真实服务器提供服务,充分利用资源。 上面是一份常见的Keepalived LVS-DR模式的配置。在LVS不与RS合设的情况下,这份配置是没有问题的。 但是,如果LVS与RS合设,这个配置就会带来一个非常严重的问题: 乒乓现象 。 如上所示,仅仅是一个telnet发起的syn请求,就已经能造成如此巨大的转发量了,如果是生产环境,必然会引起网卡流量风暴。 要想解决乒乓问题,只需要将引发乒乓现象的必要条件给破坏掉。很显然条件1和2都是不能改变的,不然这个问题本身也没有存在的意义了。那我们只能拿条件3开刀了。 既然备机加载了LVS转发规则就会引发乒乓,那么能否让备机不加载规则呢? 而对于备机,我们可以在/etc/keepalived下创建一个目录,如vs_dir,利用notify_backup脚本将virtual_server配置挪到vs_dir中隐藏起来,避免Keepalived加载。当backup节点切换到master状态时,由notify_master节点将目录中隐藏的vs配置挪到/etc/keepalived下,使Keepalived可以正常加载。 上面的办法虽然能解决问题,但是比较繁琐,也不利于故障快速切换。那么我们换个思路,在备机加载了LVS规则的情况下,要想解决问题,只需保证主机上转发过来的消息不进入备机的LVS转发,而是直接由备机的真实服务进行处理。 LVS备机上配置iptables,其中$MAC_Director_A 表示主机的mac地址 keepalived.conf中virtual_server的配置 注意,iptables中给数据包打上的mark值只是一个系统内核中数据结构,并不会实际改变数据包的内容,数据包ip头部中也没有mark的字段。所以备机上收到来自主机转发的请求中,是没有mark标记的,而备机的iptables中也限定了来自主机mac的请求不会打标记,所以请求是不会进入备机的LVS虚拟服务中,而是被RS服务直接处理。 下面介绍的mark标记和lvs工作分别对应netfilter框架中的位置,应该会有助于理解fwmark为什么能解决乒乓问题 如果发生了主备切换,则需要在脚本中调整主备机中的这条iptables配置,将新主机中的配置清除,新备机中加上该配置。 综合来看以上各种方法,更倾向于使用fwmark。方法一实现过于繁琐,也不利于故障快速切换。方法3需要在切换时更改对应角色的iptables配置,增加了切换的不稳定性。而fwmark在部署阶段配置好后则无需再变动,更为可靠。只是要注意防止系统重启导致iptables规则失效。
如何解决Keepalived日志里报的这个错误
如何解决Keepalived日志里报的这个错误
下载后一路Next安装。
安装后注意把python目录本身和它的子目录Script加入到环境变量的Path项。如 D:\Python26 和 D:\Python26\Scripts
安装Jython
如果你需要使用Java开发拓展测试类库,则必须安装Jython
Jython和python的区别可见下文:
安装Jython需要Jdk5或以上,可以在命令行模式下用 Java -version 指令查看JAVA的版本。
如果机子上没有,可以自己去Java的官网下载安装
JDK1.6官方载_JDK6官方下载
Jython的下载页面是
选择2.5.2及以上版本下载。
centos6.5 怎么测试keepalived是否安装成功
安装成功keepalived后,在/etc目录下会生成keepalived目录,里面有个keepalived.conf配置文件。在keepalived.conf配置文件中,找到virtual_ipaddress字段,随便设置一个同网段的IP地址:virtual_ipaddress { #设置lvs vip 192.168.1.1}保存之后运行keepalived,然后查看日志:tail -f /var/log/messages看到下面说明master设置成功:Aug 29 21:59:29 localhost Keepalived_vrrp[13067]: VRRP_Instance(loadbalance) Transition to MASTER STATEAug 29 21:59:34 localhost Keepalived_vrrp[13067]: VRRP_Instance(loadbalance) Entering MASTER STATEAug 29 21:59:34 localhost Keepalived_vrrp[13067]: VRRP_Instance(loadbalance) setting protocol VIPs.Aug 29 21:59:34 localhost Keepalived_vrrp[13067]: VRRP_Instance(loadbalance) Sending gratuitous ARPs on eth0 for 192.168.1.1这时候再查看下ip,如果vip出现了,那么keepalived基本没问题了:ip addrinet 192.168.1.1/32 scope global eth0来源:“成航先森”博客