首页 > 其他分享 >LVS+Keepalived群集

LVS+Keepalived群集

时间:2024-08-12 17:51:49浏览次数:10  
标签:LVS 群集 Keepalived keepalived systemctl conf 服务器 root localhost

目录

keepalived的热备方式

keepalived的安装与服务

一、使用Keepalived双机实现热备案例

1:主服务器配置

2:备用服务器的配置

3:测试虚拟ip的连通性

二、LVS+Keepalived高可用性

1:主调度器配置

健康状态检查的方式

2:从调度器配置

3:服务器池配置

(1)web1网络的配置

(2)web2服务器配置

4:模拟故障

keepalived的热备方式

Keepalived 采用 VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)热备份协议,以软件的方式实现Linux服务器的多机热备功能(VRRP是针对路由器的一种备份解决方案--由多台路由器组成一个热备组,通过共用的虚拟 IP地址对外提供服务)

  • 专为LVS和HA设计的一款健康状态检查工具
  • 支持故障自动切换(Failover)
  • 支持节点健康状态检查(Health Checking)


keepalived的安装与服务

//除了安装keepalived,在 LVS 群集环境中应用时,也需要用到 ipvsadm管理工具
[root@localhost ~]# yum install y keepalived ipvsadm
//控制 Keepalived 服务;YUM 安装 keepalived 后,执行以下命令将 keepalived 服务设置为开机启动
[root@localhost ~]# systemctl enable keepalived

一、使用Keepalived双机实现热备案例

服务器

操作系统

主机名/IP 地址

web服务器

CentOS7.9

192.168.10.101

web服务器

CentOS7.9

192.168.10.102

1:主服务器配置

//安装keepalived服务控制
[root@localhost ~]# systemctl stop NetworkManager
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# yum -y install keepalived ipvsadm
[root@localhost ~]# systemctl enable keepalived
//配置keepalived
[root@localhost ~]# cd /etc/keepalived/
[root@localhost keepalived]# cp keepalived.conf keepalived.conf.bak
[root@localhost keepalived]# vim keepalived.conf        //打开配置文件,修改几个参数
...
router_id LVS_01    //router_id用于区分设备,可以重复但不建议
#  vrrp_strict      //严格执行VRRP协议规范,此模式不支持节点单播,配置了此参数,vip可以漂移到这台服务器,但是ping vip不通,因此需要将此参数注释
state MASTER        //将状态改为master
virtual_router_id 51     //虚拟路由id,用于划分主机到同一个热备组
virtual_ipaddress {        //更改虚拟IP地址
        192.168.10.172
    }
...
[root@localhost keepalived]# systemctl start keepalived
[root@localhost keepalived]# ip add show dev ens33

2:备用服务器的配置

  • 在同一个Keepalived 热备组内,所有服务器的 Keepalived 配置文件基本相同,包括虚拟路由器的 ID号、认证信息、漂移地址、心跳频率等
    • 路由器名称(router id):建议为每个参与热备的服务器指定不同的名称
    • 热备状态(state):至少应有一台主服务器,将状态设为MASTER;可以有多台备用的服务器,将状态设为 BACKUP
    • 优先级(priority):数值越大则取得 VIP 控制权的优先级越高,因此主服务器的优先级应设为最高;其他备用服务器的优先级可依次递减,但不要相同,以免在争夺 VIP 控制权时发生冲突

配置备用服务器(可以有多台)时,可以参考主服务器的 keepalived.conf 配置文件内容,只需修改路由器名称、热备状态、优先级

//安装keepalived服务控制
[root@localhost ~]# systemctl stop NetworkManager
[root@localhost ~]# yum -y install keepalived
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl stop firewalld

//配置keepalived
[root@localhost ~]# cd /etc/keepalived/
[root@localhost keepalived]# cp keepalived.conf keepalived.conf.bak
[root@localhost keepalived]# vi keepalived.conf
...
//需要和主服务器不同的地方
state BACKUP    // 角色
priority 90
    // Backup的优先级必须比Master低
...
[root@localhost keepalived]# systemctl start keepalived

3:测试虚拟ip的连通性

Keepalived 的日志消息保存在/var/log/messages 文件中,在测试主、备故障自动切换功能时,可以跟踪此日志文件来观察热备状态的变化

//可以先查看两个服务器地址
[root@localhost keepalived]# ip a
//安装keepalived服务控制
[root@localhost ~]# less /var/log/message

在测试过程中down掉master服务器的网络,观察结果,虚拟IP漂移到Backup主机 


