LVS+Keepalived实验

news/2024/4/17 8:08:42

实验前准备
主DR服务器:(ens33)192.168.188.11 ipvsadm、keepalived (ens33:0)192.168.188.188
备DR服务器:(ens33)192.168.188.12 ipvsadm、keepalived (ens33:0)192.168.188.188
Wbe服务器1:(ens33)192.168.188.13 (lo:0)192.168.188.188
Web服务器2:(ens33)192.168.188.14 (lo:0)192.168.188.188
客户端:192.168.188.1(本机Windows)

  1. 配置负载调度器(192.168.188.11、192.168.188.12)
    1. 关闭防火墙
      systemctl stop firewalld
      setenforce 0
    2. 安装ipvsadm和keepalived
      yum -y install ipvsadm keepalived
    3. 加载ipvs内核模块并查看
      modprobe ip_vs
      cat /proc/net/ip_vs
    4. 配置keepalived
      cd /etc/keepalived
      备份配置文件
      cp keepalived.conf keepalived.conf.bak
      对配置文件进行修改
      vim keepalived.conf
      ! Configuration File for keepalivedglobal_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.loc
      # 邮件地址,指向本地就行smtp_server 127.0.0.1smtp_connect_timeout 30
      # 服务器(路由器)的名称,主备服务器名称不能一样,主写01,备写02router_id LVS_01vrrp_skip_check_adv_addr
      # 必须注释,意味着不再严格遵守VRRP协议,不注释VIP无法连接#vrrp_strict
      # 下面原本还有,删不删都行
      }vrrp_instance VI_1 {
      # 指定热备状态,MASTER代表主,BACKUP代表备state MASTER
      # 指定承载VIP地址的物理接口interface ens33
      # 指定虚拟路由器的ID号,主备必须一致virtual_router_id 10
      # 优先级,数字越大代表优先级越高,主写100,备写90priority 100
      # 心跳频率(通报间隔秒数)advert_int 1
      # 认证信息,主备必须一致authentication {auth_type PASSauth_pass abc123}
      # 集群的VIP地址,只有一个就只需要写一个virtual_ipaddress {192.168.188.188}
      }
      # 指定虚拟服务器地址(VIP)、端口
      virtual_server 192.168.188.188 80 {
      # 健康检查的间隔(秒)delay_loop 6
      # 指定调度算法,rr是轮询lb_algo rr
      # 指定集群工作模式,DR是直接路由lb_kind DR
      # 连接保持时间(秒)persistence_timeout 50protocol TCP# 指定第一个Web节点服务器的地址和端口real_server 192.168.188.13 80 {
      # 权重weight 1
      # 原本的16行内容可以直接删除
      # 添加以下健康检查的内容TCP_CHECK {
      # 检查的端口connect_port 80
      # 连接超时时间(秒)coonect_timeout 3
      # 重试次数nb_get_retry 3
      # 重试间隔delay_before_retry 3}}
      # 添加第二个Web节点服务器的地址和端口real_server 192.168.188.14 80 {weightTCP_CHECK {connect_port 80connect_timeout 3nb_get_retry 3delay_before_retry 3}}
      }
      # 底下一大堆内容可以全部删除


    5. 配置虚拟IP(VIP)
      vim /etc/sysconfig/network-scripts/ifcfg-ens33:0
      DEVICE=ens33:0
      ONBOOT=yes
      IPADDR=192.168.188.188
      NETMASK=255.255.255.255


      配置完重启网卡
      systemctl restart network
      打开虚拟网卡
      ifup ens33:0
      查看一下有没有生效
      ip addr

      启动keepalived服务
      systemctl start keepalived
    6. 启动ipvsadm服务
      主DR服务器(192.168.188.11):
      备份
      ipvsadm-save > /etc/sysconfig/ipvsadm
      systemctl start ipvsadm

      配置规则
      先清空
      ipvsadm -C
      ipvsadm -A -t 192.168.188.188:80 -s rr
      ipvsadm -a -t 192.168.188.188:80 -r 192.168.188.13:80 -g
      ipvsadm -a -t 192.168.188.188:80 -r 192.168.188.14:80 -g

      查看分发策略

      备DR服务器(192.168.188.12):
      备份
      ipvsadm-save > /etc/sysconfig/ipvsadm
      systemctl start ipvsadm
      不需要配置策略,直接查看
      ipvsadm -ln,并没有策略
    7. 调整proc响应参数,关闭Linux内核的重定向参数响应
      vim /etc/sysctl.conf
      net.ipv4.conf.all.send_redirects = 0
      net.ipv4.conf.default.send_redirects = 0
      net.ipv4.conf.ens33.send_redirects = 0


      sysctl -p
  2. 配置Web节点服务器(192.168.188.13、192.168.188.14)
    1. 关闭防火墙
      systemctl stop firewalld
      setenforce 0
    2. 安装并启动httpd
      yum -y install httpd
      systemctl start httpd
      检查一下端口对不对
      netstat -anpt | grep :80,如果不是httpd就代表不对,端口被其他应用占用了,比如说nginx
    3. 准备两个页面
      Web服务器1(192.168.188.13):
      echo 'who are you?' > /var/www/html/index.html

      Web服务器2(192.168.188.14):
      echo 'i am dzd!' > /var/www/html/index.html
    4. 配置虚拟网卡(lo:0)
      vim /etc/sysconfig/network-scripts/ifcfg-lo:0
      DEVICE=lo:0
      ONBOOT=yes
      IPADDR=192.168.188.188
      NETMASK=255.255.255.255


      重启网卡
      systemctl restart network
      启动虚拟网卡
      ifup lo:0
      查看
      ip addr

      添加路由规则
      route add -host 192.168.10.180 dev lo:0
    5. 调整proc响应参数
      vim /etc/sysctl.conf
       
      net.ipv4.conf.lo.arp_ignore = 1
      net.ipv4.conf.lo.arp_announce = 2
      net.ipv4.conf.all.arp_ignore = 1
      net.ipv4.conf.all.arp_announce = 2


      sysctl -p
  3. 测试
    1. 我直接在本机的浏览器上进行的访问,在同一网段的虚拟机也可以测试
      在客户端上访问http://192.168.188.188/,多刷新几次,节点服务器上的内容都能显示,说明负载均衡没问题(不显示其他内容就隔几十秒再刷新)

    2. 在主DR服务器(192.168.188.11)上关掉Keepalived,模拟单点故障
      systemctl stop keepalived

      将客户端的浏览器缓存清空,再访问一次,依然能看到之前的内容,说明没有问题


