【图文教程】Keepalived + LVS集群架构

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

1. 集群介绍

集群,简单地说是指一组(若干个)相互独立的计算机,利用高速通信网络组成一个较大的计算机服务系统,每个集群节点(即集群中的每台计算机)都是运行各自服务的独立服务器。

集群的特点:高性能(Performance)、价格有效(Cost-effectiveness)、可伸缩性(Scalability)、高可用性(Availability)、透明性(Traansparency)、可管理性(Manageability)、可编程性(Programmability)

什么是集群

多台机器一起提供服务,这些机器的集合就是集群。
集群分类

高可用   
	
	不存在单点,即,如果一个机器宕机不影响服务。
	常见开源软件:keepalived  heartbeat 

负载均衡   

	把负载均衡地分担到多台机器上。论坛服务器1台不够了,我们再加1台,用户请求会分摊到这两台机器上。
	常见开源软件:LVS  Nginx  haproxy

分布式集群

	它实际上是集合了高可用和负载均衡为一体的一种集群。它的特点是,可以无限制的横向扩容。

2. keepalived集群介绍

使用 keepalived 来实现高可用集群,因为 heartbeat 在 centos6 上有一些问题,影响实验效果,而且 heartbeat 软件在2010年停止更新;因此着重讲解 keepalived

keepalived 通过 VRRP(Virtual Router Redundancy Protocl)来实现高可用。

在这个协议里会将多台功能相同的路由器组成一个小组,这个小组里会有 1 个 master 角色和NN>=1)个backup 角色。

master 会通过组播的形式向各个 backup 发送 VRRP 协议的数据包,当 backup 收不到 master 发来的 VRRP 数据包时,就会认为 maste r宕机了。此时就需要根据各个 backup 的优先级来决定谁成为新的 mater 

Keepalived 要有三个模块,分别是 core、check 和 vrrp。其中 core 模块为 keepalived 的核心,负责主进程的启动、维护以及全局配置文件的加载和解析,check 模块负责健康检查,vrrp 模块是来实现 VRRP 协议的。

3. 用keepalived配置高可用集群

实验准备

准备两台机器 test01 作为 master,test02 作为 backup
两台机器都执行 yum install -y keepalived
两台机器都需要安装 nginx

1. 在 MASTER 上配置:

  • 给 master、slave 两台机器都安装 Keepalived,安装命令如下
yum install -y keepalived
  • 把 keepalived 原配置文件清空,并添加新配置
[root@test01 ~]# ls /etc/keepalived/keepalived.conf     #查看keepalived配置文件路径
/etc/keepalived/keepalived.conf

[root@test01 ~]# > /etc/keepalived/keepalived.conf      #清空原有内容

[root@test01 ~]# vim /etc/keepalived/keepalived.conf    #编辑新内容

