目录

  • 一.Keepalived简介
  • 二.Keepalvied的工作原理
  • 三.vrrp相关
    • 1.术语
    • 2.技术
  • 四.搭建设想
  • 五.构建过程
    • 1.主机配置
      • 基本配置
      • 网卡配置(直接编写keepalived.conf,可以不要设置虚拟网卡)
      • ipvsamd 策略
      • keepalived策略
    • 2.备份LVS服务器配置
      • 网卡配置(直接编写keepalived.conf,可跳过此步骤)
      • ipvsadm配置和keepalived策略
    • 3.真实主机配置
    • 4.客户机测试
      • DOWN 掉主LVS的keepalived
  • 六.优化功能
    • 1.日志功能
    • 2.单播多播地址
      • 2.1修改多播
      • 2.2单播设定
    • 3.通知脚本

一.Keepalived简介

Keepalived是Linux下一个轻量级别的高可用解决方案。高可用(High Avalilability,HA),其实两种不同的含义:广义来讲,是指整个系统的高可用行,狭义的来讲就是之主机的冗余和接管,

它与HeartBeat RoseHA 实现相同类似的功能,都可以实现服务或者网络的高可用,但是又有差别,HeartBeat是一个专业的、功能完善的高可用软件,它提供了HA 软件所需的基本功能,比如:心跳检测、资源接管,检测集群中的服务,在集群节点转移共享IP地址的所有者等等。HeartBeat功能强大,但是部署和使用相对比较麻烦,

与HeartBeat相比,Keepalived主要是通过虚拟路由冗余来实现高可用功能,虽然它没有HeartBeat功能强大,但是Keepalived部署和使用非常的简单,所有配置只需要一个配置文件即可以完成。

二.Keepalvied的工作原理

Keepalived起初是为LVS设计的,专门用来监控集群系统中各个服务节点的状态,它根据TCP/IP参考模型的第三、第四层、第五层交换机制检测每个服务节点的状态,如果某个服务器节点出现异常,或者工作出现故障,Keepalived将检测到,并将出现的故障的服务器节点从集群系统中剔除,这些工作全部是自动完成的,不需要人工干涉,需要人工完成的只是修复出现故障的服务节点
Keepalived作为一个高性能集群软件,它还能实现对集群中服务器运行状态的监控以及故障隔离,下面我们介绍一下Keepalived对服务器运行状态和故障隔离的工作原理。

Keepalived工作在TCP/IP 参考模型的 三层、四层、五层,也就是分别为:网络层,

传输层和应用层,根据TCP、IP参数模型隔层所能实现的功能,Keepalived运行机制如下:

在网络层:我们知道运行这4个重要的协议,互联网络IP协议,互联网络可控制报文协议ICMP、地址转换协议ARP、反向地址转换协议RARP,在网络层Keepalived在网络层采用最常见的工作方式是通过ICMP协议向服务器集群中的每一个节点发送一个ICMP数据包(有点类似与Ping的功能),如果某个节点没有返回响应数据包,那么认为该节点发生了故障,Keepalived将报告这个节点失效,并从服务器集群中剔除故障节点。

在传输层:提供了两个主要的协议:传输控制协议TCP和用户数据协议UDP,传输控制协议TCP可以提供可靠的数据输出服务、IP地址和端口,代表TCP的一个连接端,要获得TCP服务,需要在发送机的一个端口和接收机的一个端口上建立连接,而Keepalived在传输层里利用了TCP协议的端口连接和扫描技术来判断集群节点的端口是否正常,比如对于常见的WEB服务器80端口。或者SSH服务22端口,Keepalived一旦在传输层探测到这些端口号没有数据响应和数据返回,就认为这些端口发生异常,然后强制将这些端口所对应的节点从服务器集群中剔除掉。

在应用层:可以运行FTP,TELNET,SMTP,DNS等各种不同类型的高层协议,Keepalived的运行方式也更加全面化和复杂化,用户可以通过自定义Keepalived工作方式,例如:可以通过编写程序或者脚本来运行Keepalived,而Keepalived将根据用户的设定参数检测各种程序或者服务是否允许正常,如果Keepalived的检测结果和用户设定的不一致时,Keepalived将把对应的服务器从服务器集群中剔除

功能:

  • 基于vrrp协议完成地址流动
  • 为vip地址所在的节点生成ipvs规则(在配置文件中预先定义)
  • 为ipvs集群的各RS做健康状态检测
  • 基于脚本调用接口完成脚本中定义的功能,进而影响集群事务,以此支持nginx、haproxy等服务

三.vrrp相关

1.术语

虚拟路由器:Virtual Router 虚拟路由器标识:VRID(0-255)物理路由器:master  :主设备backup  :备用设备priority:优先级VIP:Virtual IP VMAC:Virutal MAC (00-00-5e-00-01-VRID)GraciousARP

