Keepalived 进阶秘籍:全方位配置优化

文章目录

  • 1.sysctl.conf参数优化
  • 2. limits参数优化
  • 3. global_defs模块区域
  • 4.vrrp_script模块区域
  • 5.vrrp_instance VI_1实例定义配置模块区域
  • 6. virtual_server模块区域
  • 7.Keepalived与Heartbeat、Corosync比较

前言:
作为一台Keepalived服务器,有必要对内核配置进行合理的参数优化,优化目的是在生产环境使用过程中,尽量避免应自身配置出现问题导致业务问题,降低用户体验,进而影响全局,给公司造成不必要的损失。

1.sysctl.conf参数优化

/etc/sysctl.conf
#timewait 的数量,默认是180000。
net.ipv4.tcp_max_tw_buckets = 6000#支持更大的TCP窗口,如果TCP窗口超过65535(64K)必须设置为1
net.ipv4.tcp_window_scaling = 1#允许系统打开的端口范围。
net.ipv4.ip_local_port_range = 1024 65000#启用timewait 快速回收。
net.ipv4.tcp_tw_recycle = 1#开启重用。允许将TIME-WAIT sockets 重新用于新的TCP 连接。
net.ipv4.tcp_tw_reuse = 1#开启SYN Cookies,当出现SYN 等待队列溢出时,启用cookies 来处理。
net.ipv4.tcp_syncookies = 1#函数的backlog 默认会给我们内核参数的net.core.somaxconn 限制到128,而,所以有必要调整这个值。
net.core.somaxconn = 32768#表示当每个网络接口 接受数据包的速率比内核处理这些包的速率快时,允许发送到队列的数据包的最大数目,一般默认值128。
net.core.netdev_max_backlog = 32768#记录的那些尚未收到客户端确认信息的连接请求的最大值。对于有128M 内存的系统而言,缺省值是1024,小内存的系统则是128。
net.ipv4.tcp_max_syn_backlog = 65535#系统中最多有多少个TCP 套接字不被关联到任何一个用户文件句柄上。如果超过这个数字,连接将即刻被复位并打印出警告信息。这个限制仅仅是为了防止简单的DoS 攻击,不能过分依靠它或者人为地减小这个值,更应该增加这个值(如果增加了内存之后)。
net.ipv4.tcp_max_orphans = 262144#时间戳可以避免序列号的卷绕。一个1Gbps 的链路肯定会遇到以前用过的序列号。时间戳能够让内核接受这种“异常”的数据包。这里需要将其关掉。
net.ipv4.tcp_timestamps = 0#为了打开对端的连接,内核需要发送一个SYN 并附带一个回应前面一个SYN 的ACK。也就是所谓三次握手中的第二次握手。这个设置决定了内核放弃连接之前发送SYN+ACK 包的数量。
net.ipv4.tcp_synack_retries = 1#在内核放弃建立连接之前发送SYN 包的数量。
net.ipv4.tcp_syn_retries = 1#如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2 状态的时间。对端可以出错并永远不关闭连接,甚至意外当机。缺省值是60 秒。2.2 内核的通常值是180 秒,3你可以按这个设置,但要记住的是,即使你的机器是一个轻载的WEB 服务器,也有因为大量的死套接字而内存溢出的风险,FIN- WAIT-2 的危险性比FIN-WAIT-1 要小,因为它最多只能吃掉1.5K 内存,但是它们的生存期长些。
net.ipv4.tcp_fin_timeout = 1#当keepalive 起用的时候,表示保活时间是 60 秒(默认2小时),也就60秒内如果没有任何连接相关的活动,则会启动保活机制。
net.ipv4.tcp_keepalive_time = 60表示检测 2 次无响应,认为对方是不可达的,从而中断本次的连接。
net.ipv4.tcp_keepalive_probes = 2表示每次检测间隔 2秒。
net.ipv4.tcp_keepalive_intvl = 2

2. limits参数优化

设置宿主机接受高并发连接数nproc/etc/security/limits.d/limits.conf
*       soft    nofile  65536
*       hard    nofile  65536
*       soft    nproc   163840
*       hard    nproc   163840Keepalived.conf 配置说明
以最新的Keepalived.2.2.7的官方配置文件为例,包括以下几个配置区域,分别:
global_defs 模块区域
vrrp_script  模块区域
vrrp_instance VI_1 模块区域
virtual_server      模块区域

3. global_defs模块区域

在这里插入图片描述
notification_email 故障发生时给谁发邮件通知。
notification_email_from 通知邮件从哪个地址发出。
smtp_server 通知邮件的smtp地址。
smtp_connect_timeout 连接smtp服务器的超时时间。
router_id 标志本节点的字符串,通常为ip地址,故障发生时邮件会通知到。

4.vrrp_script模块区域

用来做健康检查的,当检查失败时会将vrrp_instance的priority减少相应的值。
在这里插入图片描述
实际生产都作如下配置:
在这里插入图片描述

