搭建Keepalived+LVS+Nginx高可用集群负载均衡

2023-11-02

原理图

本博客实现时的ip约定

1、为两台主备CentOs7服务器安装Keepalived和LVS

安装keepalived:Keepalived安装_p&f°的博客-CSDN博客

安装LVS请看此博客第一点:搭建LVS-DR模式_p&f°的博客-CSDN博客(一、配置LVS节点与ipvsadm)

2、 安装完keepalived后,进入配置目录,修改配置文件(151主节点和152备用节点都要修改,这里先说主节点)

cd /etc/keepalived/

cp keepalived.conf.sample keepalived.conf

vim keepalived.conf

151主节点keepalived.conf配置文件内容如下

! Configuration File for keepalived

global_defs {
   router_id LVS_151
}

vrrp_instance VI_1 {
    state MASTER
    interface ens32
    virtual_router_id 41
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.217.150
    }
}

# 配置集群地址访问的ip+端口,端口和nginx保持一致,都是80
virtual_server 192.168.217.150 80 {
    # 健康检查的时间,单位:秒
    delay_loop 6
    # 配置负载均衡的算法,默认是轮询
    lb_algo rr
    # 设置LVS的模式。NAT|RUN|DR
    lb_kind DR
    # 设置会话持久化的时间
    persistence_timeout 5
    # 协议 -t
    protocol TCP

    # 负载均衡的真实服务器,也就是nginx节点的具体的真实ip地址
    real_server 192.168.217.129 80 {
        # 轮询的默认权重配比设置为1
        weight 1
        # 设置健康检查
        TCP_CHECK {
            # 检查的80 端口 与上面对应
            connect_prot 80
            # 超时时间 2s
            connect_timeout 2
            # 重试次数 2次
            nb_get_retry 2
            # 间隔时间 3s
            delay_before_retry 3
        }
    }


    real_server 192.168.217.130 80 {
        weight 1
    }
    # 设置健康检查
        TCP_CHECK {
            # 检查的80 端口 与上面对应
            connect_prot 80
            # 超时时间 2s
            connect_timeout 2
            # 重试次数 2次
            nb_get_retry 2
            # 间隔时间 3s
            delay_before_retry 3
        }
}

3、清除ipvsadm之前的配置

ipvsadm -C

4、重启keepalived,使得配置文件生效

(我这里是第一次安装,直接启动就行)
/usr/local/keepalived/sbin/keepalived

5、ipvsadm -Ln  查看配置结果

6、访问虚拟ip 192.168.217.150 正常访问,多次刷新,轮询访问到29和130nginx服务器。至此主节点配置完毕

 

 7、配置备用节点152。

修改keepalived的配置文件,进入到 /etc/keepalived/,把主节点的配置文件keepalived.conf内容复制到备用节点,再修改。内容如下

! Configuration File for keepalived

global_defs {
   router_id LVS_152
}

# 只需修改这里的内容
vrrp_instance VI_1 {
    state BACKUP
    interface ens32
    virtual_router_id 41
    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.217.150
    }
}

#以下内容均不需要修改
# 配置集群地址访问的ip+端口,端口和nginx保持一致,都是80
virtual_server 192.168.217.150 80 {
    # 健康检查的时间,单位:秒
    delay_loop 6
    # 配置负载均衡的算法,默认是轮询
    lb_algo rr
    # 设置LVS的模式。NAT|RUN|DR
    lb_kind DR
    # 设置会话持久化的时间
    persistence_timeout 5
    # 协议 -t
    protocol TCP

    # 负载均衡的真实服务器,也就是nginx节点的具体的真实ip地址
    real_server 192.168.217.129 80 {
        # 轮询的默认权重配比设置为1
        weight 1
        # 设置健康检查
        TCP_CHECK {
            # 检查的80 端口 与上面对应
            connect_prot 80
            # 超时时间 2s
            connect_timeout 2
            # 重试次数 2次
            nb_get_retry 2
            # 间隔时间 3s
            delay_before_retry 3
        }
    }


    real_server 192.168.217.130 80 {
        weight 1
    }
    # 设置健康检查
        TCP_CHECK {
            # 检查的80 端口 与上面对应
            connect_prot 80
            # 超时时间 2s
            connect_timeout 2
            # 重试次数 2次
            nb_get_retry 2
            # 间隔时间 3s
            delay_before_retry 3
        }
}

 8、清除备用机ipvsadm之前的配置规则

ipvsadm -C

9、修改了keepalived配置文件,重启,使其生效

(我这里是第一次安装,直接启动就行)
/usr/local/keepalived/sbin/keepalived

10、ipvsadm -Ln  查看配置结果

测试

1、把其中的任何一台keepalived停止,都可以通过虚拟ip正常访问页面(这里就不演示了)

2、假设再运行过程中,其中一台nginx故障,是否能正常访问页面。

    2.1  把129所在的nginx停止

./nginx -s stop

    2.2  访问虚拟ip。由于129停止,配置中配置了健康检查,它会自动把请求跳转到正常的nginx中,即此时访问的是130的nginx。

    2.3  查看主节点的集群情况 ipvsadm -Ln,此时确实只有一个130nginx节点

    2.4  将129服务器的nginx恢复 ./nginx -s reload,根据健康检查,又会把它加回集群中

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

搭建Keepalived+LVS+Nginx高可用集群负载均衡 的相关文章