2.技术

通告:心跳,优先级等;周期性
工作方式:抢占式,非抢占式,延迟抢占模式
实际工作中,非抢占式,
安全认证:

  • 无认证
  • 简单字符认证:预共享密钥
  • MD5

工作模式:

  • 主/备:单虚拟路径器
  • 主/主:主/备(虚拟路由器1),备/主(虚拟路由器2)

四.搭建设想


就是建立两台LVS,保证网络畅通,即使一台损坏,老化,备用服务器可以立马顶上

机器 IP地址
主LVS负载调度器 192.168.133.50
备LVS负载调度器 192.168.133.100
RS服务器1 192.168.133.75
RS服务器2 192.168.133.99
客户端 IP地址自定义

五.构建过程

所有主机都必须关闭防火墙

[root@host ~]# systemctl stop firewalld
[root@host ~]# setenforce 0

1.主机配置

基本配置

[root@host ~]# vi /etc/sysctl.conf

在末尾编写如下代码

[root@host ~]# sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

网卡配置(直接编写keepalived.conf,可以不要设置虚拟网卡)

[root@host ~]# cd /etc/sysconfig/network-scripts/                                           进入网卡编辑
[root@host network-scripts]# cp ifcfg-ens33 ifcfg-ens33:0                            复制文件到虚拟网卡
[root@host network-scripts]# vim ifcfg-ens33:0

[root@host network-scripts]# systemctl restart network
[root@host network-scripts]# ifconfig

ipvsamd 策略

[root@host ~]# yum install -y ipvsadm*
[root@host ~]# modprobe ip_vs
[root@host ~]# cat /proc/net/ip_vs
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn
[root@host ~]# ipvsadm-save >/etc/sysconfig/ipvsadm
[root@host ~]# systemctl start ipvsadm
[root@host ~]# ipvsadm -C                                                                         直接编写keepalived.conf以下可不用设定,因为会自动开启
[root@host ~]# ipvsadm -A -t 192.168.133.200:80 -s rr
[root@host ~]# ipvsadm -a -t 192.168.133.200:80 -r 192.168.133.99:80 -g
[root@host ~]# ipvsadm -a -t 192.168.133.200:80 -r 192.168.133.75:80 -g
[root@host ~]# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  host:http rr-> 192.168.133.75:http          Route   1      0          0         -> 192.168.133.99:http          Route   1      0          0
[root@host ~]# ipvsadm -ln

keepalived策略

[root@host ~]# yum install -y keepalived
[root@host ~]# cd /etc/keepalived/
[root@host keepalived]# ls
keepalived.conf
[root@host keepalived]# cp keepalived.conf keepalived.conf.bak
[root@host keepalived]# ls
keepalived.conf  keepalived.conf.bak
[root@host keepalived]# vim keepalived.conf




[root@host keepalived]# systemctl enable keepalived
Created symlink from /etc/systemd/system/multi-user.target.wants/keepalived.service to /usr/lib/systemd/system/keepalived.service.

2.备份LVS服务器配置

网卡配置(直接编写keepalived.conf,可跳过此步骤)

[root@back ~]# systemctl restart network                                网卡配置差不多,但重启网不能用这条命令
[root@back ~]#ifup ens33:0                                            得用这条命令 但会报错,因为两个服务器的vip一样
ERROR     : [/etc/sysconfig/network-scripts/ifup-eth] Error, some other host (00:0C:29:D1:E8:8B) already uses address 192.168.133.200.

解决办法找到以下内容注释掉

[root@back ~]# ifup ens33:0                        这时再用这条命令启动网卡

第二种方法
主LVS上用ifup ens33:0 启动
备用LVS上用systemctl restart network启动,不需要修改文件即可

ipvsadm配置和keepalived策略

装好ipvsadm并设置同主机设置相同
安装keepalived后,将主机文件发往备份机

[root@host ~]# scp /etc/keepalived/keepalived.conf root@192.168.133.100:/etc/keepalived/
The authenticity of host '192.168.133.100 (192.168.133.100)' can't be established.
ECDSA key fingerprint is SHA256:eBYF1NpUpJHEFPq/PtM1L7nhNgFIIqXoIU3xGy8umVU.
ECDSA key fingerprint is MD5:b1:fa:bd:29:6c:f5:9e:aa:84:f0:6b:b2:7e:ef:3c:df.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.133.100' (ECDSA) to the list of known hosts.
root@192.168.133.100's password:
keepalived.conf                                                                                              100% 1177     2.8MB/s   00:00
[root@back ~]# vim /etc/keepalived/keepalived.conf

只要更改三处

[root@back ~]# systemctl enable keepalived
Created symlink from /etc/systemd/system/multi-user.target.wants/keepalived.service to /usr/lib/systemd/system/keepalived.service.
[root@back ~]# systemctl start keepalived

