一、HA集群中的相关术语

1.节点(node

运行HA进程的一个独立主机,称为节点,节点是HA的核心组成部分,每个节点上运行着操作系统和高可用软件服务,在高可用集群中,节点有主次之分,分别称之为主节点/备份节点,每个节点拥有唯一的主机名,并且拥有属于自己的一组资源,例如,磁盘,文件系统,网络地址和应用服务等,主节点上一般运行着一个或多个应用服务,而备节点一般处于监控状态

2.资源(resource

资源是一个节点可以控制的实体,并且当节点发生故障时,这些资源能够被其他节点接管,HA集群软件中,可以当做资源的实体有:

(1)磁盘分区、文件系统

(2)IP地址VIP

(3)应用程序服务

(4)NFS文件系统

3.事件(event

也就是集群中可能发生的事情,例如节点系统故障,网络连通故障,网卡故障,应用程序故障等,这些事情都会发生节点资源发生转移,HA的测试也是基于这些事情来进行的

4.动作(action

事件发生时HA的响应方式,动作是由shell脚本控制的,例如当某个节点发生故障后,备份节点将通过事先设定好的执行脚本进行服务的关闭或启动,进而接管故障节点的资源

二、keepalived简介

keepalived 是linux下一个轻量级的高可用解决方案,它与HACMP实现功能类似,都可以实现服务或者网络的高可用,但是又有差别:hacmp是一个专业的、功能完善的高可用软件,它提供了HA软件所需的基本功能,比如心跳检测和资源接管,检测集群中的系统服务,在集群节点间转移共享ip地址所有者等,hacmp功能强大,但是部署和使用相对麻烦,同时也是商业化软件,与hacmp相比,keepalived主要是通过虚拟路由冗余来实现高可用功能,虽然他没有hacmp功能强大,但是keepalived部署使用相对简单,所有配置只需要一个配置文件即可完成.

三、keepalived的用途

keepalived起初是为lvs设计的,专门用来监控集群系统中各个服务节点的状态,它根据layer3,4 & 5交换机制检测每个服务节点的状态,如果某个服务节点出现异常,或工作出现故障,keepaived将检测到,并将出现故障的服务节点从集群系统中剔除,而在故障节点恢复正常后,keepalived又可以自动将此服务节点重新加入到集群中,这些工作全部自动完成,不需要人工干预,需要人工完成的只是修复故障节点。

Keepalived软件主要是通过VRRP协议实现高可用功能的。VRRP是Virtual Router RedundancyProtocol(虚拟路由器冗余协议)的缩写,VRRP出现的目的就是为了解决静态路由单点故障问题的,它能够保证当个别节点宕机时,整个网络可以不间断地运行。

所以,Keepalived 一方面具有配置管理LVS的功能,同时还具有对LVS下面节点进行健康检查的功能,另一方面也可实现系统网络服务的高可用功能。

keepalived官网http://www.keepalived.org

四、VRRP协议与工作原理

在现实的网络环境中,主机之间的通信都是通过配置静态路由完成的,而主机之间的路由器一旦出现故障,通信就会失败,因此在这种通信模式中,路由器就成了一个单点瓶颈,为了解决这个问题就引入了VRRP协议

VRRP协议是一种主备模式的协议,通过VRRP可以在网络发生故障时透明地进行设备切换不影响主机间的数据通信,这其中涉及两个概念:物理路由器和虚拟路由器

VRRP可以将两台或者多台物理路由器设备虚拟成一个虚拟路由器,这个虚拟路由器通过虚拟IP(一个或多个)对外提供服务,二在虚拟路由器内部,是多个物理路由器协同工作,同一时间只有一台物理路由器对外提供服务,这台物理路由器被称之为主路由器(处于master状态角色)。它拥有对外提供的虚拟ip,提供各种网络功能,比如arp请求、icmp、数据转发等,二其他物理路由器不拥有对外提供的虚拟ip,也不提供对外网络功能,仅仅接收master的vrrp状态通告信息,这些路由器被统称为备份路由器(处于backup角色)。当主路由器失效时,处于backup角色的备份路由器将重新进行选举,产生一个新的主路由器进入master角色继续对外服务,整个切换过程对于用户来说完全同名

在一个虚拟路由器中,只有处于master角色的路由器会一直发送vrrp数据包,处于backup角色的路由器只接受master发过来的报文信息,用来监控master运行状态,因此,不会发生master抢占的现象,除非它的优先级更高,而当master不可用时,backup也就无法收到master发过来的报文信息,于是就认定master出现故障,接着多台backup就会进行选举,优先级最高的backup将成为新的master,这种选举并进行角色的过程非常快,因此也就保证了服务的持续可用性

五、keepalived的体系结构

keepaived是一个高度模块化的软件,结构简单,但扩展性很强,下图是官方给出的keepalived的体系结构

可以看出来,keepalived的体系结构从整体上分为两层,分别是用户空间层和内核空间层。

内核空间层处于最底层,它包括ipvs和netlink两个模块。ipvs模块是keepalived引入的一个第三方模块,通过ipvs可以实现基于ip的负载均衡集群。ipvs默认包含在lvs集群软件中。

内核模块:

IPVS:主要用于通过IPVS跟lvs进行整合,是lvs的核心模块,跟lvs一块使用的

NETLINK:主要实现一些网络的功能

用户模块:主要用于高可用

checker:检查服务状态

vrrp stack:用于DS高可用

六、keepalived的安装与配置

yum install keepalived

yum安装keepalived默认配置文件在/etc/keepalived/keepalived.conf

配置文件主要分为三类分别是:

(1)全局配置

(2)VRRP配置

(3)LVS配置

keepalived的配置文件

 1 第一段:global_defs,全局配置段
 2     global_defs {
 3        notification_email {
 4                237745635@qq.com
 5        }
 6        notification_email_from Alexandre.Cassen@firewall.loc
 7        smtp_server 192.168.200.1
 8        smtp_connect_timeout 30
 9        router_id id1        <<< 当前主机的ID值,这个值必须是唯一的
10     }
11
12
13 第二段:vrrp_instance,实例配置段(虚拟服务段)
14     【该段是定义虚拟服务的vip等信息】
15     vrrp_instance VI_1 {       <<< 指定实例的名称
16         state MASTER           <<< 指定节点的状态,MASTER表示主,BACKUP表示备用节点
17         interface eth0         <<< 指定将VIP绑定在哪个网卡上
18         virtual_router_id 51   <<< 虚拟路由ID,用于标识哪些个节点是一组,同一组的主机的虚拟id需要相同
19         priority 100           <<< 指定该节点的优先级(主这节点的优先级大于备节点)
20         advert_int 1           <<< 指定备节点在几秒之内没有接收到主节点的心跳信息,就接管其业务和资源
21         authentication {       <<< 指定keepalived集群中各个主备节点做认证的方式
22             auth_type PASS
23             auth_pass 1111
24         }
25         virtual_ipaddress {   <<< 指定用于提供服务的ip地址(也就是VIP)
26             10.220.5.233
27         }
28     }
29
30 第三段:virtual_server,虚拟主机配置段
31     【该段主要是给lvs来用,用来定义后端RS节点】
32     virtual_server 10.220.5.222 80 {    #指定实例对应的VIP
33         delay_loop 6                    # 对后端节点做健康检查的时间间隔
34         lb_algo rr                      # 指定负载均衡调度算法
35         lb_kind DR                      # 指定所使用的lvs模型
36         nat_mask 255.255.255.0
37         persistence_timeout 50          # 同一IP的请求50秒内被分配到同一台真实主机
38         protocol TCP                    # 用TCP协议对真实节点做健康检查
39
40         real_server 10.220.5.190 80 {   # 指定一台真实服务器的IP和端口
41             weight 1                    # 设置权重
42             TCP_CHECK {                 # 用建立tcp连接的方式做健康检测
43                 connect_timeout 10      # 设置建立tcp连接的超时时间
44                 delay_before_retry 3    # 超时后多久重试
45                 nb_get_retry 3          # 重试次数
46                 connect_port 80         # 健康检查使用的端口号
47             }
48         }
49
50 real_server 10.220.5.191 80 {
51     weight 1
52     TCP_CHECK {
53         connect_timeout 10
54         nb_get_retry 3
55         delay_before_retry 3
56         connect_port 80
57     }
58 }
59     }

转载于:https://www.cnblogs.com/renyz/p/11394045.html

linux中级之keepalived概念相关推荐

  1. linux中级篇--网络相关命令

    网络相关命令 Linux中常见的网络相关命令如下表所示,本书将选取其中使用较频繁的命令进行讲解. 命令 说明 格式 ifconfig 显示或设置网络设备 ifconfig [网络设备][选项]- pi ...

  2. Linux学习之CentOS(八)--Linux系统的分区概念

    不知不觉已经记录了8篇Linux学习随笔了,虽然还是漂浮在Linux系统的表面,还有很多很多没有学,但是坚持学下去.坚持写下去就是成功的!!!! 在讲Linux系统分区之前,首先得介绍一下硬盘分区的知 ...

  3. linux ps swn,Linux操作的基本概念与命令(转)

    3. 格式化内存,挂载. [root@online2 /]# cd /dev/ [root@online2 dev]# ls ram* //4兆一个内存 ram ram1 ram11 ram13 ra ...

  4. linux进程管理基本概念

    linux进程管理基本概念 进程管理 进程树 什么是进程和程序 启动进程 前台启动进程 后台启动进程 创建进程 1 地址空间 2 进程元数据 3 如何创建进程 特殊进程 僵尸进程 孤儿进程 守护进程 ...

  5. 【Linux】文件系统的概念和类型

    一. Linux文件系统的基本概念 文件系统(File System)是磁盘上有特定格式的一片区域,操作系统利用文件系统保存和管理文件. 不同的操作系统需要使用不同的文件系统,为了与其他操作系统兼容, ...

  6. Linux内核编程(三)----------Linux内核的基本概念

    写在前面:充满机遇与挑战的2019年来了,年前由于各个项目的原因,这个系列停滞了好久,新的一年虽然项目也是非常紧张,但还是争取闲暇的时间利用起来,把这个系列咬咬牙写完.任何成功和舒适,都是苦尽甘来,你 ...

  7. linux 高可用----keepalived+lvs

    什么是高可用? HA(high availability)即高可用性:就是在高可用集群中发生单点故障时,能够自动转移资源并切换服务,以保证服务一直在线的机制. LVS LVS:(linux virtu ...

  8. linux操作系统的特点有哪些,LINUX操作系统有哪些概念和特点?

    嵌入式LINUX操作系统的概念 以应用为中心,以计算机技术为基础,软件.硬件可裁剪,适应应用系统对功能.可靠性.成本.体积.功耗要求严格的专用计算机系统,称为嵌入式系统.一个最小的嵌入式系统的基本组成 ...

  9. linux集群-keepalived介绍-用keepalived配置高可用集群

    2019独角兽企业重金招聘Python工程师标准>>> linux集群介绍: 以功能划分:高可用和负载均衡 高可用集群:通常为两台服务器,一台工作,另外一台作为冗余.实现高可用的开源 ...

  10. Linux内核进程管理基本概念-进程、运行队列、等待队列、进程切换、进程调度

    下面简述一些基本概念,以及对内核代码做最初步的了解: 一 Linux内核进程管理基础 Linux 内核使用 task_struct 数据结构来关联所有与进程有关的数据和结构,Linux 内核所有涉及到 ...

最新文章

  1. 括号匹配算法 java_使用栈实现括号匹配算法-java
  2. python自由落体_VPython - example - 模拟自由落体运动
  3. mysql 安装参考
  4. MySQL IFNULL函数
  5. python模块基础之OS模块
  6. 11.PHP核心技术与最佳实践 --- 高性能网站架构方案
  7. java整型_java整型数值
  8. ESP32 开发笔记(十一)使用 ESP32 做为 WebServer
  9. 湖北 政府项目 软件 测试,湖北电子政务应用系统技术验收测试规范.doc
  10. 清理window日志垃圾.bat
  11. linux卸载nps,Linux NPS服务部署
  12. 计算机设备管理没有打印机,win7电脑的设备和打印机选项无法打开怎么办?
  13. Python中三个双引号的作用是什么?
  14. 北航2019计算机学院就业报告,北京航空航天大学2019届毕业生就业质量年度报告.pdf...
  15. 安装QT时遇到:canot start “d:\qt\vcredist\vcredist_x64.exe/norestart/q“:process failed to start :请求的操作需要提升
  16. 各种常用文件后缀名详解
  17. spark ML算法之线性回归使用
  18. 声纹识别之说话人验证speaker verification
  19. 为人处事的19个技巧
  20. 基于Web的商城后台管理系统的设计与实现

热门文章

  1. MySql安全模式下修改root账号密码
  2. 群集之 COROSYNC OPENAIS +PACEMAKER +REBD+WEB
  3. 「leetcode」129. 求根到叶子节点数字之和【递归中隐藏着回溯】详解
  4. 「leetcode」700. 二叉搜索树中的搜索:【递归法】【迭代法】详解
  5. iOS开发UITableViewCell右边的原生图标设置
  6. Nik Collection 4.2.0 for Mac(PS滤镜插件套装)
  7. Mac勿扰模式使用技巧
  8. PDFelement如何快速地将文本添加到PDF?
  9. 如何使用postman带Token测试接口?
  10. 《深入理解Java虚拟机》读书总结