当前位置: 首页 > news >正文

keepalived与lvs

1 lvs

Linux服务器集群系统(一) -- LVS项目介绍

LVS(Linux Virtual Server)即Linux虚拟服务器,是一个基于Linux操作系统的虚拟服务器技术,用于实现负载均衡和高可用性章文嵩,是中国国内最早出现的自由软件项目之一。

 2 lvs发展史

在 Linux 2.2 内核时期,LVS 最初是以内核补丁的形式存在的,这意味着它不是直接集成到 Linux 内核中的,而是作为附加的补丁集来实现功能。

集成到 Linux 内核2.4.23 版本:

从 Linux 2.4.23 版本开始,LVS 的核心组件 IPVS (IP Virtual Server) 被正式合并到 Linux 内核中,成为官方内核的一部分。这意味着用户不再需要单独下载和安装补丁集来使用 LVS 功能

3 lvs组由ipvs和ipvsadm组成

LVS 是一个负载均衡框架,它定义了如何使用负载均衡器来分发网络请求的基本规则和架构

ipvs 是 LVS 中实现负载均衡的核心模块,它负责具体的负载均衡任务(虚拟出IP)

ipvsadm:是一个Linux内核中的IP负载均衡工具

4 LVS三种主要的工作模式

 NAT   TUN(隧道)   DR 

NAT:上行下行都走lvs,lvs压力爆大 ,但是安全,

TUN:上行走lvs,下行直接去客户端,lvs压力不大,但是内服务器ip直接暴漏给外网,非常不安全

DR:上行走lvs,下行走路由,路由会虚拟一个IP,lvs压力不大,还安全

5 keepalivde +lvs 高可用

准备:俩台干净的虚拟机(至少没用过nginx,keepalivde)

lvs-1   61     lvs-2  62       

两台机子

yum -y install keepalived     用到keepalivde

   yum install psmisc  -y        用killall  keepalivde  di

lvs-1     vim /etc/keepalived/keepalived.conf

[root@Lvs-1 ~]#  vim /etc/keepalived/keepalived.conf! Configuration File for keepalivedglobal_defs {notification_email {acassen@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_27
}vrrp_instance VI_1 {state MASTERinterface ens33virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}#虚拟的IP,网段要和lvs的网段一样virtual_ipaddress {192.168.58.66}
}
#lvs配置
virtual_server 192.168.58.66 49151 {#每个6秒检查realserver是否存活delay_loop 6#lb=loadbalance负载均衡算法,rr轮询lb_algo rr#lvs三种模式NAT|TUN隧道|DRlb_kind DR#一个请求固定到一个服务器上的时间 单位秒persistence_timeout 5#请求方式TPC|UPDprotocol TCP#真实服务器配置,这两是装有tomcat的真实ipreal_server 192.168.58.41 49151 {#权重weight 1#超时时长connect_timeout 3#重试次数nb_get_retry 3#重试时间间隔delay_before_retry 3}real_server 192.168.58.42 49151 {weight 1connect_timeout 3nb_get_retry 3delay_before_retry 3}
}

lvs-2   vim /etc/keepalived/keepalived.conf

[root@Lvs-2 ~]# vim /etc/keepalived/keepalived.conf ! Configuration File for keepalivedglobal_defs {notification_email {acassen@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_28
}vrrp_instance VI_1 {state BACKUPinterface ens33virtual_router_id 51priority 50advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.58.66}
}
virtual_server 192.168.58.66 49151 {#每个6秒检查realserver是否存活delay_loop 6#lb=loadbalance负载均衡算法,rr轮询lb_algo rr #lvs三种模式NAT|TUN隧道|DRlb_kind DR#一个请求固定到一个服务器上的时间 单位秒persistence_timeout 5 #请求方式TPC|UPDprotocol TCP#真实服务器配置real_server 192.168.58.41 80 {#权重 weight 1#超时时长connect_timeout 3#重试次数nb_get_retry 3#重试时间间隔delay_before_retry 3}       real_server 192.168.58.42 80 {weight 1connect_timeout 3nb_get_retry 3delay_before_retry 3}   
}

两台机子 都有的操作

  cat cat /var/log/messages  (可能会报这种错),无伤大雅,继续干

