LVS+Keepalived实现高可用和负载均衡

本文涉及的产品
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
简介: LVS+Keepalived实现高可用和负载均衡

一、实验环境:


[root@a ~]# cat /etc/redhat-release 
CentOS Linux release 7.7.1908 (Core)
[root@a ~]# uname -a
Linux a 3.10.0-1062.el7.x86_64 #1 SMP Wed Aug 7 18:08:02 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
IP分配:
lvs:10.10.10.11
keepalived:10.10.10.14
web1:10.10.10.12
web2:10.10.10.13
vip:10.10.10.100


二、实验目的:


lvs调度器宕机或者web服务器宕机不影响业务的进行


三、实验原理:


image.png1.客户端向LVS的VIP发送请求,源IP和目的IP分别为CIP和VIP,源MAC地址和目的MAC分别为CMAC和DMAC 2.当LVS收到请求后通过调度选出一个realserver来响应请求将源请求中的MAC地址该为自己的MAC地址目的地址改为realserver的MAC地址,此时源MAC和目的MAC分别为DMAC和RMAC,然后将报文送往交换机,交换机收报文后根据目的MAC地址将请求转发至后端Realserver 3.Realserver发现请求报文中的MAC地址是自己就会将报文接收并处理,处理完请求报文后将响应报文通过lo接口送给eth0网卡直接发送给客户端。 注意:需要设置lo接口的VIP不能响应本地网络内的arp请求。


四、实验部分:


(1)构建LVS-DR模式

1、关闭网卡守护进程(all)
systemctl stop NetworkManager && systemctl disable NetworkManager.service
2、开启网卡子接口
配置VIP
[root@a ~]# cd /etc/sysconfig/network-scripts/
[root@a network-scripts]# cp -a ifcfg-ens32 ifcfg-ens32:0
[root@a network-scripts]# cat ifcfg-ens32:0
BOOTPROTO=static
DEVICE=ens32:0
ONBOOT=yes
IPADDR=10.10.10.100
PREFIX=24
[root@a network-scripts]# systemctl restart network
3、修改内核配置文件
关闭广播功能
[root@a network-scripts]# echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
[root@a network-scripts]# echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects 
[root@a network-scripts]# echo 0 > /proc/sys/net/ipv4/conf/ens32/send_redirects
4、安装ipvsadm
lvs的管理工具
[root@a network-scripts]# yum install -y ipvsadm
5、关闭防火墙和selinux
[root@a network-scripts]# systemctl stop firewalld
[root@a network-scripts]# systemctl disable firewalld
[root@a network-scripts]# setenforce 0
RS配置(all):
1、安装apache并写入内容
[root@a ~]# yum install -y httpd
[root@a ~]# echo "this is server 1" >> /var/www/html/index.html
[root@a ~]# systemctl restart httpd
[root@a ~]# systemctl enable httpd
[root@a ~]# curl localhost
this is server 1
2、开启网卡子接口
配置VIP
[root@a ~]# cd /etc/sysconfig/network-scripts/
[root@a network-scripts]# cp -a ifcfg-lo ifcfg-lo:0
[root@a network-scripts]# cat ifcfg-lo:0
DEVICE=lo:0
IPADDR=10.10.10.100
NETMASK=255.255.255.255
NETWORK=127.0.0.0
# If you're having problems with gated making 127.0.0.0/8 a martian,
# you can change this to something else (255.255.255.255, for example)
BROADCAST=127.255.255.255
ONBOOT=yes
NAME=loopback
[root@a network-scripts]# systemctl restart network
3、ARP行为控制
[root@a network-scripts]# echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@a network-scripts]# echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
[root@a network-scripts]# echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@a network-scripts]# echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
刷新
[root@a network-scripts]# sysctl -p
4、添加路由
[root@a network-scripts]# route add -host 10.10.10.100 dev lo:0
[root@a network-scripts]# echo "route add -host 10.10.10.100 dev lo:0" >> /etc/rc.local
5、关闭防火墙和selinux
[root@a network-scripts]# systemctl stop firewalld
[root@a network-scripts]# systemctl disable firewalld
[root@a network-scripts]# setenforce 0
6、设置LBC
参数说明:
-A:添加集群
-a:集群子节点
-t:tcp协议
-s:算法
-r:真实服务器
-g:DR模式
[root@a ~]# ipvsadm -A -t 10.10.10.100:80 -s rr
[root@a ~]# ipvsadm -a -t 10.10.10.100:80 -r 10.10.10.12:80 -g 
[root@a ~]# ipvsadm -a -t 10.10.10.100:80 -r 10.10.10.13:80 -g
[root@a ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.10.10.100:80 rr
  -> 10.10.10.12:80               Route   1      0          0         
  -> 10.10.10.13:80               Route   1      0          0         
[root@a ~]# ipvsadm --save > /etc/sysconfig/ipvsadm
[root@a ~]# systemctl start ipvsadm.service
[root@a ~]# systemctl enable ipvsadm.service
7、测试
lvs会把请求按rr算法分给rs
[root@a network-scripts]# ipvsadm -Ln --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes
  -> RemoteAddress:Port
TCP  10.10.10.100:80                    24      164        0    24880        0
  -> 10.10.10.12:80                     12       94        0    16209        0
  -> 10.10.10.13:80                     12       70        0     8671        0

(2)部署keepalived

        在lvs上配置和一台新的虚拟机上配置
[root@a ~]# cd /etc/sysconfig/network-scripts/
[root@a ~]# scp ./ifcfg-ens32:0 10.10.10.14:/etc/sysconfig/network-scripts/ifcfg-ens32:0            
[root@a ~]# yum install -y keepalived
#配置keepalived配置文件
[root@a ~]# cat /etc/keepalived/keepalived.conf|head -50
! Configuration File for keepalived
global_defs {
   router_id R1
}
vrrp_instance VI_1 {
    state MASTER
    interface ens32
    virtual_router_id 66
    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
  10.10.10.100    
}
}
virtual_server 10.10.10.100 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    persistence_timeout 50
    protocol TCP
    real_server 10.10.10.12 80 {
        weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80        
}
}
real_server 10.10.10.13 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
从节点配置基本一致,
修改以下配置
router_id R2
state SLAVE
priority 20
在从节点安装ipvsadm
[root@a network-scripts]# yum install -y ipvsadm
[root@a network-scripts]# ipvsadm -l
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
第一次查看没有集群信息,重启keepalived服务后会发现集群信息已经同步在两个节点
[root@a network-scripts]# systemctl restart keepalived
[root@a network-scripts]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.10.10.100:80 rr persistent 50
  -> 10.10.10.12:80             Route   1      0          0         
  -> 10.10.10.13:80             Route   1      0          0     


