Keepalived 进阶秘籍:全方位配置优化
创作时间:
作者:
@小白创作中心
Keepalived 进阶秘籍:全方位配置优化
引用
CSDN
1.
https://m.blog.csdn.net/qq_40477248/article/details/144957698
Keepalived是一种用于实现服务器高可用性的软件,广泛应用于负载均衡和故障切换场景。本文将详细介绍Keepalived的高级配置优化,包括内核参数优化、资源限制优化以及Keepalived核心模块的配置说明。此外,还将对比Keepalived与Heartbeat、Corosync在集群管理方面的异同,帮助读者更好地理解这三种工具的特点和适用场景。
1. sysctl.conf参数优化
为了确保Keepalived服务器在生产环境中的稳定运行,需要对内核参数进行合理的优化。以下是一些关键参数的配置建议:
# /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参数优化
为了支持高并发连接,需要调整系统资源限制。以下是在/etc/security/limits.d/limits.conf
中的配置示例:
# 设置宿主机接受高并发连接数nproc
* soft nofile 65536
* hard nofile 65536
* soft nproc 163840
* hard nproc 163840
3. global_defs模块区域
global_defs
模块用于定义全局参数,主要包括:
notification_email
:故障发生时给谁发邮件通知。notification_email_from
:通知邮件从哪个地址发出。smtp_server
:通知邮件的smtp地址。smtp_connect_timeout
:连接smtp服务器的超时时间。router_id
:标志本节点的字符串,通常为ip地址,故障发生时邮件会通知到。
4. vrrp_script模块区域
vrrp_script
模块用于健康检查,当检查失败时会将vrrp_instance
的priority减少相应的值。实际生产中通常会配置如下:
vrrp_script chk_nginx {
script "/etc/keepalived/check_nginx.sh"
interval 2
weight 2
}
5. vrrp_instance VI_1实例定义配置模块区域
vrrp_instance
模块用于定义VRRP实例,以下是一个示例配置:
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1234
}
virtual_ipaddress {
192.168.1.100
}
track_script {
chk_nginx
}
}
6. virtual_server模块区域
virtual_server
模块用于定义虚拟服务器,以下是一个示例配置:
virtual_server 192.168.1.100 80 {
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
real_server 192.168.1.101 80 {
weight 1
SSL_GET {
url {
path /
digest 123456
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.1.102 80 {
weight 1
SSL_GET {
url {
path /
digest 123456
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
7. Keepalived与Heartbeat、Corosync比较
在选择集群组件时,Keepalived、Heartbeat和Corosync各有优劣:
特征 | Keepalived | Heartbeat | Corosync |
---|---|---|---|
通信协议 | 使用VRRP协议 | 使用心跳协议 | 使用心跳协议 |
应用场景 | 前端高可用 | 服务高可用 | 服务高可用 |
共享存储 | 不需要 | 需要 | 需要 |
节点数量 | 适合两节点 | 适合多节点 | 适合多节点 |
常见组合 | LVS+Keepalived、Nginx+Keepalived、HAproxy+Keepalived | Heartbeatv+Pacemaker+NFS | Corosync+Pacemaker+NFS |
部署复杂度 | 简单 | 复杂 | 类似Heartbeat |
性能 | 满足生产需求 | 需要共享存储 | 需要共享存储 |
应用场景 | 应用广泛 | 主要为后端服务提供高可用 | 类似Heartbeat |
在实际生产环境中,Keepalived因其部署简单、前端高可用使用多、不需要共享存储、性能完全满足生产需求等特点,成为更受欢迎的选择。
热门推荐
aespa成员宁艺卓:影响力与实力的完美结合
汉字可以用作编程代码吗?
《风云》系列三大方士,窥探天机神鬼莫测,起死回生难以揣度
渠道、内容、受众:传统广电媒体营销模式转型之路
肿瘤标志物升高就意味着得癌了吗?专家解读
"法院+村委会"巧解兄弟纠纷,情理法融合促家庭和谐
9月数据发布!这物价水平……
如何查看一本书有没有 PDF 版
二手房增值税怎么算
道家智慧“人生九不足”,读懂受益终生!
超全残疾评定标准,你想知道的都在这里!
“妈妈岗”铺就事业花路,潍坊托举女性力量
“一灯 二镜 三方向”已经过时了,最新变道口诀,保证安全变道
揭秘汽车盲区,轻松避开视线死角
胆红素正常值范围及临床意义
帕累托图制作详解:以永洪BI为例
别再把油鱼当鳕鱼!一文告诉你怎么辨别
单腿硬拉:一个高效的练臀动作,如何解锁动作,正确完成?
马拉松历史上最“凡尔赛”的世界纪录拥有者诞生!切普格蒂奇:我没有教练
女性白细胞偏高可能意味着什么?
一文详解:如何轻松去除茶垢
房贷选择:缩短年限与减少月供的优劣分析
阿富汗刑法中的以牙还牙及其法律实践
二氧化硅的广泛应用:从古代瓷器到现代光导纤维
什么是喷漆设备?喷漆设备有哪些类型?(喷漆设备的种类,你需要了解哪五种?)
揭秘美国住房之战,透视高通胀下的民生痛点!
济南眼科医院眼底检查(了解眼底检查的必要性和流程)
从武夷山前往重庆仙女山全程乘车指南:包括交通方式、路线规划及购票建议
流感康复后气阴两虚?试试经典名方“生脉散”
空气干燥老想挖鼻孔?注意:这个“小动作” 或增加患病风险