5.vrrp_instance VI_1实例定义配置模块区域

在这里插入图片描述
vrrp_instance VI_1
定义一个vrrp_install实例,名称为VI_1。

state MASTER
表示该实例的角色状态,有AMSTER和BACKUP主备状态。

virtual_router_id
虚拟路由标志。同组的virtual_router_id应该保持一致。它将决定多播的MAC地址。

Priority
设置本节点的优先级,优先级高的为master。

advert_int
MASTER与BACKUP同步检查的时间间隔。

authentication
权限认证配置,包括认证类型和认证密码。

virtual_ipaddress
配置虚拟ip,即为VIP。

6. virtual_server模块区域

在这里插入图片描述
virtual_server
定义一个虚拟服务器,这个ip是virtual_address中定义的其中一个。语法格式:ip+空格+服务端口。

delay_loop 6
健康检查时间间隔,单位:秒。

lb_algo rr
调度算法为轮询,不考虑机器性能,每台均衡调度。

lb_kind NAT
转发模式为NAT模式。

persistence_timeout 50
与客户端保持互话粘性。

protocol TCP
转发协议,分为TCP和UDP两种。

real_server
真实服务器IP和端口,可以定义多个。

weight 1
设置权重默认为1,0为失效。

SSL_GET
健康检测方式,可选有 SSL_GET、TCP_CHECK、HTTP_GET。

url
检查url,可以指定多个。

Path
检查的url路径。

digest
需要检查到的内容。检查后的摘要信息。

connect_timeout 3
服务连接超时时长,单位:秒。

retry 3
服务连接失败重试次数。

delay_before_retry 3
检测的时间间隔, 单位:秒。

7.Keepalived与Heartbeat、Corosync比较

Heartbeat、Corosync、Keepalived这三个集群组件我们到底选哪个好,可以作个对比。

项目KeepalivedHeartbeatCorosync
比较1、Keepalived使用的vrrp协议进行通信和选举方式
2、Keepalived中一般用于前端高可用
3、且不需要共享存储,
4、一般常用于两个节点的高可用。
5、常用的组合有LVS+Keepalived、Nginx+Keepalived、HAproxy+Keepalived
6、部署简单、前端高可用使用多,不需要共享存储,性能完全满足生产需求,实际生活环境多选择Keepalived
1、Heartbeat使用心跳进行通信和选举方式
2、Heartbeat一般用于服务的高可用
3、需要共享存储
4、一般用于多节点的高可用
5、常见的组合有Heartbeatv+Pacemaker+NFS
6、部署较为复杂,主要为后端服务提供高可用,需要共享存储,如mysql,应用场景不如Keepalived广泛
1、 Corosync使用心跳进行通信和选举方式
2、Corosync一般用于服务的高可用
3、需要共享存储
4、一般用于多节点的高可用
5、常见的组合有Corosync+Pacemaker+NFS
6、Corosync类同Hearbeat

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/503780.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

51单片机——中断(重点)

学习51单片机的重点及难点主要有中断、定时器、串口等内容,这部分内容一定要认真掌握,这部分没有学好就不能说学会了51单片机 1、中断系统 1.1 概念 中断是为使单片机具有对外部或内部随机发生的事件实时处理而设置的,中断功能的存在&#…

rabbitmq——岁月云实战笔记

1 rabbitmq设计 生产者并不是直接将消息投递到queue,而是发送给exchange,由exchange根据type的规则来选定投递的queue,这样消息设计在生产者和消费者就实现解耦。 rabbitmq会给没有type预定义一些exchage,而实际我们却应该使用自己定义的。 1.1 用户注册设计 用户在…

基于Python的投资组合收益率与波动率的数据分析

基于Python的投资组合收益率与波动率的数据分析 摘要:該文通过研究马科维茨的投资组合模型,并将投资组合模型应用到包含6只金融股票的金融行业基金中。首先通过开源的财经接口Tushare获取股票原始数据,接着利用数据分析的黄金组合库&#xf…

Linux部署web项目【保姆级别详解,Ubuntu,mysql8.0,tomcat9,jdk8 附有图文】

文章目录 部署项目一.安装jdk1.1 官网下载jdk81.2 上传到Linux1.3 解压1.4 配置环境变量1.5 查看是jdk是否安装成功 二.安装TomCat2.1 官网下载2.2 上传到Linux2.3 解压2.4配置2.5 启动Tomcat2.6 验证是否成功 三.安装mysql四.部署javaweb项目4.1 打包4.2 启动tomcat 部署项目 …

前端基础--网络

http1到http2有哪些新增和区别 HTTP/1.0版本主要增加了 1,增加了HEAD,POST等方法 2,增加了状态码 3,增加了请求头和响应头 4,引入content-type,传输不在仅限于文本 5,在请求中加入了HTTP版本号 HTTP…

Maven 详细配置:Maven 项目 POM 文件解读

