一、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 Redundancy Protocol(虚拟路由器冗余协议)的缩写,它出现的目的是为了解决静态路由出现的单点故障问题,通过VRRP可以实现网络不间断的、稳定的运行,因此,keepalived一方面具有服务器状态监测和故障隔离功能,另一方面也具有HA Cluster功能,下面详细介绍下VRRP协议的实现过程

四、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的体系结构从整体上分为两层,分别是用户空间层和内核空间层。下面介绍一个keepalived两层结构的详细组成及实现的功能。

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

这里有一个误区,由于keepalived可以和ipvs一起很好的工作,所以很多初学者都认为keepalived是一个负载均衡的软件,这种理解是错误的

内核模块:

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配置

基于mysql或者mariadb数据库的高可用如下配置

! Configuration File for keepalived

global_defs {
notification_email {
}
} vrrp_script chk_mysql { #check_mysql是为执行脚本计划起的名字
script "/root/sh/check_mysql.sh" #指定要执行脚本的路径
interval ##脚本执行间隔,每2s检测一次
} vrrp_instance HA_1 {
state BACKUP
interface ens33
virtual_router_id
priority
advert_int
nopreempt
authentication {
auth_type PASS
auth_pass
}
virtual_ipaddress {
192.168.254.250
}
track_script {
chk_mysql
}
}

基于web网站的负载均衡高可用如下配置

keepalived:
yum install keepalived
vim /etc/keepalived/keepalived.conf ! Configuration File for keepalived
#全局配置
global_defs {
notification_email {
#收件人地址
}
#邮件服务器
}
VRRP配置DS1
vrrp_instance VI_1 {
state MASTER #角色类型MASTER|BACKUP
interface ens33 #网卡名称
virtual_router_id 51 #虚拟路由id(需要与BACKUP一致)
priority 100 #优先级
advert_int 1 #没1秒检查一次
#nopreempt #非抢占模式 authentication {
auth_type PASS #认证类型 主备之间必须一样
auth_pass 1111 #认证密码 主备之间必须一样
}
virtual_ipaddress {
192.168.254.250 #虚拟ip(vip)
}
} #LVS配置
virtual_server 192.168.254.250 80 {
delay_loop 3 #健康检查时间间隔
lb_algo rr #负载均衡调度算法
lb_kind DR #负载均衡转发规则
protocol TCP #协议 real_server 192.168.254.18 80 { #要监控的real_server的ip和端口号
weight 1 #权重
TCP_CHECK { #基于tcp协议的检查
connect_timeout 3 #连接时间超时
retry 3 #重连次数
delay_before_retry 3 #重连间隔时间
}
} real_server 192.168.254.19 80 {
weight 1
TCP_CHECK {
connect_timeout 3
retry 3
delay_before_retry 3
}
}
}

上述配置虽然可以预防RS的单点故障,但是DS的单点故障并没有消除,所以需要给DS在加一个备份机器

上述配置中拷贝一份到备机上可以用scp keepalived.conf root@192.168.254.20:/etc/keepalived

需要改写的地方:

state MASTER #角色类型MASTER|BACKUP

priority 55 #优先级(这里需要设置比master机器小的值)

