keepliave
keepalived的主要功能
1. healthcheck:
检查后端节点是否正常工作
如果发现后端节点异常,就将该异常节点从调度规则中删除;
如果发现后端的异常节点恢复正常了,就将该节点重新加入到调度规则中;
2. failover:
是对调度器的主节点做健康检测。
将备用节点升级为主节点
接管主节点上的资源(vip、lvs规则)
3.keepalived实现故障切换的原理
1.keepalived是基于vrrp写于实现的故障切换
2.正常情况下,主节点会每隔一段时间向备节点发送一个心跳信息,这个就是告诉备节点自己正常。
3.当主节点发生故障,那么备节点无法接收都心跳信息,就认定主节点故障,那么就会接收主节点的业务和资源(包括vip)
4.当主节点又恢复的时候,那么备节点释放所接收到资源和业务
vrrp协议
1. VRRP((Virtual Router Redundancy Protocol),虚拟路由冗余协议,为了解决静态路由的单点故障问题
2. VRRP的工作机制是基于竞选机制选择一个路由来完成任务处理
3. VRRP协议是通过发送多播数据包实现竞选的(Multicat)
4. 竞选出来主节点会一直发送广播包,backup节点一直监听这些广播包(处于监听状态)
5. 当备用节点无法接收到广播包的是时候,就会重新进行竞选,选出一个新的节点作为主节点
keepalived可以完成如下工作
1. 自动生成vip(vip给用户提供服务)
2. 自动配置lvs规则
3. 可以实现各种服务的高可用
4. failover的时候,做vip的漂移
案例:实现64(master) 和 65(backup) 两个主机上的web服务的高可用,提供服务的IP 233
第一步:在实现高可用的节点的上安装keepalived(都需要安装)
[root@ ~]# yum install keepalived -y
第二步:配置keepalived
[root@ ~]# vim /etc/keepalived/keepalived.conf
global_defs { <<<全局配置段
notification_email {
@qq.com
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout
router_id LVS_DEVEL <<< 当前主机的ID值,这个值必须是唯一的
} vrrp_instance VI_1 { <<< 指定实例的名称
state MASTER <<<指定节点的状态,MASTER表示主,BACKUP表示备用节点
interface eth0 <<< 指定将VIP绑定在哪个网卡上
virtual_router_id 51 <<< 虚拟路由ID,用于标识哪些个节点是一组,同一组的主机的虚拟id需要相同
priority 100 <<< 指定该节点的优先级(主这节点的优先级大于备节点)
advert_int 1 <<< 指定备节点在几秒之内没有接收到主节点的心跳信息,就接管其业务和资源
authentication {
auth_type PASS <<< 指定keepalived集群中各个主备节点做认证的方式
auth_pass
}
virtual_ipaddress {
10.220.5.233 <<< 指定用于提供服务的ip地址(也就是VIP)
}
} virtual_server 10.220.5.233 { <<<指定实例对应的VIP
delay_loop 6 <<<对后端节点做健康检查的时间间隔
lb_algo rr <<<指定负载均衡调度算法
lb_kind DR
persistence_timeout 50 <<<同一IP的请求50秒内被分配到同一台真实主机
protocol TCP <<<用TCP协议对真实节点做健康检查 real_server 10.220.5.64 { <<< 指定一台真实服务器的IP和端口
weight 1 <<<设置权重
TCP_CHECK{ <<<用建立tcp连接的方式做健康检测
connect_timeout 10 <<<设置建立tcp连接的超时时间
delay_before_retry 3 <<<超时后多久重试
nb_get_retry 3 <<<重试次数
connect_port 80 <<<健康检查使用的端口号j
real_server 10.220.5.65 80 { <<< 指定一台真实服务器的IP和端口
weight 1 <<<设置权重
TCP_CHECK{ <<<用建立tcp连接的方式做健康检测
connect_timeout 10 <<<设置建立tcp连接的超时时间
delay_before_retry 3 <<<超时后多久重试
nb_get_retry 3 <<<重试次数
connect_port 80 <<<健康检查使用的端口号 }
}
} 解决监听的ip不存在的问题(nginx,httpd)
在/etc/sysctl.conf增加一个选项
net.ipv4.ip_nolocal_bind =1
这是在启动服务的时候不检查所绑定的vip是否存在
keepliave的更多相关文章
- Nginx - keepliave 相关知识点
目录 - 1. 前言- 2. keepalive 介绍- 3. Nginx 与 keepalive 的关系 - 3.1 Nginx - keepalive_timeout - 3.2 Ng ...
- Nginx学习总结:proxy与rewrite模块(三)
斜体下划线,表示建议采用默认配置,无需显式的配置 一.ngx_http_upstream_module 此模块中可配置的指令并不是很多.nginx的负载均衡算法包括: 1)round-robin:轮询 ...
随机推荐
- gdb问题value optimized out
gdb正常print一个变量的值: 但如果gdb调试程序的时候打印变量值会出现<value optimized out> 情况: 可以在gcc编译的时候加上 -O0参数项,意思是不进行编译 ...
- docker容器以ROOT账号登录(获取ROOT权限/ROOT密码)
第一步:查看容器的CONTAINER ID docker ps 第二步:获取root权限,例如需要进入的CONTAINER ID为4650e8d1bcca docker exec -ti -u roo ...
- 自己DIY出来一个JSON结构化展示器
说来也巧,这个玩意,一直都想亲手写一个,因为一直用着各种网上提供的工具,觉得这个还是有些用途,毕竟,后面的实现思路和原理不是太复杂,就是对json的遍历,然后给予不同节点类型以不同的展现风格. 我这次 ...
- PowerShell ISE:Windows Server 2008 R2默认不安装
PowerShell ISE:Windows Server 2008 R2默认不安装,需要手动安装,在PowerShell运行如下两段脚本: Import-Module ServerManager A ...
- 通用路由封装协议——GRE
一.GRE简介 通用路由封装协议GRE(Generic Routing Encapsulation)可以对某些网络层协议(如IPX.ATM.IPv6.AppleTalk等)的数据报文进行封装,使这些被 ...
- eclipse项目上传服务器注意事项
1.先准备服务器环境 2 数据库导入,tomcat安装 3 开放服务器端口,配置网络 4.修改本地代码修改为发布版本,即ip,账号密码数据库等 5 变动的信息应该写在配置文件或者一个全局产量中,这样才 ...
- JavaScript最后的课程笔记
一.快捷位置和尺寸 DOM已经提供给我们计算后的样式,但是还觉得不方便,所以DOM又提供给我们一些API: ele.offsetLeft ele.offsetTop ele.offsetWidth e ...
- 20175236 《Java程序设计》实验一(Java开发环境的熟悉)实验报告
一.实验报告封面 课程:Java程序设计 班级:1752班 姓名:温丰帆 学号:20175236 指导教师:娄嘉鹏 实验日期:2019年4月2日 实验时间:13:45 - 15:25 实验序号:实验一 ...
- 知识点:Mysql 索引原理完全手册(2)
知识点:Mysql 索引原理完全手册(1) 知识点:Mysql 索引原理完全手册(2) 知识点:Mysql 索引优化实战(3) 知识点:Mysql 数据库索引优化实战(4) 八. 联合索引与覆盖索引 ...
- Service Worker 离线无法缓存Post请求的问题解决
许多非REST API甚至可以用于读取数据的POST请求:典型的例子是graphql.soap和其他rpcpapi.但是,Post请求不能在一个现成的渐进式Web应用程序中缓存和脱机使用.浏览器的缓存 ...