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 keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_27
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_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隧道|DR
    lb_kind DR
 #一个请求固定到一个服务器上的时间 单位秒
    persistence_timeout 5
 #请求方式TPC|UPD
    protocol TCP
 #真实服务器配置,这两是装有tomcat的真实ip
    real_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 1
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
}

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

复制代码
[root@Lvs-2 ~]# vim /etc/keepalived/keepalived.conf 

! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_28
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_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隧道|DR
    lb_kind DR
 #一个请求固定到一个服务器上的时间 单位秒
    persistence_timeout 5 
 #请求方式TPC|UPD
    protocol 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 1
            connect_timeout 3
            nb_get_retry 3
            delay_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地址

这样就成功了

相关推荐
TLucas2 分钟前
在CentOS 7上将PostgreSQL数据库从默认路径迁移到自定义目录
linux·运维·postgresql·centos
guidovans1 小时前
基于tkinter开发电脑工具集(源码在底部)
linux·windows·python·gui·tkinter
菜菜子爱学习2 小时前
Nginx学习笔记(九)—— Nginx Rewrite深度解析
linux·运维·笔记·学习·nginx
迷之程序员2 小时前
服务器装两个cpu
运维·服务器
Tearstornbyrain2 小时前
在Ubuntu24.04中使用ssh连接本地git仓库到github远程仓库
linux·git·ubuntu·ssh·github
Jia ming3 小时前
【奔跑吧!Linux 内核(第二版)】第6章:简单的字符设备驱动(三)
linux
Mr_Xuhhh4 小时前
传输层协议 TCP(1)
运维·服务器·网络·c++·网络协议·tcp/ip·https
星哥说事4 小时前
如何将堡塔云WAF备份、迁移到新的服务器
linux
楽码5 小时前
端到端应用Hmac加密
服务器·后端·算法
ycchenG75 小时前
缓存元数据损坏操作步骤(lvmcache修复)
linux·缓存