global_defs {
   
   
   notification_email {
   
   
     sunchen88vip@163.com                  #定义接收邮件人
   }
   notification_email_from                 #定义发邮件地址(实际没有)
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
vrrp_script chk_nginx {
   
   
    script "/usr/local/sbin/check_ng.sh"   #此脚本为检查nginx服务的是否正常
    interval 3
}
vrrp_instance VI_1 {
   
                          #定义相关 master 的信息
    state MASTER                           #角色叫 master  从机上叫 backup
    interface ens33                        #网卡的名称
    virtual_router_id 51                   #定义路由器的 id
    priority 100                           #权重,主角色和从角色的权重是不一样的
    advert_int 1
    authentication {
   
   
        auth_type PASS                     #认证相关信息
        auth_pass 123                      #定义密码
    }
    virtual_ipaddress {
   
   
        192.168.85.100                     #定义 一个公有的 vip 
    }
    track_script {
   
   
        chk_nginx                          #定义监控脚本,这里和上面 vrr_script 后面的字符串保持一致
    }
}
  • 定义监控 nginx 的脚本

这是检查 Nginx 是否正常的一个 shell 脚本

[root@test01 ~]# vim /usr/local/sbin/check_ng.sh      

#!/bin/bash  
#时间变量,用于记录日志
d=`date --date today +%Y%m%d_%H:%M:%S`  
#计算 nginx 进程数量 
n=`ps -C nginx --no-heading|wc -l`
#如果进程为 0,则启动 nginx,并且再次检测 nginx 进程数量,
#如果还为 0,说明 nginx 无法启动,此时需要关闭 keepalived     
if [ $n -eq "0" ]; then
       /etc/init.d/nginx start
       n2=`ps -C nginx --no-heading|wc -l`
       if [ $n2 -eq "0"  ]; then
               echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log
               systemctl stop keepalived
       fi
fi
  • 给 nginx 脚本赋予 755 权限
[root@test01 ~]# ls -l /usr/local/sbin/check_ng.sh
-rw-r--r--. 1 root root 575 Jun  4 10:24 /usr/local/sbin/check_ng.sh
[root@test01 ~]# chmod 755 /usr/local/sbin/check_ng.sh  #赋予权限,否则无法被 keepalived 调用
[root@test01 ~]# ls -l /usr/local/sbin/check_ng.sh
-rwxr-xr-x. 1 root root 575 Jun  4 10:24 /usr/local/sbin/check_ng.sh
  • 开启 keepalived 服务,查看日志,查看网卡,停止防火墙,关闭 SElinux
1. systemctl start keepalived     #启动keepalived

2. ps aux |grep keep              #查看keepalived的进程

3. /etc/init.d/nginx stop         #暂停nginx

4. ps aux |grep nginx             #nginx的进程还是会启动

5. less /var/log/messages         #查看日志内容

6. ip add                         #查看网卡有没有vip 

7. systemctl stop firewalld       #关闭防火墙

8. getenforce 0                   #关闭SELinux

9. iptables -nvL                  #查看表

在这里插入图片描述

在这里插入图片描述

  • 修改 nginx 启动页面
[root@test01 ~]# cd /usr/local/nginx/html/
[root@test01 html]# mv index.html index.html.1
[root@test01 html]# vim index.html

MASTER!

2. 在 BACKUP 上配置:

  • 把 keepalived 原配置文件清空,并添加新配置
[root@test02 ~]# > /etc/keepalived/keepalived.conf
[root@test02 ~]# vim /etc/keepalived/keepalived.conf 

global_defs {
   
   
   notification_email {
   
   
     sunchen88vip@163.com                  
   }
   notification_email_from                 
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
vrrp_script chk_nginx {
   
   
    script "/usr/local/sbin/check_ng.sh"   
    interval 3
}
vrrp_instance VI_1 {
   
                         
    state BACKUP                            #从机是 backup
    interface ens33                       
    virtual_router_id 51                   
    priority 90                             #比主的权重少一些
    advert_int 1
    authentication {
   
   
        auth_type PASS                    
        auth_pass 123                     
    }
    virtual_ipaddress {
   
   
        192.168.85.100                     
    }
    track_script {
   
   
        chk_nginx                        
    }
}
  • 定义监控 nginx 的脚本
[root@test02 ~]# vim /usr/local/sbin/check_ng.sh      

#!/bin/bash
#时间变量,用于记录日志
d=`date --date today +%Y%m%d_%H:%M:%S`
#计算 nginx 进程数量 
n=`ps -C nginx --no-heading|wc -l`
#如果进程为 0,则启动 nginx,并且再次检测 nginx 进程数量,
#如果还为 0,说明 nginx 无法启动,此时需要关闭 keepalived     
if [ $n -eq "0" ]; then
       systemctl start nginx
       n2=`ps -C nginx --no-heading|wc -l`
       if [ $n2 -eq "0"  ]; then
               echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log
               systemctl stop keepalived
       fi
fi
  • 给 nginx 脚本赋予 755 权限
[root@test02 ~]# chmod 755 /usr/local/sbin/check_ng.sh
[root@test02 ~]# ll /usr/local/sbin/check_ng.sh 
-rwxr-xr-x. 1 root root 635 Jun  4 11:13 /usr/local/sbin/check_ng.sh
  • 开启 keepalived 服务,停止防火墙,关闭 SElinux
[root@test01 ~]# systemctl start keepalived  #启动 keepalived
[root@test01 ~]# ps aux |grep keep           #查看 keepalived 的进程
[root@test01 ~]# /etc/init.d/nginx stop      #暂停 nginx
[root@test01 ~]# ps aux |grep nginx          # nginx 的进程还是会启动
[root@test01 ~]# systemctl stop firewalld    #关闭防火墙
[root@test01 ~]# getenforce 0                #关闭 SELinux
[root@test01 ~]# iptables -nvL               #查看表
  • 修改 nginx 启动页面
[root@test02 ~]# cd /usr/local/nginx/html/
[root@test02 html]# mv index.html index.html.1
[root@test02 html]# vim index.html

BACKUP!

3. 测试阶段:

现在把个机器梳理一下:

192.168.85.130 为 master 机,test01
192.168.85.131 为 backup 机,test02

192.168.85.100VIP
  • 用 ip add 命令查看,此时 VIP 192.168.85.100 在 test01 上

在这里插入图片描述

  • 分别测试 test01 (master) 和 test02 (backup) 是否可以运行,并且测试 vip 是否可以运行

master 使用 ens33 ip 访问

在这里插入图片描述

backup 端访问页面

在这里插入图片描述

master 使用虚拟 vip 测试访问

在这里插入图片描述

  • master 停止 keepalived 服务

实验让 test01 (master) 宕机; 关闭 keepalived 服务,在 masters 查看 VIP 是否还存在

[root@test01 ~]# systemctl stop keepalived
[root@test01 ~]# ps aux |grep keep
root     17406  0.0  0.0   9088   672 pts/1    S+   14:39   0:00 grep --color=auto keep
[root@test01 ~]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:88:e3:ff brd ff:ff:ff:ff:ff:ff
    inet 192.168.85.130/24 brd 192.168.85.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 192.168.94.150/24 brd 192.168.94.255 scope global noprefixroute ens33:0
       valid_lft forever preferred_lft forever
    inet6 fe80::67cd:2d8d:3614:6d99/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:88:e3:09 brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.1/24 brd 192.168.100.255 scope global noprefixroute ens37
       valid_lft forever preferred_lft forever
    inet6 fe80::7c5b:18cc:d832:7525/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

显示已经不存在 虚拟 ip 了
  • 在 backup 上查看,此时 VIP 完美转移到 backup 上面

在这里插入图片描述

4. 负载均衡集群介绍

在这里插入图片描述

首先我们先介绍一下什么是负载均衡: 负载平衡(Load balancing)是一种计算机网络技术,用来在多个计算机(计算机集群)、网络连接、CPU、磁盘驱动器或其他资源中分配负载,以达到最佳化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的。这是来自维基百科的介绍。负载均衡的目的,就在于平衡计算机的负载,给用户提供优质,可靠,稳定的服务。日常生活中到处都能看到“负载均衡”,一个超市的收营员高峰期只能服务10位顾客,当做活动时有20位顾客需要服务的话可能就会排长队,这样购物体验将会很差(就像客户抱怨系统/网站访问太慢)。最简单的办法就是再招个营业员,重新开通一个出口。负载均衡的核心就是“分摊压力”。

应用服务器并不直接与用户相连, 用户连接负载均衡服务器,然后由负载均衡服务器把消息转发给实际应用服务器。负载均衡器内部会根据应用服务器的负载情况,决定把消息转发给哪台服务器处理。同时负载均衡器还可以对用户屏蔽应用服务器失效,只要把用户的消息转发到非失效服务器即可。

提到负载均衡,就不能不介绍另外一个概念: 集群。集群就是一组部署有相同应用的服务器。例如web 服务器。用户的请求无论连接到哪台服务器上,都能得到相同的处理。这样我们实现一种服务器,可以将用户的请求根据特定规则转发到应用服务器上进行处理。就实现了完整的集群处理系统。这个服务器如果实现了后台服务器感知和配置功能,能够了解后台服务器的可用情况。就可以被称作为负载均衡器。

负载均衡在目前网络服务规模越来越庞大的情况下,成为一个大型服务器系统必须要面对的问题。随着用户和业务的增多,来自用户的访问量和数据流量不断增大,对服务器的计算能力和储存要求也在不断增加,单台服务器根本无法承担这么庞大的数据处理请求。这个时候,我们必须利用集群技术,采用一组服务器对来自用户的请求进行处理,服务器的数量要能够不断的扩充。在集群的前端,我们采用负载均衡技术,平均分散用户的请求到不同的处理服务器,并且能够在集群中某个服务失效时,即时感知,屏蔽,将消息转发到其他可用服务器上。

可以实现负载均衡集群的开源软件有:LVS、keepalived、haproxy、nginx等,其中LVS属于4层(网络OSI 7层模型),nginx属于7层,haproxy既可以认为是4层,也可以当做7层使用。

LVS在第四层,所以可以通过TCP/IP协议,与其他端口进行通信。而在第七层的nginx只能支持http,https,mail等协议,不能自由地与其他端口进行通信。这两种类型的软件都各有优点,例如LVS比较稳定能承载的并发量比较高,而nginx则是灵活,由于在第七层所以能够实现一些复杂的功能,能实现更多的个性化需求。

1. LVS集群介绍

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。使用LVS可以达到的技术目标是:通过LVS达到的负载均衡技术和Linux操作系统实现一个高性能高可用的Linux服务器群集,它具有良好的可靠性,可拓展性和可操作性。从而以低廉的成本实现最优的性能。现在LVS已经是Linux内核标准的一部分了,LVS从1998年开始,发展到现在已经是一个比较成熟的项目了。利用LVS技术可以实现高性能,高可压缩的网路服务,例如WWW服务,FTP服务,MAIL服务等。比较著名的就是www.linux.com以及www.real.com。

LVS的官方网站: http://www.linuxvirtualserver.org/

特点:
可伸缩网络服务的几种结构,它们都需要一个前端的负载调度器(或者多个进行主从备份)。我们先分析实现虚拟网络服务的主要技术,指出IP负载均衡技术是在负载调度器的实现技术中效率最高的。在已有的IP负载均衡技术中,主要有通过网络地址转换(Network Address Translation)将一组服务器构成一个高性能的、高可用的虚拟服务器,我们称之为VS/NAT技术(Virtual Server via Network Address Translation)。在分析VS/NAT的缺点和网络服务的非对称性的基础上,我们提出了通过IP隧道实现虚拟服务器的方法VS/TUN (Virtual Server via IP Tunneling),和通过直接路由实现虚拟服务器的方法VS/DR(Virtual Server via Direct Routing),它们可以极大地提高系统的伸缩性。VS/NAT、VS/TUN和VS/DR技术是LVS集群中实现的三种IP负载均衡技术

LVS的体系架构:
使 用LVS架设的服务器集群系统有三个部分组成:最前端的负载均衡层(Loader Balancer),中间的服务器群组层,用Server Array表示,最底层的数据共享存储层,用Shared Storage表示。在用户看来所有的应用都是透明的,用户只是在使用一个虚拟服务器提供的高性能服务。

LVS的各个层次的详细介绍:

Load Balancer层:位于整个集群系统的最前端,有一台或者多台负载调度器(Director Serv

keepalive高可用 keepalive1.keepalived简介1.1keepalived是什么?1.2 keepalived的重要功能1.3 keepalived高可用故障转移的原理1.4 keepalived原理1.4.1 keepalived工作原理描述2.keepalived实现nginx负载均衡机高可用 1.keepalived简介 1.1keepalived是什么? Keepalived 软件起初是专... 阅读详情

相关推荐

keepalived+lvs

KeepalivedLVS是两个常用于构建高可用、高性能服务器集群的开源工具,通常结合使用以实现负载均衡和故障转移。Keepalived通过VRRP协议实现主备节点冗余,并管理虚拟IP(VIP)和健康检查,确保高可用性。LVS作为内核级负载均衡器,支持多种调度算法,将客户端请求分发到后端服务器集群,提供高性能的负载均衡。两者协同工作时,Keepalived管理VIP和健康检查,LVS负责流量分发,实现无缝故障转移。典型应用场景包括Web服务器集群、数据库高可用、微服务架构和金融/电商系统。

eeeeebv的博客 1583

LVS+Keepalived详解

一、引言 什么是KeepalivedKeepalived一个基于VRRP 协议来实现的 LVS 服务高可用方案,可以利用其来解决单点故障。一个LVS服务会有2台服务器运行Keepalived,一台为主服务器(MASTER),一台为备份服务器(BACKUP),但是对外表现为一个虚拟IP,主服务器会发送特定的消息给备份服务器,当备份服务器收不到这个消息的时候,即主服务器宕机的时候, 备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。 Keepalived的作用: 如上述所说,Keepalived

一只程序猿的修炼之旅 7018

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

在业务量达到一定量的时候,往往单机的服务是会出现瓶颈的。此时最常见的方式就是通过负载均衡来进行横向扩展。其中我们最常用的软件就是 Nginx。通过其反向代理的能力能够轻松实现负载均衡,当有服务出现异常,也能够自动剔除。但是负载均衡服务自身也可能出现故障,因此需要引入其他的软件来实现负载均衡服务的高可用。本文就介绍了一种基于 LVS+Keepalived 的方式,来实现高可用 Web 集群。本文介绍了使用 LVS+Keepalived 来实现高可用负载均衡,这能使得我们的服务能够更加的稳定。

w2304948626的博客 2180

LVS负载均衡之--Keepalived模式(超详细)

在一个LVS服务集群中通常有主服务器(MASTER)和备份服务器(BACKUP)两种角色的服务器,但是对外表现为一个虚拟IP,主服务器会发送VRRP通告信息给备份服务器,当备份服务器收不到VRRP消息的时候,即主服务器异常的时候,备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。--12行--修改,指定服务器(路由器)的名称,主备服务器名称须不同,主为LVS_01,备为LVS_02。--36行--修改,指定虚拟服务器地址(VIP)、端口,定义虚拟服务器和Web服务器池参数。

weixin_42054864的博客 1409

配置LVS + Keepalived高可用负载均衡集群

一、理论篇:LVS简介:官网http://www.linuxvirtualserver.orgLVSLinux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项 目之一。章文嵩博士目前工作于阿里集团,主要从事集群技术、操作系统、对象存储与数据库的研究。(摘自...

weixin_34161029的博客 236

LVS+Keepalived 高可用集群搭建 (图文详解小白易懂)

高可用集群(High Availability Cluster)是以减少服务中断时间为目地的服务器集群技术它通过保护用户的业务程序对外不间断提供的服务,把因软件、硬件、人为造成的故障对业务的影响降低到最小程度。

weixin_66924350的博客 6265

集群部署LVS(dr模式)+Keepalived 高可用集群图文步骤详解

LVS+KEEPALIVED高可用集群一、LVS+Keepalived 高可用群集二、部署实验准备1.部署NFS共享服务器2.配置节点服务器(1)配置虚拟 IP 地址(VIP:192.168.40.66)(2)调整内核的ARP 响应参数(3)编辑网页主页3.配置负载调度器(1)关防火墙,加载ip_vs模块(这里主备都是同样操作)(2)调整 proc 响应参数(这里主备都是同样操作)(3)配置负载分配策略(主)(4)配置负载分配策略(备)(5)配置keeplived (主)(6)配置keeplived (备)

weixin_44324367的博客 1291

LVS+Keepalived 高可用集群搭建实验

2.在master上修改配置文件: 3.拷贝master上的keepalived.conf到backup上: [root@lvs-k2 ~]# mkdir /etc/keepalived/[root@lvs-k1 ~]# scp /etc/keepalived/keepalived.conf 192.168.40.140:/etc/keepalived/ 5.lvs-k1 和 lvs-k2 上面都启动keepalived服务: 6.在master服务器也就是lvs-k1上面查看是否出

2401_83107769的博客 813

LVS+Keepalived 高可用群集实战部署(图文详解)

文章目录一、LVS+Keepalived 高可用群集1、LVS2、Keepalived3、Keepalived实现原理剖析二、LVS+Keepalived 高可用群集部署环境配置1、配置负载调度器(主、备相同)2、配置节点服务器3、配置keeplived(主、备DR服务器上都要设置) 一、LVS+Keepalived 高可用群集 1、LVS Linux虚拟服务器(Linux Virtual Server) LVS 实际上相当于基于IP地址的虚拟化应用, 为基于IP地址和内容请求分发的负载均衡提出了一种高效的

愿你成为自己喜欢的模样,不抱怨,不将就,有自由,有光芒! 3260

配置LVS + Keepalived高可用负载均衡集群图文教程

负载均衡系统可以选用LVS方案,而为避免Director Server单点故障引起系统崩溃,我们可以选用LVS+Keepalived组合保证高可用性。 重点:每个节点时间都同步哈! C++代码 [root@DR2~]#ntpdatetime.windows.c...

chimeiyan8610的博客 220

LVS+Keepalived 高可用群集的部署(图文详解!)

LVS+Keepalived 高可用群集的部署(图文详解!) 文章目录LVS+Keepalived 高可用群集的部署(图文详解!)一、LVS+Keepalived 高可用群集1.LVS2.Keepalived功能及作用3.Keepalived实现原理剖析二、LVS-DR中的ARP问题三、LVS负载均衡DR模式集群部署步骤1.部署共享存储2.配置节点服务器(1)配置虚拟 IP 地址(VIP:192.168.2.100)(2)调整内核的ARP 响应参数(3)两个web服务器前两步操作相同,下面的配置不太一样3.

qq_35456705的博客 349

图文并茂实战详解LVS负载均衡的应用

图文并茂实战详解LVS负载均衡的应用

背锅神童的博客 398

LAMP架构1-LVS+Keepalived实现高可用的ip负载均衡

文章目录一、企业项目环境准备二、使用步骤 一、企业项目环境准备 二、使用步骤

Ghost_0110 885
上一篇: 【图文教程】Nginx
下一篇: 【图文教程】Memcached
孫筅貹
博客等级 码龄8年 27粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值