3.真实主机配置

基本差不多

[root@rs1 ~]# yum install -y httpd
[root@rs1 ~]# systemctl start httpd
[root@rs1 ~]# echo "THIS IS  server ONE1" > /var/www/html/index.html                     RS1网页
[root@rs1 ~]# cat /var/www/html/index.html
THIS IS  server ONE1[root@rs2 ~]# echo "THIS IS  TWO2 WELCOME" > /var/www/html/index.html            RS2网页
[root@rs2 ~]# cat /var/www/html/index.html
THIS IS  TWO2 WELCOME
[root@rs2 ~]#  vi /etc/sysctl.conf

[root@rs1 ~]# sysctl -p
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
[root@rs1 ~]# cd /etc/sysconfig/network-scripts/
[root@rs1 network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@rs1 network-scripts]# vim ifcfg-lo:0

[root@rs1 network-scripts]# systemctl restart network
[root@rs2 network-scripts]# route add -host 192.168.133.200 dev lo:0

4.客户机测试

客户机访问vip"192.168.133.200"


主LVS看结果

备份LVS看结果

DOWN 掉主LVS的keepalived

[root@host ~]# systemctl stop keepalived

客户机登录正常


在备份LVS上查看登录情况

主备实验
工作方式:抢占式,非抢占式,延迟抢占模式
默认方式就是抢占式
在真实主机上输入命令

[root@rs1 ~]# tcpdump -i ens33 -nn host 224.0.0.18                            默认组播是224.0.0.18

可以看到都是从master上传过来的报文

我们停止主机上的keepalived服务

[root@host network-scripts]# systemctl stop keepalived.service

备用服务器就里面顶了上来

这时我们再启动主机的keepalived服务

[root@host network-scripts]# systemctl restart keepalived.service

主服务器立马抢占了服务,

因为实际工作中会产生掉包现象,所以不提倡用这种模式

非抢占式
在真实主机上输入命令

[root@rs1 ~]# tcpdump -i ens33 -nn host 224.0.0.18                            默认组播是224.0.0.18

目前上来的还是主机地址

主备服务器上的设置

[root@host keepalived]# vim keepalived.conf


[root@host keepalived]# systemctl restart keepalived.service
[root@host keepalived]# systemctl stop keepalived.service
[root@host keepalived]# systemctl start keepalived.service

这里仍然是备份服务器在工作,

然后我们去停掉备份服务器的keepalived的服务

[root@BACK ~]# systemctl stop keepalived.service

这时就发现原来的主服务器就开始重新工作了

延迟抢占模式
可以设定多少时间后开始抢占服务

[root@host keepalived]# vim keepalived.conf

[root@host keepalived]# systemctl start keepalived.service
[root@host keepalived]# systemctl stop keepalived.service
[root@host keepalived]# systemctl start keepalived.service

可以看到在执行完命令后20秒主服务器抢占了备用服务器

六.优化功能

1.日志功能

日志都在/var/log/message里

[root@host keepalived]# vim /var/log/messages

可以看到日志很多,很不好找

[root@host keepalived]# keepalived --help                               查看keepalived的帮助文件

-D -S 都是日志文件有关,

[root@host keepalived]# ps aux |grep keep

看进程末位是有默认 -D的

[root@host keepalived]# vim /lib/systemd/system/keepalived.service

[root@host ~]# vim /etc/sysconfig/keepalived

[root@host ~]# vim /etc/rsyslog.conf


这里增加这一行

[root@host ~]# systemctl restart keepalived.service rsyslog.service                                     重启服务,但会报错
Warning: keepalived.service changed on disk. Run 'systemctl daemon-reload' to reload units.
[root@host ~]# systemctl daemon-reload                                                                            应该先复位再重启
[root@host ~]# systemctl restart keepalived.service rsyslog.service
[root@host ~]# cat /var/log/keepalive.log

可以看到keepalive的日志都集中在了一个文件夹里

2.单播多播地址

2.1修改多播

主备服务器都要改

[root@host ~]# vim /etc/keepalived/keepalived.conf

在全局末尾增加单播地址

[root@host ~]# systemctl restart keepalived.service                                                  重启主机服务

可以看到单播设置成功

[root@host ~]# systemctl stop keepalived.service                        停止主机服务

[root@host ~]# systemctl restart keepalived.service                                            重启主机服务后,20秒后主机抢占服务

2.2单播设定

主从服务器都得设定增加,注意源地址和目标地址

[root@host ~]# vim /etc/keepalived/keepalived.conf


这是备用服务器上的设置

重启服务后就可以在真实服务器上体现出来了

[root@rs1 ~]# tcpdump -i ens33 -nn host 192.168.133.50

3.通知脚本

[root@localhost opt]#vim /etc/mail.rc

在底部增加以下命令

