当前位置: 首页 > 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地址

这样就成功了


http://www.mrgr.cn/news/10508.html

相关文章:

  • 基于web的铁路订票管理系统
  • 专题---自底向上的计算机网络(数据链路层)
  • CRLF will be replaced by LF the next time Git touches it 如何解决?
  • 数据库优化
  • 信刻光盘摆渡机——完全物理隔离,安全合规
  • MySQL学习笔记之多表关系
  • 链表相关内容
  • 在C#中应用命令模式:设计和实现的最佳实践
  • react面试题五
  • OpenSCENARIO简介
  • Hangfire启动的时候默认开启20个线程
  • [LeetCode]102.二叉树的层序遍历(python)
  • Java-使用HashMap压缩重复数据量以减少堆内存溢出的概率
  • CSS3页面布局-三栏-中栏流动布局
  • ECMAScript 性能优化技巧与陷阱
  • 将 github 仓库同步到个人服务器
  • Redis(面试题【速记】)
  • 无人机+消防车:高楼灭火系统技术详解
  • 如何合理设置PostgreSQL的`max_connections`参数
  • linux swap slot机制