简介

Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。

工作原理

Layer3,4&5工作在IP/TCP协议栈的IP层,TCP层,及应用层,原理分别如下:

Layer3:Keepalived使用Layer3的方式工作式时,Keepalived会定期向服务器群中的服务器发送一个ICMP的数据包(既我们平时用的Ping程序),如果发现某台服务的IP地址没有激活,Keepalived便报告这台服务器失效,并将它从服务器群中剔除,这种情况的典型例子是某台服务器被非法关机。Layer3的方式是以服务器的IP地址是否有效作为服务器工作正常与否的标准。

Layer4:如果您理解了Layer3的方式,Layer4就容易了。Layer4主要以TCP端口的状态来决定服务器工作正常与否。如web server的服务端口一般是80,如果Keepalived检测到80端口没有启动,则Keepalived将把这台服务器从服务器群中剔除。

Layer5:Layer5对指定的URL执行HTTP GET。然后使用MD5算法对HTTP GET结果进行求和。如果这个总数与预期值不符,那么测试是错误的,服务器将从服务器池中移除。该模块对同一服务实施多URL获取检查。如果您使用承载多个应用程序服务器的服务器,则此功能很有用。此功能使您能够检查应用程序服务器是否正常工作。MD5摘要是使用genhash实用程序(包含在keepalived软件包中)生成的。

SSL_GET与HTTP_GET相同,但使用SSL连接到远程Web服务器。

MISC_CHECK:此检查允许用户定义的脚本作为运行状况检查程序运行。结果必须是0或1.该脚本在导演盒上运行,这是测试内部应用程序的理想方式。可以使用完整路径(即/path_to_script/script.sh)调用可以不带参数运行的脚本。那些需要参数的需要用双引号括起来(即"/path_to_script/script.sh arg 1 ... arg n")

keepalived实现双机热备

 

  keepalived的作用是检测后端TCP服务的状态,如果有一台提供TCP服务的后端节点死机,或者工作出现故障,keepalived会及时检测到,并将有故障的节点从系统中剔除,当提供TCP服务的节点恢复并且正常提供服务后keepalived会自动将TCP服务的节点加入到集群中。这些工作都是keepalived自动完成,不需要人工干涉,需要人工做的只是修复发生故障的服务器,以下通过示例来演示。

  前提:为了测试能顺利进行,需先关闭selinux和firewalld。

  测试环境如下:

1
2
3
4
5
keepalived主机: 10.0.0.20
keepalived备机: 10.0.0.21
http服务器1:   10.0.0.22
http服务器2:   10.0.0.23
VIP :       10.0.0.100

一、两台http服务器的安装

  1、  两台机均安装httpd

1
$ sudo yum install -y httpd

  2、  添加首页

1
2
3
4
5
6
7
$ sudo -i
 
#http服务器1设置
# echo “10.0.0.22” >/var/www/html/index.html
 
#http服务器2设置
# echo “10.0.0.23” >/var/www/html/index.html

  3、  启动并设置开机启动httpd

1
2
$ sudo systemctl start httpd
$ sudo systemctl enable httpd

二、两台keepalived主机的设置

  1、  两台机均安装keepalived

1
2
3
#安装依赖文件与keepalive
 
$ sudo yum install -y openssl openssl-devel keepalived

  2、  keepalived主机配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
$ sudo vim /etc/keepalived/keepalived.conf
 
  vrrp_instance VI_1 {
    #指定该节点为主节点,备用节点设置为BACKUP
    state MASTER
 
    #绑定虚拟IP的网络接口
    interface eno16777736
 
    #VRRP组名,两个节点设置一样,以指明各个节点同属一VRRP组
    virtual_router_id 51
 
    #主节点的优先级,数值在1~254,注意从节点必须比主节点的优先级别低
    priority 50
 
    ##组播信息发送间隔,两个节点需一致
    advert_int 1
 
    #设置验证信息,两个节点需一致
    authentication{
      auth_type PASS
      auth_pass 1111
    }
 
    #指定虚拟IP,两个节点需设置一样
    virtual_ipaddress{
      10.0.0.100
    }
 }
#虚拟IP服务
virtual_server 10.0.0.100 80 {
    #设定检查间隔
    delay_loop 6
 
   #指定LVS算法
    lb_algo rr
 
   #指定LVS模式
    lb_kind NAT
    nat_mask 255.255.255.0
 
   #持久连接设置,会话保持时间
   persistence_timeout 50
 
   #转发协议为TCP
   protocol TCP
 
  #后端实际TCP服务配置
  real_server 10.0.0.22 80 {
     weight 1
  }
 
  real_server 10.0.0.23 80 {
     weight 1
  }
}

  3、   keepalived备机的keepalived.conf的配置,不同之处如下:

1
2
3
4
state BACKUP
priority 30
 
#其它配置跟keepalived主机相同

  /etc/keepalived/keepalived.conf为keepalived的主配置文件。以上配置state表示主节点为10.0.0.20,副节点为10.0.0.21。虚拟为IP10.0.0.100。后端的真实服务器为10.0.0.22和10.0.0.23,当通过10.0.0.100访问web服务器时,自动转到后端真实服务器,后端节点的权重相同,类似轮询的模式。

三、keepalived的启动与测试

  1、  启动keepalived

1
2
$ sudo systemctl start keepalived
$ sudo systemctl enable keepalived

  2、  查看keepalived主机的IP

1
$ ip addr show