(3)进行测试


image.png



断开lvs调度器的网卡再次测试


image.png



断开web1服务器


image.png


相关实践学习
小试牛刀,一键部署电商商城
SAE 仅需一键,极速部署一个微服务电商商城,体验 Serverless 带给您的全托管体验,一起来部署吧!
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
13天前
|
负载均衡 网络协议 Linux
LVS,软负载均衡
LVS(Linux Virtual Server)是一项广泛应用的负载均衡技术,由章文嵩博士于1998年发起,自Linux 2.4.24版本起成为官方内核的一部分。LVS通过四层负载均衡技术实现高性能、高可用的服务器集群,支持多种调度算法和工作模式(如D-NAT、full-NAT、IP隧道、DR),适用于HTTP、数据库等应用。相比7层负载均衡器(如Nginx、HAProxy),LVS具有更高的并发处理能力和更低的资源消耗,适合大规模流量分发。本期文章详细介绍了LVS的工作原理、优势与不足,并对比了常见的负载均衡产品,帮助读者根据具体需求选择合适的解决方案。
LVS,软负载均衡
|
2月前
|
存储 负载均衡 NoSQL
搭建高可用及负载均衡的Redis
通过本文介绍的高可用及负载均衡Redis架构,可以有效提升Redis服务的可靠性和性能。主从复制、哨兵模式、Redis集群以及负载均衡技术的结合,使得Redis系统在应对高并发和数据一致性方面表现出色。这些配置和技术不仅适用于小型应用,也能够支持大规模企业级应用的需求。希望本文能够为您的Redis部署提供实用指导和参考。
239 9
|
3月前
|
负载均衡 算法 Linux
LVS+Keepalived:实现高效软负载均衡的利器
本文介绍了如何使用LVS(Linux Virtual Server)和Keepalived搭建高可用负载均衡集群。LVS通过不同调度算法将请求转发给后端服务器,而Keepalived基于VRRP协议实现服务高可用,避免IP单点故障。具体步骤包括环境准备、安装配置ipvsadm和Keepalived、启动服务及测试。文中还详细解释了配置文件中的关键参数,并提供了故障转移测试方法。最后,文章简要对比了软件、硬件和云负载均衡方案的特点,帮助读者选择合适的负载均衡策略。
501 4
|
6月前
|
运维 负载均衡 网络协议
LVS+Keepalived 负载均衡
LVS+Keepalived 负载均衡
129 8
LVS+Keepalived 负载均衡
|
6月前
|
域名解析 运维 负载均衡
LVS+Keepalived 负载均衡(二)28-1
【8月更文挑战第28天】LVS+Keepalived 负载均衡 配置 LVS VIP
102 5
|
7月前
|
负载均衡 网络协议
使用LVS搭建集群实现负载均衡(二)安装使用
【8月更文挑战第8天】使用LVS搭建集群实现负载均衡(二)安装使用
117 5
|
7月前
|
存储 负载均衡 算法
使用LVS搭建集群实现负载均衡(一)
【8月更文挑战第8天】使用LVS搭建集群实现负载均衡
259 5
|
7月前
|
缓存 负载均衡 算法
在Linux中, LVS负载均衡有哪些策略?
在Linux中, LVS负载均衡有哪些策略?
|
8月前
|
负载均衡 安全 Cloud Native
云上负载均衡:构建高可用、高性能的网络应用架构
与云原生技术深度融合:随着云原生技术的普及和发展未来的云上负载均衡将更加紧密地与云原生技术相结合。例如与Kubernetes等容器编排平台集成实现自动化的服务发现和路由管理;与Serverless架构结合提供无缝的流量接入和请求处理能力。 安全性能提升:面对日益严峻的网络安全威胁云上负载均衡将更加注重安全性能的提升。通过引入加密传输、访问控制、DDoS防护等安全措施确保网络流量的安全性和隐私性;同时还将建立完善的安全监控和应急响应机制以应对各种安全事件和突发事件。 支持多协议和多场景:未来的云上负载均衡将支持更多种类的网络协议和应用场景以满足不同用户和业务的需求。例如支持HTTP/2、
356 0
|
负载均衡 应用服务中间件 Linux
企业实战(13)LVS负载均衡NAT(网络地址转换)模式实战详解(一)
企业实战(13)LVS负载均衡NAT(网络地址转换)模式实战详解(一)
212 0

热门文章

最新文章