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地址

这样就成功了

相关推荐
一眼万里*e6 分钟前
UE5 Linux编译流程(实战)
linux·ue5
zjsnh_Z9 分钟前
Linux 操作系统 进程(2)
linux·运维·服务器
KookeeyLena513 分钟前
我想要抓取新加坡当地电商平台数据,使用什么地区的IP最合适
服务器·网络·tcp/ip
长安初雪14 分钟前
计算机网络 第三章: 点对点协议
服务器·网络·计算机网络
only_print16 分钟前
linux网络编程——UDP编程
linux·网络·嵌入式硬件
KookeeyLena333 分钟前
如何进行IP清洗
服务器·网络·tcp/ip
KookeeyLena434 分钟前
动态ip切换频率是快点好还是慢点好
linux·网络·tcp/ip
小堃学编程36 分钟前
计算机网络(五) —— 自定义协议简单网络程序
运维·服务器·计算机网络
凤 曦37 分钟前
Linux网络:网络套接字-TCP回显服务器——多进程/线程池(生产者消费者模型)
linux·运维·服务器
无敌岩雀41 分钟前
【计算机网络】UDP 协议详解及其网络编程应用
linux·网络·网络协议·计算机网络·udp