随机推荐

  • 【Leetcode刷题】算法:罗马数字转整数

    文章目录 一 问题 二 代码理解 一 问题 二 代码理解 class Solution def romanToInt self s str gt int answer 0 length len s d I 1 V 5 X 10 L 50 C
  • Windows小Tips:在终端中优雅使用Vim

    Vim 本是 Linux 系统上一款文本编辑器 它是操作 Linux 的一款利器 程序员熟练使用后效率会显著提升 作为同时Windows的我也希望在Windows如Linux中那般优雅使用Vim Menu 一 将VIM添加至终端 二 将Vi
  • 线性表之顺序存储结构

    线性表是n n 0 个数据类型相同的数据元素组成的有限序列 数据元素之间是一对一的关系 即每个数据元素最多有一个直接前驱和一个直接后继 线性表的顺序存储结构是指在计算机中用一组地址连续的存储单元依次存储线性表的各个数据元素 元素之间的逻辑关
  • Vue3学习记录——(1)MVC与MVVM

    1 传统的MVC模式 模型 Model 数据存储 视图 View 用户界面 控制器 Controller 业务逻辑 Model代表数据存储 主要用于实现数据的持久化 View代表用户界面 UI 主要用于实现页面的显示 Controller代
  • wpf自定义控件之依赖属性

    这篇文章的意义是 为wpf自定义控件 定义它的专属属性 这个属性不仅仅可以在c 中使用 也可以在xaml中使用 在xaml中赋值或者绑定 在wpf开发过程中 总会用到格式各样的控件 但是原生控件远远不能满足实际开发的需要 这时候wpf强大之
  • Android NDK Jni 开发语言使用C和C++的区别

    由于Android官方NDK例子大多使用C语言编写 所以当我们想用C 进行开发时 会出现种种错误 下面简单说说几点不同之处 代码中有部分不同之处 1 先来一个用C写的例子 1 hello c文件 在C中没有引用 传递的env是个两级指针 用
  • 关于C#的变量问题:1.变量的声明,赋值,作用域

    1 变量的声明 变量的使用是编写程序中的一个重要环节 首先要做到第一步就是定义变量的类型 因为你需要让编译器知道变量类型后 才能按照类型对该变量进行空间的配置 变量的定义是 在程序运行过程中 空间内的值是变化的 这个内存空间就称为变量 而声
  • Maven之 setting.xml配置文件详解

    setting xml配置文件 maven的配置文件settings xml存在于两个地方 1 安装的地方 M2 HOME conf settings xml 2 用户的目录 user home m2 settings xml 前者又被叫做
  • 面试官:说说微信小程序的支付流程?

    一 前言 微信小程序为电商类小程序 提供了非常完善 优秀 安全的支付功能 在小程序内可调用微信的API完成支付功能 方便 快捷 场景如下图所示 用户通过分享或扫描二维码进入商户小程序 用户选择购买 完成选购流程 调起微信支付控件 用户开始输
  • 腾讯面经部分题

    1 僵尸进程 在linux系统中 当用ps命令观察进程的执行状态时 经常看到某些进程的状态栏为defunct 这就是所谓的 僵尸 进程 僵尸 进程是一个早已死亡的进程 但在进程表 processs table 中仍占了一个位置 slot 由
  • Android开发 无线Wifi+WifiUtil工具类,直面秋招

    for int i 0 i lt wifiList size i ScanResult wifi wifiList get i if wifi SSID equals ssid Log i AddWifiConfig equals Wifi
  • Matlab迭代算法实现

    牛顿迭代法 雅可比迭代法 高斯赛德迭代法 超松弛迭代法 SOR 共轭迭代法 牛顿迭代法 代码实现案例 原函数输入 function y newton x y exp x 4 2 x 1 任意函数 end 保存要进行牛顿迭代的函数 牛顿迭代函
  • 背包问题 python 背包九讲

    基础 01背包 t m list map int input split baowu None ditu 0 t 1 for in range m 1 for i in range m a1 a2 list map int input sp
  • Python笔记:NumPy 中的集合运算举例: 查找共同元素,差异元素和共有元素

    import numpy as np 创建一维 ndarray x x np array 1 2 3 4 5 创建一维 ndarray y y np array 6 5 4 8 7 输出 x print x x 输出 y print y y
  • Django 原生auth_user表数据库迁移报错处理方案

    最暴力的处理思路 假设我们数据迁移有问题 直接把数据库删除 项目 下所有app的migrations文件夹进行删除 然后注释掉admin这个应用相关的url路由 settings py文件里的app配置 admin进行注释 然后执行数据库迁
  • 下载安装钱德拉望远镜的软件CIAO

    一 下载安装Anaconda 1 下载 Anaconda下载网址 2 安装 bash Anaconda3 2020 11 Linux x86 64 sh 二 创建ciao的虚拟环境 1 1 创建一个名为ciao 4 12的虚拟环境 下载ci
  • .\Fire_FreeRTOS.axf: Error: L6221E: Execution region ER_RO with Execution range [0x00000000,0x000001

    Fire FreeRTOS axf Error L6221E Execution region ER RO with Execution range 0x00000000 0x00000178 overlaps with Execution
  • 从零开始写STM32平衡小车代码,从0到1

    从零开始写STM32平衡小车代码 从0到1 教你从零开始写STM32平衡小车代码 前言 本人也是学生 只是分享一下自己的设计思路与代码教学 这次STM32平衡小车是基于STM32CubeMX软件生成HAL库代码编写 第一部分 前期准备 这部
  • 什么是IIoT工业物联网?

    IIoT本质上是扩展到云的机器对机器 M2M 的支持 在这个意义上 IIoT不是个真正的新想法 而是现有系统的新术语描述 最大的区别是 现有系统如何改变 以及这些技术的可用性为何 相同的是 两者都是像 云 和 互联网 这些高大上的词 它们都
  • 搭建Keepalived+LVS+Nginx高可用集群负载均衡

    原理图 本博客实现时的ip约定 1 为两台主备CentOs7服务器安装Keepalived和LVS 安装keepalived Keepalived安装 p f 的博客 CSDN博客 安装LVS请看此博客第一点 搭建LVS DR模式 p f