LVS+Keepalived群集

2023-09-19 08:41:58

1、keepalived概述及其功能
· 故障自动切换failover

· 实现lvs群集中节点健康检查

· 节点服务器的高可用性

keepalived软件就是通过vrrp协议来实现高可用功能

Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题。

在一个LVS服务集群中通常有主服务器(MASTER)和备份服务器(BACKUP)两种角色的服务器,但是对外表现为一个虚拟IP,主服务器会发送VRRP通告信息给备份服务器,当备份服务器收不到VRRP消息的时候,即主服务器异常的时候,备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。

2、keepalived体系主要模块及其作用
keepalived体系架构中主要有三个模块,分别是core、check和vrrp。
●core模块:为keepalived的核心,负责主进程的启动、维护及全局配置文件的加载和解析。
●vrrp模块:是来实现VRRP协议的。
●check模块:负责健康检查,常见的方式有端口检查及URL检查。

3、VRRP通信原理和keepalived工作原理
VRRP就是虚拟路由冗余协议,它的出现就是为了解决静态路由的单点故障

VRRP是通过一种竞选协议机制,来将路由交给某台VRRP路由器

VRRP用多播的方式(多播地址:224.0.0.18)实现高可用之间的通信,工作时主节点发包,当备节点接受不到主节点发的数据包的时候,就主动接管主节点的资源,备节点可以有多个,通过优先级来进行竞选,但一般keepalived系统运维工作是一对的,所以vrrp就是使用加密协议加密数据,但keepalived官方目前还是推荐用明文的方式认证类型和密码

keepalived工作原理:keepalived高可用之间是通过vrrp进行通信的,vrrp是通过竞选的来确定主备,主的优先级高于备,因此工作时主优先获得所有资源,备的节点处于等待状态,当主挂了的时候,备节点就会接管主节点的资源,就顶替主的节点资源对外提供服务

在keepalived服务之间,只用作为主的服务器会一直发送vrrp广播包,告诉备我还活着,此时备不会去抢占主,当主不可用的时候,即备要监听不到主发送的广播包时,他就会启动相关服务,来取接管资源保证业务的连续性,接管速度是最快大概小于一秒钟。

4、LVS+Keepalived 高可用群集实验部署
主DR 服务器:ens33(192.168.10.14) ipvsadm 、keepalived(热备) 虚拟IP:192.168.10.188  网卡 ens33:0
备DR 服务器:ens33(192.168.10.15) ipvsadm 、keepalived
虚拟IP:192.168.10.188  网卡 ens33:0
Web 服务器1:ens33 192.168.10.16
lo:0(VIP)192.168.10.188
Web 服务器2:ens33 192.168.10.17
lo:0(VIP)192.168.10.188
vip:192.168.10.188         
客户端:192.168.10.100

---------------------LVS 部署-------------------------
1.配置负载调度器(主、备相同)  (192.168.10.14、192.168.10.15)
systemctl stop firewalld.service
setenforce 0

yum -y install ipvsadm keepalived
modprobe ip_vs
cat /proc/net/ip_vs

(1)配置keeplived(主、备DR 服务器上都要设置)
cd /etc/keepalived/
cp keepalived.conf keepalived.conf.bak
vim keepalived.conf
......
global_defs {                        #定义全局参数
--10行--修改,邮件服务指向本地
    smtp_server 127.0.0.1
--12行--修改,指定服务器(路由器)的名称,主备服务器名称须不同,主为LVS_01,备为LVS_02
    router_id LVS_01
--14行--注释掉,取消严格遵守VRRP协议功能,否则VIP无法被连接
    #vrrp_strict
}

