热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

keepalived与LVS实现高可用

背景介绍通过前面的介绍了解到LVS其实是工作在netfilter框架input链上的一组规则,而LVS本身无法实现高可用和对realserver的健康状态检测&#x

背景介绍

通过前面的介绍了解到LVS其实是工作在netfilter框架input链上的一组规则,而LVS本身无法实现高可用和对realserver的健康状态检测,keepalived为了解决上述2点问题而诞生,同时keepalived还可以直接在配置文件里设置LVS规则,而不需要再单独设置。在配置高可用之前需要提前做2个准备:

1.需要进行高可用的服务器指向相同的NTP服务器,保证时间的一致性

2.可以相互间进行名称解析,推荐使用/etc/hosts文件进行

实验环境

本次实验使用4台CentOS6.8虚拟机组成,其中2台为director,2台为WebServer,拓扑结构如下图所示:

7bab908f6a7b9dc001885740c845961c.png

操作步骤

1.2台web服务器上安装httpd服务,便于区分将设置不同的主页面(略)

2.设置2台web服务器的arp_ignore和arp_announce参数,可以通过脚本

#!/bin/sh

case $1 in

   start)

        echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

        echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

        echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

        echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

        ;;

    stop)

        echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore

        echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore

        echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce

        echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce

        ;;

    *)

        echo "Wrong Arguments"

        ;;

esac

3.将vip地址设置到web服务器的lo接口上

ip addr add 172.16.10.50/32 dev lo

4.给2台direcotr安装keepalived和ipvsadm软件包(略)

5.编辑keepalived配置文件,设置LVS规则和keepalived角色(后文介绍)

6.启动keepalived服务,查看vip地址是否正常添加,ipvs策略是否生成,至此操作完成。

ip addr list

ipvsadm -Ln

keepalived配置文件说明

全局配置段:

可以设置接收邮件的账号(工作场景常以监控软件实现),其中router_id是设备名称,名称不需要唯一,可以使用主机名

global_defs {notification_email {root@localhost}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 127.0.0.1smtp_connect_timeout 30router_id lvs2vrrp_skip_check_adv_addrvrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0
}

脚本配置段:

该配置段是一个独立的配置段,配置文件中默认并没有这一段,加入这一段的目的是如果后期keepalived服务器需要升级人为切换服务器角色时可以手动在相应目录下创建一个down文件,使他的权重-20,此处注意:判断为假时(echo $?值为1)才会执行weight -20

vrrp_script chk_mt {script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"interval 1weight -20
}

vrrp实例配置段:

同一vrrp实例名称保持一致,虚拟路由id必须保持一致,tarck_script是调用上面定义的脚本配置段

9fa027f86e869889540b1c2a9f8cfb08.png

LVS规则配置段:

virltual_server    #设置vip地址和端口

delay_loop    #RS恢复服务后延迟上线的时间,单位为妙

lb_algo    #调度策略,支持rr|wrr|lc|wlc|lblc|sh|dh

lb_kind    #LVS转发模式,此处是DR模型

keepalived只支持TCP协议

e4d1cff48ac28148380c840fa365e665.png

HTTP_GET    #健康监测,同时还支持SSL_GET

status_code    #状态码检测,判断RS服务器是否正常

5abc09ff84c9723aa44013db31275c91.png

遗留问题

1.只使用LVS时,vip地址可以设置在director的lo接口上,结合keepalived后vrrp实例设置在lo接口上IP地址和IPVS规则无法生效,设置在eth0接口上恢复正常

2.当前vip地址生效director自己无法正常使用curl命令通过vip获取到页面,另一个director使用curl命令通过vip可以正常获取到页面,2个director交换角色后依然如此

http://www.keepalived.org/


推荐阅读
  • Fiddler 安装与配置指南
    本文详细介绍了Fiddler的安装步骤及配置方法,旨在帮助用户顺利抓取用户Token。文章还涵盖了一些常见问题的解决方案,以确保安装过程顺利。 ... [详细]
  • 服务器虚拟化存储设计,完美规划储存与资源,部署高性能虚拟化桌面
    规划部署虚拟桌面环境前,必须先估算目前所使用实体桌面环境的工作负载与IOPS性能,并慎选储存设备。唯有谨慎估算贴近实际的IOPS性能,才能 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • 本文详细介绍了Oracle 11g中的创建表空间的方法,以及如何设置客户端和服务端的基本配置,包括用户管理、环境变量配置等。 ... [详细]
  • WebBenchmark:强大的Web API性能测试工具
    本文介绍了一款名为WebBenchmark的Web API性能测试工具,该工具不仅支持HTTP和HTTPS服务的测试,还提供了丰富的功能来帮助开发者进行高效的性能评估。 ... [详细]
  • 1、编写一个Java程序在屏幕上输出“你好!”。programmenameHelloworld.javapublicclassHelloworld{publicst ... [详细]
  • 视觉Transformer综述
    本文综述了视觉Transformer在计算机视觉领域的应用,从原始Transformer出发,详细介绍了其在图像分类、目标检测和图像分割等任务中的最新进展。文章不仅涵盖了基础的Transformer架构,还深入探讨了各类增强版Transformer模型的设计思路和技术细节。 ... [详细]
  • 本文详细介绍如何安装和配置DedeCMS的移动端站点,包括新版本安装、老版本升级、模板适配以及必要的代码修改,以确保移动站点的正常运行。 ... [详细]
  • Asynchronous JavaScript and XML (AJAX) 的流行很大程度上得益于 Google 在其产品如 Google Suggest 和 Google Maps 中的应用。本文将深入探讨 AJAX 在 .NET 环境下的工作原理及其实现方法。 ... [详细]
  • JavaScript 跨域解决方案详解
    本文详细介绍了JavaScript在不同域之间进行数据传输或通信的技术,包括使用JSONP、修改document.domain、利用window.name以及HTML5的postMessage方法等跨域解决方案。 ... [详细]
  • 本文详细介绍了如何在CentOS 6.5系统上安装和配置Redis 3.0.6,包括必要的环境准备、软件包下载、编译安装及基本功能测试。 ... [详细]
  • 深入解析C语言中的关键字及其分类
    本文将全面介绍C语言中的关键字,并按照功能将其分为数据类型关键字、控制结构关键字、存储类别关键字和其他关键字四大类,旨在帮助读者更好地理解和运用这些基本元素。C语言中共有32个关键字。 ... [详细]
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
  • 在使用 Nginx 作为服务器时,发现 Chrome 能正确从缓存中读取 CSS 和 JS 文件,而 Firefox 却无法有效利用缓存,导致加载速度显著变慢。 ... [详细]
  • 在尝试加载支持推送通知的iOS应用程序的Ad Hoc构建时,遇到了‘no valid aps-environment entitlement found for application’的错误提示。本文将探讨此错误的原因及多种可能的解决方案。 ... [详细]
author-avatar
手机用户2502877507
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有