https://www.xjx100.cn/news/3119029.html

相关文章

MySQL中的JOIN与IN:性能对比与最佳实践

文章目录 JOIN与IN的基本介绍JOININ JOIN与IN性能对比使用JOIN的查询使用IN的查询 何时使用JOIN何时使用IN性能优化的其他考虑因素总结 🎉MySQL中的JOIN与IN:性能对比与最佳实践 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒🍹✨博客主页:IT陈…

HTML中使用JavaScript实现一个简单的鼠标悬停特效。

代码中&#xff0c;我们首先在CSS中定义了一个红色的方块&#xff0c;然后使用:hover伪类定义了鼠标悬停时的样式。接着&#xff0c;在JavaScript中定义了一个函数showMessage()&#xff0c;用于在控制台输出一条消息。最后&#xff0c;在HTML中使用<div>标签定义了一个i…

文生视频的发展史及其原理解析:从Gen2、Emu Video到PixelDance、SVD、Pika 1.0

前言 考虑到文生视频开始爆发&#xff0c;比如11月份就是文生视频最火爆的一个月 11月3日&#xff0c;Runway的Gen-2发布里程碑式更新&#xff0c;支持4K超逼真的清晰度作品(runway是Stable Diffusion最早版本的开发商&#xff0c;Stability AI则开发的SD后续版本)11月16日&a…

springMVC实验(二)—调式工具APIFOX的使用

【知识要点】 后端开发调试工具 前后端分离已经成为互联网类软件开发主流模式&#xff0c;没有前端操作的支持&#xff0c;如何调试后端程序的就是开发人员必须解决的问题。如&#xff1a;get类请求可以直接使用浏览器就能模拟测试&#xff0c;但是post、put等类型的请求&…

FPGA程序执行相关知识点

1.目前&#xff0c;大多数FPGA芯片是基于 SRAM 的结构的&#xff0c; 而 SRAM 单元中的数据掉电就会丢失&#xff0c;因此系统上电后&#xff0c;必须要由配置电路将正确的配置数据加载到 SRAM 中&#xff0c;此后 FPGA 才能够正常的运行。 常见的配置芯片有EPCS 芯片 &#x…

计算机视觉的应用20-图像生成模型(Stable Diffusion)的原理详解与相关项目介绍

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下计算机视觉的应用20-图像生成模型&#xff1a;Stable Diffusion模型的原理详解与相关项目介绍。大家知道现在各个平台发的各种漂亮的女生&#xff0c;这些漂亮的图片是怎么生成的吗&#xff0c;其实它们底层原理就是…

微信小程序——给按钮添加点击音效

今天来讲解一下如何给微信小程序的按钮添加点击音效 注意&#xff1a;这里的按钮不一定只是 <button>&#xff0c;也可以是一张图片&#xff0c;其实只是添加一个监听点击事件的函数而已 首先来看下按钮的定义 <button bind:tap"onInput" >点我有音效&…

手写VUE后台管理系统5 - 整合状态管理组件pinia

整合状态管理组件 安装整合创建实例挂载使用 pinia 是一个拥有组合式 API 的 Vue 状态管理库。 pinia 官方文档&#xff1a;https://pinia.vuejs.org/zh/introduction.html 安装 yarn add pinia整合 所有与状态相关的文件都放置于项目 src/store 目录下&#xff0c;方便管理 在…