keepalived概述的更多相关文章

  1. Keepalived概述和安装(1)

    一.Keepalived概述 本文主要了解开源高可用负载均衡集群利器keepalived,掌握keepalived的安装,运用keepalived配置高可用集群,并能够实现keepalived与负载均 ...

  2. 搭建Keepalived+LVS-DR集群

    (1).Keepalived概述 keepalived 是一个类似于 layer3, 4 & 5 交换机制的软件,也就是我们平时说的第 3 层.第 4 层和第 5层交换. Keepalived ...

  3. Keepalived服务详解

    1. VRRP协议 1.1 VRRP协议概述 VRRP协议的出现是为了解决静态路由的单点故障,它是通过一种竞选机制来将路由任务交给某个vrrp路由器的 在VRRP物理结构中,有多个物理的VRRP路由器 ...

  4. 一次 Keepalived 高可用的事故,让我重学了一遍它!

    原文首发: 你好,我是悟空. 前言 上次我们遇到了一个 MySQL 故障的事故,这次我又遇到了另外一个奇葩的问题: Keepalived 高可用组件的虚拟 IP 持续漂移,导致 MySQL 主从不断切 ...

  5. Linux负载均衡概念与实践(二)

    构建实践LVS+Keepalived实现负载均衡 keepalived概述 1.keepalived是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换和健康检查功能——判断LVS负载调度器 ...

  6. WEB相关系列

    一.Nginx(web服务器) Nginx概述和安装(1) Nginx配置文件(2) Nginx日常维护操作(3) Nginx常用配置实例(4) Nginx常用功能(5) Nginx性能优化技巧(6) ...

  7. CentOS7系统管理与运维实战

    CentOS7系统管理与运维实战 下载地址 https://pan.baidu.com/s/1KFHVI-XjGaLMrh39WuhyCw 扫码下面二维码关注公众号回复100007 获取分享码 本书目 ...

  8. mamcached+(magent+keepalived高可用)搭建及理论概述

    目录 一.理论概述 工作流程 二.部署 环境 环境概述 部署 三.测试 四.总结 一.理论概述 Memcached服务器端与PHP-Memcache客户端安装配置_服务器应用_Linux公社-Linu ...

  9. HaProxy+Keepalived+Mycat高可用群集配置

    概述 本章节主要介绍配置HaProxy+Keepalived高可用群集,Mycat的配置就不在这里做介绍,可以参考我前面写的几篇关于Mycat的文章. 部署图: 配置  HaProxy安装 181和1 ...

随机推荐

  1. SQL Server 将一个表中字段的值复制到另一个表的字段中

    具体方法如下 一:update 表2 set (要插入的列名)= select 表1.某一列 from 表1 left jion 表2 on 表1和表2的关联 where ..... 二:update ...

  2. 关于UIPageViewController那些事

    一.前言 这些天有新生问及UIPageViewController这个视图控制器,自己原来没有用过,所以就看了一下相关的知识,就写了下来,分享一下经验. 主要的关于这个控制器的内容就从例子中去解说了. ...

  3. File类_常见的方法(获取目录中指定规则的内容)

    首先定义过滤器 import java.io.File; import java.io.FilenameFilter; public class FileByJava implements Filen ...

  4. 全文索引搜索whoosh

    问题 Whoosh是python中解决索引查找的模块,在讨论索引查找的文章已经对有关索引查找进行了阐述,此处具体说明Whoosh模块的应用. 思路说明 Whoosh的安装 这里有具体内容(链接被被阉割 ...

  5. 如何用命令行刷新,启用,禁用Magento2的缓存

    当你使用Magento商店时如何刷新Magento 2中的Cache命令行是基本的常用操作.Magento 2默认有12种缓存类型.在命令行中有5个简单的命令来管理缓存.在这篇文章中,我将逐步向您展示 ...

  6. java web,从零开始,一步一步配置ssm(Spring+SpringMVC+MyBatis)框架

    1.安装JDK: 安装之后要配置环境变量,在系统变量里: 新建变量名JAVA_HOME,变量值C:\Program Files\Java\jdk1.8.0_77: 新建变量名CLASSPATH,变量值 ...

  7. Class中的getClasses与getDeclaredClasses方法作用于区别

    getClasses和getDeclaredClasses的区别: getClasses得到该类及其父类所有的public的内部类. getDeclaredClasses得到该类所有的内部类,除去父类 ...

  8. maven 打包生成doc和源码插件

    <!--配置生成Javadoc包--> <plugin> <groupId>org.apache.maven.plugins</groupId> < ...

  9. windows下手动安装 Apache+php+mysql

    PHP 为什么先说php,因为apache的配置要写入php的一些路径 http://php.net/downloads.php  选择windows donwload 选择Thread Safe的版 ...

  10. 可长点心吧-sort

    sort #<algorithm> 用的时候一定是 从 第一个(你想要排序的范围内的) 到 最后一个+1 真的错了不止一次了 真的长点心吧