Aug 22 09:02:03 Lvs-1 Keepalived_healthcheckers[3454]: Unknown keyword 'connect_timeout'
Aug 22 09:02:03 Lvs-1 Keepalived_healthcheckers[3454]: Unknown keyword 'nb_get_retry'
Aug 22 09:02:03 Lvs-1 Keepalived_healthcheckers[3454]: Unknown keyword 'delay_before_retry'
Aug 22 09:02:03 Lvs-1 Keepalived_healthcheckers[3454]: Unknown keyword 'connect_timeout'
Aug 22 09:02:03 Lvs-1 Keepalived_healthcheckers[3454]: Unknown keyword 'nb_get_retry'
Aug 22 09:02:03 Lvs-1 Keepalived_healthcheckers[3454]: Unknown keyword 'delay_before_retry'

    ipvsadm -C                 

    ipvsadm -Ln

    service keepalived start

    ipvsadm -Ln  

在浏览器输入虚拟IP+装有tomcat机子配的端口号(如果配的是80,只用输虚拟IP就行)

192.168.58.66:49151

5.5   给tomcat配置虚拟ip   前后呼应

两台tomcat机子一样的操作    192.168.58.66虚拟ip

cp /etc/sysconfig/network-scripts/ifcfg-lo  /etc/sysconfig/network-scripts/ifcfg-lo:1

vim /etc/sysconfig/network-scripts/ifcfg-lo:1

刷新lo网卡:

ifup lo   或者service network restart

查看:

ip  a

6测试

在浏览器输入虚拟IP+装有tomcat机子配的端口号后出现项目页面

win+r  cmd   

黑窗口敲 arp -a   192.168.58.66 

这是lvs-1的mac地址

在lvs-1:

    killall keppalived

 ipvsadm -C      清除所有当前的LVS配置

 ipvsadm -Ln     列出当前的LVS配置

再次在黑窗口敲 arp -a   192.168.58.66 发现mac地址变了

变成vs-2的mac地址

这样就成功了

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 每日一问:深入理解C++中的访问控制机制——private、protected和public
  • Unified 阻抗控制 architecture、framework、approach
  • [CLIP-VIT-L + Qwen] 多模态大模型源码阅读 - 视觉模型篇
  • golang(go语言)打包成带图标的 exe 可执行文件
  • WPS宏实现Sheet页拆分功能
  • 小编需复盘,写练习
  • 数采网关面临的安全挑战
  • 保研考研机试攻略:第六章——搜索(2)
  • docker映射了端口,宿主机不生效
  • 鸿蒙内核源码分析(共享内存) | 进程间最快通讯方式
  • SpringBoot集成kafka-获取生产者发送的消息(阻塞式和非阻塞式获取)
  • 1111111111
  • 微服务:网关路由和登录校验
  • 计算机视觉与视觉大模型对板书检测效果对比
  • 上线eleme项目
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • 5、React组件事件详解
  • Bytom交易说明(账户管理模式)
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • ES2017异步函数现已正式可用
  • JavaScript 奇技淫巧
  • JavaScript-Array类型
  • JavaScript的使用你知道几种?(上)
  • JavaScript设计模式与开发实践系列之策略模式
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • SQL 难点解决:记录的引用
  • Webpack 4x 之路 ( 四 )
  • Xmanager 远程桌面 CentOS 7
  • 初识MongoDB分片
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 区块链分支循环
  • 入口文件开始,分析Vue源码实现
  • 小程序 setData 学问多
  • 用Canvas画一棵二叉树
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • # 计算机视觉入门
  • #ifdef 的技巧用法
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (55)MOS管专题--->(10)MOS管的封装
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (Matlab)使用竞争神经网络实现数据聚类
  • (补充):java各种进制、原码、反码、补码和文本、图像、音频在计算机中的存储方式
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转)菜鸟学数据库(三)——存储过程
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .NET 设计模式初探
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?
  • .net中生成excel后调整宽度
  • //usr/lib/libgdal.so.20:对‘sqlite3_column_table_name’未定义的引用
  • /dev下添加设备节点的方法步骤(通过device_create)
  • ?php echo $logosrc[0];?,如何在一行中显示logo和标题?