二、LVS+Keepalived高可用性

服务器

操作系统

主机名/IP 地址

主调度器

CentOS7.9

192.168.10.101

从调度器

CentOS7.9

192.168.10.102

Web服务器(1)

CentOS7.9

192.168.10.103

Web服务器(1)

CentOS7.9

192.168.10.104

客户端(测试机)

CentOS7.9

192.168.10.105

1:主调度器配置

(1)主服务器keepalived的安装

[root@localhost ~]# systemctl stop NetworkManager
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# yum -y install keepalived ipvsadm
[root@localhost ~]# systemctl enable keepalived

(2)配置主服务器keepalived

[root@localhost ~]# cd /etc/keepalived/
[root@localhost keepalived]# cp keepalived.conf keepalived.conf.bak
[root@localhost keepalived]# vi keepalived.conf
...
virtual_server 192.168.10.172 80 {
    delay_loop 6  # 回环延迟时间
    lb_algo wrr   # 调度算法
    lb_kind DR    # 负载均衡的工作模式
    #persistence_timeout 50 会话保持时间
    protocol TCP

    real_server 192.168.10.103 80 {
        weight 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }

    real_server 192.168.10.104 80 {
        weight 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}
# 剩下的内容删除
# 命令模式下:d + G
保存并退出
...

(3)主服务器内核参数的配置

[root@localhost ~]# vi /etc/sysctl.conf
在末尾添加:
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
[root@localhost ~]# sysctl -p

//开启主服务器的keepalived服务
[root@localhost keepalived]# systemctl start keepalived
[root@localhost keepalived]# ip add show dev ens33
健康状态检查的方式
  • SSL_GET
    • 通过SSL,GET一下网站根目录的网页文件,如果有内容,就是正常的
  • TCP_CHECL
    • 工作在第4层,keepalived向后端服务器发起一个tcp连接请求,如果后端服务器没有响应或超时,那么这个后端将从服务器池中移除。
  • HTTP_GET
    • 工作在第5层,向指定的URL执行http请求,将得到的结果用md5加密并与指定的md5值比较看是否匹配,不匹配则从服务器池中移除;此外还可以指定http返回码来判断检测是否成功。HTTP_GET可以指定多个URL用于检测,在一台服务器有多个虚拟主机的情况下使用。
  • MISC_CHECK
    • 用脚本来检测,脚本如果带有参数,需将脚本和参数放入双引号内,根据脚本的返回值来判断

2:从调度器配置

//从调度器keepalived安装
[root@localhost ~]# systemctl stop NetworkManager
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# yum -y install keepalived ipvsadm
[root@localhost ~]# systemctl enable keepalived   
 
//从调度器keepalived的配置
[root@localhost ~]# cd /etc/keepalived/
[root@localhost keepalived]# cp keepalived.conf keepalived.conf.bak
[root@localhost keepalived]# vi keepalived.conf
...
//从服务器内核参数的配置
[root@localhost ~]# vi /etc/sysctl.conf
在末尾添加:
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
[root@localhost ~]# sysctl -p

//开启从服务器的keepalived服务
[root@localhost keepalived]# systemctl start keepalived

3:服务器池配置

(1)web1网络的配置
//网络配置
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@localhost network-scripts]# vi ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.10.172
NETMASK=255.255.255.255
ONBOOT=yes

[root@localhost network-scripts]# systemctl restrt network
[root@localhost network-scripts]# vi /etc/rc.local
/sbin/route add -host 192.168.10.172 dev lo:0

[root@localhost network-scripts]# route add -host 192.168.10.172 dev lo:0
(2)httpd服务的安装
[root@localhost ~]# yum -y install httpd
[root@localhost ~]# vi /var/www/html/index.html
test web01
(3)内核参数的设置
[root@localhost ~]# vi /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
(4)开启httpd服务
[root@localhost ~]# systemctl start httpd
(2)web2服务器配置
//网络配置
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@localhost network-scripts]# vi ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.10.172
NETMASK=255.255.255.255
ONBOOT=yes

[root@localhost network-scripts]# systemctl restart network
[root@localhost network-scripts]# vi /etc/rc.local
/sbin/route add -host 192.168.10.172 dev lo:0

[root@localhost network-scripts]# route add -host 192.168.10.172 dev lo:0

(2)httpd服务的安装
[root@localhost ~]# yum -y install httpd
[root@localhost ~]# vi /var/www/html/index.html
test web02

(3)内核参数的设置
[root@localhost ~]# vi /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2

(4)开启httpd服务
[root@localhost ~]# systemctl start httpd