四、测试结果

  1、  测试前查看keepalived主机和备机的IP,结果如图:

  2、  重启keepalived主机后,查看keepalived备机的IP显示

  以上测试结果说明,当keepalived备机在keepalived主机宕机的情况会自动接管了资源。但待keepalived主机恢复正常的时候,主机会重新接管资源。

keepalived入门的更多相关文章

  1. Keepalived入门学习

    一个执着于技术的公众号 Keepalived简介 Keepalived 是使用C语言编写的路由热备软件,该项目软件起初是专门为LVS负载均衡设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后 ...

  2. nginx:负载均衡实战(二) keepalived入门

    1.keepalived介绍 顾名思义,keepalived就是保持网络在线的,用来保证集群高可用HA的服务软件.主要防止出现单点故障(坏了一个点导致整个系统架构不可用) 2.详解keepalived ...

  3. 实战| Nginx+keepalived 实现高可用集群

    一个执着于技术的公众号 前言 今天通过两个实战案例,带大家理解Nginx+keepalived 如何实现高可用集群,在学习新知识之前您可以选择性复习之前的知识点: 给小白的 Nginx 10分钟入门指 ...

  4. 干货 | Keepalived高可用服务配置实例

    一个执着于技术的公众号 Keepalived系列导读 Keepalived入门学习 keepalived安装及配置文件详解 前言 在前面的章节中,我们学习了Keepalived简介.原理.以及Keep ...

  5. keepalived安装及配置文件详解

    一个执着于技术的公众号 在上一篇文章中,我们对Keepalived进行了简单入门学习: Keepalived入门学习 今天我们继续学习Keepalived服务. 一.安装Keepalived服务 两种 ...

  6. LVS入门篇(五)之LVS+Keepalived实战

    一.实验架构和环境说明 (1)本次基于VMware Workstation搭建一个四台Linux(CentOS 7.4)系统所构成的一个服务器集群,其中两台负载均衡服务器(一台为主机,另一台为备机), ...

  7. Nginx入门篇(七)之Nginx+keepalived高可用集群

    一.keepalived介绍 keepalived软件最开始是转为负载均衡软件LVS而设计,用来管理和监控LVS集群系统中各个服务节点的状态,后来又加入了可实现高可用的VRRP功能.所以Keepali ...

  8. Keepalived安装配置入门

    准备两台虚拟机,IP如下: A:192.168.1.11 B:192.168.1.12 A为Master,B为BackUp 1.安装 yum install keepalived -y 2.配置 A服 ...

  9. Dubbo入门到精通学习笔记(二十):MyCat在MySQL主从复制的基础上实现读写分离、MyCat 集群部署(HAProxy + MyCat)、MyCat 高可用负载均衡集群Keepalived

    文章目录 MyCat在MySQL主从复制的基础上实现读写分离 一.环境 二.依赖课程 三.MyCat 介绍 ( MyCat 官网:http://mycat.org.cn/ ) 四.MyCat 的安装 ...

随机推荐

  1. java线程安全问题原理性分析

    1.什么是线程安全问题? 从某个线程开始访问到访问结束的整个过程,如果有一个访问对象被其他线程修改,那么对于当前线程而言就发生了线程安全问题:如果在整个访问过程中,无一对象被其他线程修改,就是线程安全 ...

  2. grunt 常用插件有哪些?

    作者:顾城链接:https://www.zhihu.com/question/21917526/answer/19747259来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出 ...

  3. 从软件工程师的角度看MacBook Air的几个设计亮点

    我多年从事软件开发和运营工作,从未跟“设计”间断过.现在在设计一个全新saas产品:超级表格(www.domypp.com).最近买了台苹果最新款的笔记本电脑MacBook Air,从该产品功能设计和 ...

  4. Sharepoint 2013企业内容管理学习笔记(一) 半自动化内容管理

    大家好,今天我来与大家分享一个关于sharepoint2013文档管理方面的一个知识,我相信也许早就有人了解并熟知这项技术了,呵呵,众所周知,sharepoint 有一个很亮的功能,什么?没错,就是文 ...

  5. Python——追加学习笔记(三)

    错误与异常 AttributeError:尝试访问未知的对象属性 eg. >>> class myClass(object): ... pass ... >>> m ...

  6. 【java开发系列】—— 深克隆和浅克隆

    Java支持我们对一个对象进行克隆,通常用在装饰模式和原型模式中.那么什么是深克隆,什么是浅克隆呢. [浅克隆],通常只是对克隆的实例进行复制,但里面的其他子对象,都是共用的. [深克隆],克隆的时候 ...

  7. Ubuntu 14.04默认以字符界面启动

    在windows上跑虚拟机比较资源,特别当以图形界面启动时,如果宿主机性能不好,就相当卡. 让Ubuntu 14.04默认以字符界面启动的方法: 编辑文件:etc/default/grub 将  GR ...

  8. GitLab 数据自动备份

    gitlab自动备份 周期性计划任务: crontab -e * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create service crond ...

  9. Git warning push.default is unset

    warning: push.default is unset; its implicit value is changing in Git 2.0 from 'matching' to 'simple ...

  10. javaw.exe 和java.exe的区别

    1.java启动的程序是命令行程序或阻塞程序,如果该程序未执行完毕或未被关闭,则所打开的命令行将被阻塞,不能执行其它命令如dir等,可以通过Ctrl+C等方式关闭程序:2.javaw启动的程序是窗口程 ...