Maven 是 Java 开发领域中广泛使用的项目管理和构建工具,通过其核心配置文件——POM(Project Object Model)文件,开发者能够定义项目的基本信息、依赖关系、插件配置以及构建生命周期等关键要素。POM 文件不仅是 Maven 项目的核心…

加速物联网HMI革命,基于TouchGFX的高效GUI显示方案

TouchGFX 是一款针对 STM32 微控制器优化的先进免费图形软件框架。 TouchGFX 利用 STM32 图形功能和架构,通过创建令人惊叹的类似智能手机的图形用户界面,加速了物联网 HMI 革命。 TouchGFX 框架包括 TouchGFX Designer (TouchGFXDesigner)(…

服务器漏洞修复解决方案

漏洞1、远程桌面授权服务启用检测【原理扫描】 Windows Remote Desktop Licensing Service is running: Get Server version: 0x60000604 1、解决方案:建议禁用相关服务避免目标被利用 方法一:使用服务管理器 打开“运行”对话框(WinR&am…

Centos源码安装MariaDB 基于GTID主从部署(一遍过)

MariaDB安装 安装依赖 yum install cmake ncurses ncurses-devel bison 下载源码 // 下载源码 wget https://downloads.mariadb.org/interstitial/mariadb-10.6.20/source/mariadb-10.6.20.tar.gz // 解压源码 tar xzvf mariadb-10.5.9.tar.gz 编译安装 cmake -DCMAKE_INSTA…

基于SpringBoot实现的保障性住房管理系统

🥂(❁◡❁)您的点赞👍➕评论📝➕收藏⭐是作者创作的最大动力🤞 💖📕🎉🔥 支持我:点赞👍收藏⭐️留言📝欢迎留言讨论 🔥🔥&…

Vue进阶(贰幺叁)node 版本切换

文章目录 一、前言1.1 什么是nvm? 二、查看已安装好的 node 版本三、下载 node 版本四、切换 node 版本五、查看在用 node 版本六、拓展阅读 一、前言 项目开发阶段,会涉及多node版本切换应用场景,可应用nvm实现node版本切换。 1.1 什么是nvm? nvm是…

Java-数据结构-链表-高频面试题(1)

在上一篇文章中,我们学习了链表中的"单向链表",但学可不代表就是学会了,能够运用链表的地方比比皆是,解题方法也是层出不穷,今天就让我们巩固一下"单向链表"的知识吧~ 第一题:相交链表…

低空管控技术-无人机云监视技术详解!

一、无人机监听技术的原理 无人机监听技术主要依赖于射频(RF)探测、光学和红外传感器等技术手段。这些技术通过被动监听和监测无人机与飞行员(或控制器)之间的通信链路传输,以确定无人机的位置,甚至在某些…

STM32-WWDG/IWDG看门狗

WWDG/IWDG一旦开启不能关闭,可通过选项字节在上电时启动硬件看门狗,看门狗计数只能写入不能读取。看门狗启用时,T6bit必须置1,防止立即重置。 一、原理 独立看门狗-超时复位 窗口看门狗-喂狗(重置计数器,…

【形式篇】年终总结怎么写:PPT如何将内容更好地表现出来

——细节满满,看完立马写出一篇合格的PPT 总述 形式服务于内容,同时合理的形式可以更好地表达和彰显内容 年终总结作为汇报型PPT,内容一定是第一位的,在内容篇(可点击查看)已经很详细地给出了提纲思路,那如何落实到…

分享3个国内使用正版GPT的网站【亲测有效!2025最新】

1. molica 传送入口:https://ai-to.cn/url/?umolica 2. 多帮AI 传送入口:https://aigc.openaicloud.cn?inVitecodeMYAAGGKXVK 3. 厉害猫 传送入口:https://ai-to.cn/url/?ulihaimao

使用免费内网穿透(p2p)网络环境搭建小型文件管理服务器(简单操作)

目录 前言 “节点小宝” 使用环境: 应用场景: 准备工作 安装 …

在macOS上安装MySQL

macOS的MySQL有多种不同的形式: 1、本机包安装程序,它使用本机macOS安装程序(DMG)引导您完成MySQL的安装。有关详细信息,请参阅第2.4.2节,“使用本机包在macOS上安装MySQL”。您可以将包安装程序与macOS一…

汽车信息安全 -- S32K1如何更新BOOT_MAC

目录 1.安全启动模式回顾 2.为什么要讨论BOOT_MAC 3.S32K1如何更新? 1.安全启动模式回顾 之前提到过,S32K1系列提供了Crypto Service Engine硬件加密模块(简称CSEc),大家可以通过该芯片系统寄存器SDID.FEATURES(System Device Identification Register)来判断自己的片子…

STM32-笔记35-DMA(直接存储器访问)

一、什么叫DMA? DMA(Direct Memory Access,直接存储器访问)提供在外设与内存、存储器和存储器之间的高速数据传输使用。它允许不同速度的硬件装置来沟通,而不需要依赖于CPU,在这个时间中,CPU对于…