4:模拟故障

//先访问
[root@localhost ~]# curl 192.168.10.172
test web02
//把主服务器暂停,再测试,可以看到在几秒后, 服务可以正常访问,实现高可用(主调度器和备调度器之间切换Master和VIP)
//在启动主服务器,使用ipvsadm -ln查看创建出对应的LVS策略
[root@localhost ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.10.172:80 rr
  -> 192.168.10.103:80            Route   1      0          0         
  -> 192.168.10.104:80            Route   1      0          0 

标签:LVS,群集,Keepalived,keepalived,systemctl,conf,服务器,root,localhost
From: https://blog.csdn.net/minly12/article/details/140965568

相关文章

  • LVS原理及实例
    目录LVS原理LVS概念lvs集群的类型lvs-nat解释传输过程lvs-dr解释传输过程 特点lvs-tun LVS(LinuxVirtualServer)常见的调度算法防火墙标记(FirewallMarking)结合轮询调度实战案例lvs的nat模式配置准备工作配置过程测试结果lvs的dr模式综合实践虚拟机配置......
  • keepalived工作原理和使用方式
    keepalived是什么keepalived是集群管理中保证集群高可用的一个服务软件,用来防止单点故障。keepalived主要有三个模块分别是core、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式......
  • 深入LVS内核世界:揭秘其高效背后的技术细节与实现机制
    LVS简介Linuxvirtualserver,即Linux虚拟服务器,是一种基于Linux平台的高性能、高可用的服务器负载均衡技术。它主要工作在网络层、传输层(OSI参考模型的第三层、第四层),主要通过IP地址和端口号来转发网络流量。LVS可以在一台或多台服务器(称之为负载均衡器或调度器)上运行,将来自客......
  • Keepalived双机热备
    在这个高度信息化的IT时代,企业的生产系统、业务运营、销售和支持,以及日常管理等环节越来越依赖于计算机信息和服务,对高可用(HA)技术的应用需求不断提高,以便提供持续的、不间断的计算机系统或网络服务。keepalived双击热备基础知识Keepalived起初是专门针对LVS设计的一款......
  • 搭建 Web 群集Haproxy
    案例概述        Haproxy是目前比较流行的一种群集调度工具,同类群集调度工具有很多,如LVS和Nginx。相比较而言,LVS性能最好,但是搭建相对复杂;Nginx的upstream模块支持群集功能,但是对群集节点健康检查功能不强,高并发性能没有Haproxy好。Haproxy官方网站是http://ww......
  • 02 部署LVS-DR群集
    2.1:直接路由模式(LVS-DR)实验环境关闭所有测试环境的防火墙[root@bogon~]#systemctlstopfirewalld[root@bogon~]#setenforce01.配置LVS调速器(1)配置虚拟IP地址VIP[root@lvs~]#cd/etc/sysconfig/network-scripts/[root@lvsnetwork-scripts]#cpifcfg-ens33if......
  • LVS-TUN隧道模式
    当然可以。以下是按照您的要求整理的表格形式的实验手册:主机名称网卡信息安装应用系统Client客户端192.168.2.101无RHEL8/CentOS8Lvs服务器(DR)DIP:192.168.2.110VIP:192.168.40.111ipvsadmRHEL8/CentOS8RS1RIP:192.168.2.111httpdRHEL8/CentOS8RS2R......
  • keepalived 高可用(非抢占式)
    主global_defs{router_idLVS_MASTER#名称标记为master,名字随便取vrrp_gna_interval0}#加入周期性检测nginx服务脚本的相关配置#vrrp_scriptcheck_nginx{#script"/etc/keepalived/check_nginx.sh"#心跳执行的脚本,检测nginx是否启动#interval2......
  • LVS介绍
    1LVS介绍1.1简介负载均衡技术有很多实现方案,有基于DNS域名轮流解析的方法、有基于客户端调度访问的方法、有基于应用层系统负载的调度方法,还有基于IP地址的调度方法。本文介绍基于传输层的负载均衡器LVS。LVS是LinuxVirtualServer的简称,也就是Linux虚拟服务器,用现在的观......
  • 常见的LVS模式区别
    几种常见的LVS(LinuxVirtualServer)模式:NAT模式、IP地址转发(DirectRouting)模式和IP隧道(Tunneling)模式的区别:1.NAT模式特点:LVS作为前端代理,接收客户端的请求,并修改数据包的目标地址和端口,然后将请求转发给后端的真实服务器。后端服务器返回的响应经过LVS再修改为源地......