[root@host ~]# cd /opt
[root@host opt]# rz -E
rz waiting to receive.
[root@host opt]# ls
keepalive.sh  rh
[root@host opt]# chmod +x keepalive.sh
[root@host opt]# vim /etc/keepalived/keepalived.conf

[root@host opt]# systemctl daemon-reload
[root@host opt]# systemctl restart keepalived.service
[root@host opt]# scp /opt/keepalive.sh root@192.168.133.99:/opt
root@192.168.133.99's password:
keepalive.sh                                                                                                 100%  414   461.0KB/s   00:00

查看邮箱即可看到提醒

LVSDR模式+keepalived相关推荐

  1. 配置 Keepalived + LVS-DR模式, 实现高可用和负载均衡

    Keepalived + LVS-DR模式配置,见笔记: http://note.youdao.com/noteshare?id=9dc1353d09883ed66ad03cde5e7cb04d&am ...

  2. Keepalived+LVS-DR模式配置高可用负载均衡集群

    环境: 虚拟机:VMware Workstation 操作系统:CentOS 5.5 一.keepalived+lvs-DR模式配置高可用负载均衡 拓扑如下: 二.服务器ip配置信息 1. ip_lb ...

  3. lvs-dr模式原理详解和可能存在的“假负载均衡”

    原文地址: http://blog.csdn.net/lengzijian/article/details/8089661 lvs-dr模式原理 转载注明出处:http://blog.csdn.net ...

  4. LVS-NAT和LVS-DR模式的实现详解

    LVS-NAT和LVS-DR模式的实现详解 2011-09-10 10:51:08     我来说两句 收藏我要投稿 linux下LVS的实现 在2.4.23之前的linux内核想要使用LVS需要重新 ...

  5. LVS-DR模式的实现

    LVS-DR模式的实现 DR模式中各个服务器都需要配置vip,解决地址冲突的办法: (1)在前端网关做静态绑定 (2)在各个后端服务器使用arptables (3)在各个后端服务器修改内核参数限制服务 ...

  6. LVS-DR模式单网段和多网段设置步骤

    关于LVS-DR模式单网段设置 如图 需要特别注意的是,在LVS上一定要提前安装ipvsadm 而RS1和RS2上 安装httpd: 整个操作过程,其实并没有很多难的点,唯一的坑就是没有提前安装这两个 ...

  7. CentOS7搭建LVS-DR模式(单网段+多网段)

    CentOS7搭建LVS-DR模式(单网段+多网段) 一.配置要点 1. Director 服务器采用双IP桥接网络,一个是VIP,一个DIP 2. Web服务器采用和DIP相同的网段和Directo ...

  8. LVS-DR模式(原理图详解)

    标签(空格分隔): linux 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 前言 LVS一共四种工作模式.其中,DR模式是比较常用的模式之一,配置较麻烦,这里 ...

  9. LVS-DR模式原理

    2019独角兽企业重金招聘Python工程师标准>>> 我们都知道LVS有LVS-DR,LVS-NAT,LVS-TUN三种模式,其中DR模式意为Direct Routing(直接路由 ...

最新文章

  1. html css发展前景,网页设计的发展趋势
  2. “ git commit”和“ git push”之间有什么区别?
  3. (前)首富许家印造车果然有一套:车还没量产上市,公司先冲刺科创板募资
  4. Java URL传参中文乱码问题
  5. ORACLE基础学习-RMAN应用-控制文件恢复
  6. 英语美句-每日积累-02
  7. spring timetask 定时任务调度
  8. 哈工程计算机学院培养方案,哈工程2012年硕士培养方案详解(计算机科学与技术学院).doc...
  9. 自定义事件(如未作说明,本博客文档都是用C#代码)
  10. 定制软件项目经理应该善于说“NO”
  11. 10. Regular Expression Matching[H]正则表达式匹配
  12. paip.c++ 正则表达式的应用跟普通正则表达式的区别以及特别注意点总
  13. cmd快捷键和常用命令
  14. 微信小程序云开发 1 - 数据库
  15. Slurm的前处理prolog和后处理epilog
  16. OGG故障集锦(一)
  17. 个人奋斗动力源的一些感想
  18. 基础算法 - 树的直径
  19. openGL的特点及功能
  20. 也说对程序语言的认识

热门文章

  1. 安卓系统解锁adb remount
  2. 5款免费Windows远程连接Linux桌面软件(VNC客户端)
  3. 三硬币问题建模及Gibbs采样求解(Python实现)
  4. 第二单元笔记——应用层万字长文
  5. android hook 程序,Android hook框架之Xposed插件开发
  6. STM32F429 rtthread CAN总线
  7. 馆1:图书编码与定位
  8. 基于Javaweb高校毕业生实习管理系统 .rar(论文+项目源码)
  9. 802.11a/b/g/n无线协议详解
  10. 【一文读懂】Mysql索引原理之环环相扣