vrrp_instance VI_1 {                #定义VRRP热备实例参数
--20行--修改,指定热备状态,主为MASTER,备为BACKUP
    state MASTER
--21行--修改,指定承载vip地址的物理接口
    interface ens33
--22行--修改,指定虚拟路由器的ID号,每个热备组保持一致    
    virtual_router_id 10
    #nopreempt        #如果设置非抢占模式,两个节点state必须为bakcup,并加上配置 nopreempt
--23行--修改,指定优先级,数值越大优先级越高,这里设置主为100,备为90
    priority 100
    advert_int 1                    #通告间隔秒数(心跳频率)
    authentication {                #定义认证信息,每个热备组保持一致
        auth_type PASS                #认证类型
--27行--修改,指定验证密码,主备服务器保持一致
        auth_pass abc123
    }
    virtual_ipaddress {                #指定群集vip地址
        192.168.10.188
    }
}
--36行--修改,指定虚拟服务器地址(VIP)、端口,定义虚拟服务器和Web服务器池参数
virtual_server 192.168.10.188 80 {
    delay_loop 6                    #健康检查的间隔时间(秒)
    lb_algo rr                        #指定调度算法,轮询(rr)
--39行--修改,指定群集工作模式,直接路由(DR)
    lb_kind DR
    persistence_timeout 50            #连接保持时间(秒)
    protocol TCP                    #应用服务采用的是 TCP协议
--43行--修改,指定第一个Web节点的地址、端口
    real_server 192.168.10.16 80 {
        weight 1                    #节点的权重
--45行--删除,添加以下健康检查方式        
        TCP_CHECK {
            connect_port 80            #添加检查的目标端口
            connect_timeout 3        #添加连接超时(秒)
            nb_get_retry 3            #添加重试次数
            delay_before_retry 3    #添加重试间隔
        }
    }

    real_server 192.168.10.17 80 {        #添加第二个 Web节点的地址、端口
        weight 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
##删除后面多余的配置##
}


192.168.10.14和15都需要配置vip(虚拟IP)
vim /etc/sysconfig/network-scripts/ifcfg-ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.10.188
NETMASK=255.255.255.255

重启网卡 systemctl restart network
ifup  ens33:0 


systemctl start keepalived
ip addr                        #查看虚拟网卡vip


(2)启动 ipvsadm 服务
--192.168.10.14---

ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm

ipvsadm -C   ##清空规则
ipvsadm -A -t 192.168.10.188:80 -s rr
ipvsadm -a -t 192.168.10.188:80 -r 192.168.10.16:80 -g
ipvsadm -a -t 192.168.10.188:80 -r 192.168.10.17:80 -g


ipvsadm -ln
#如没有VIP 的分发策略,则重启 keepalived 服务,systemctl restart keepalived

--192.168.10.15---
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm

ipvsadm -ln

(3)调整 proc 响应参数,关闭Linux 内核的重定向参数响应
vim /etc/sysctl.conf
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

sysctl -p


2.配置节点服务器
systemctl stop firewalld
setenforce 0

yum -y install httpd
systemctl start httpd

--192.168.10.16---
echo 'this is kgc web!' > /var/www/html/index.html

--192.168.10.17---
echo 'this is benet web!' > /var/www/html/index.html

vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.10.188
NETMASK=255.255.255.255

service network restart 或 systemctl restart network
ifup lo:0
ifconfig lo:0
route add -host 192.168.10.188 dev lo:0

vim /etc/sysctl.conf

net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

sysctl -p


3.测试验证
在客户端访问 http://192.168.10.188/ 
再在主服务器关闭 keepalived 服务后再测试, systemctl stop keepalived
 

更多推荐

Vue|项目结构与执行过程介绍

一、项目文件1.1目录结构1.2结构介绍二、执行过程2.1main.js2.2App.vue2.3index.html三、生命周期3.1周期阶段3.2Vue实例的产生过程3.3钩子函数用途一、项目文件1.1目录结构1.2结构介绍文件结构文件介绍node_modules第三方包文件夹public放html文件的地方fav

微信小程序商城怎么弄

微信小程序商城怎么弄?这是一个常见的问题,对于那些想要在微信上创建一个自己的商城的人来说。下面为您介绍一些基本的步骤和注意事项,帮助您轻松地创建一个微信小程序商城。首先,要创建一个微信小程序商城,您需要注册一个微信小程序账号并开通商户号。具体步骤如下:打开微信公众平台,点击右上角的“立即注册”,选择小程序账号,并按照提

【lesson8】gdb的介绍及使用

文章目录gdb的介绍什么是gdb?背景认识gdb的使用gcc/g++程序文件名-o将来生成的可执行程序名-ggdb调试命令gdb可执行程序名quitlistl0Enterr(run)b(breakpoint)+n(行号)infobd(delete)+断点编号n(next)p(printf)+变量名s(step)btfi

Python中的文件I/O操作:常见问题与解决方案

目录常见问题代码示例文件路径问题:文件权限问题:文件编码问题:文件读写模式问题:文件未关闭问题:大文件处理问题:文件读写过程中的异常处理问题:文件内容格式问题:跨平台换行符问题:二进制文件处理问题:总结在Python编程中,文件I/O操作是常见的任务之一。无论是读取文件内容、写入新数据还是追加信息,文件I/O操作都是不

客观题:Android基础【基础题】

一.单选题(共6题,60分)1.(单选题,10分)Android四层架构中,应用框架层使用的是什么语法?A.JavaB.AndroidC.CD.C++正确答案:AAndroid四层架构通常指的是Android应用的四个关键组件,包括:应用层(ApplicationLayer):这是最顶层的层次,包括用户界面(UI)和应

GaussDB技术解读系列:数据库迁移创新实践

近日,以“数智赋能共筑未来”为主题的第14届中国数据库技术大会(DTCC2023)在北京举行,在GaussDB“五高两易”核心技术,给世界一个更优选择的专场,华为云数据库生态工具研发总监窦德明分享了GaussDB数据库的迁移创新实践。本篇将分享GaussDB数据库迁移的创新实践。易迁移能力是企业数据库替换选型的关键考量

华硕电脑怎么录屏?分享实用录制经验!

“华硕电脑怎么录屏呀,刚买的笔记本电脑,是华硕的,自我感觉挺好用的,但是不知道怎么录屏,最近刚好要录一个教程,怎么都找不到在哪里录制,有人能教教我吗?”随着电脑技术的不断发展,人们越来越依赖电脑进行工作和娱乐。录屏功能作为电脑的一项重要功能,已经逐渐成为人们日常生活中的必备工具。华硕作为知名的电脑品牌,为用户提供了便捷

C语言——自定义类型结构体_学习笔记

结构体的基本概念结构体是一种用户自定义的数据类型,可以包含多个不同类型的变量。通过使用结构体,我们可以将相关联的数据组织在一起,便于管理和使用。结构体的声明正常的结构体声明在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型的一类。结构体可以包含多个不同类型的数据成员,例如:int、float、

linux的应用线程同步与驱动同步机制

同步机制在Linux应用程序和内核中的驱动程序中,有一些常见的同步机制用于实现线程或进程之间的同步和数据访问保护。下面是它们的一些主要机制:Linux应用程序中的同步机制:互斥锁(Mutex):用于保护共享资源,确保只有一个线程可以访问该资源。应用程序可以使用pthread_mutex_t类型的互斥锁,使用pthrea

爬虫入门基础:深入解析HTTP协议的工作过程

目录一、HTTP协议简介二、HTTP协议的工作过程三、请求方法与常见用途四、请求头与常见字段五、状态码与常见含义六、进阶话题和注意事项总结在如今这个数字化时代,互联网已经成为我们获取信息、交流和娱乐的主要渠道。而在互联网中,HTTP协议则扮演着至关重要的角色。HTTP,全称HypertextTransferProtoc

SpringMVC之JSR303和拦截器

目录一.JSR303二.JSR常用的注解三.JSR快速入门四.拦截器⭐⭐⭐拦截器和过滤器有什么不一样,或者它们的区别是什么??五.拦截器快速入门--登录的案例一.JSR303JSR303是Java规范的一部分,全称为BeanValidation框架。它定义了一组基于标注的验证注解,用于验证Java对象的属性值的合法性。

热文推荐