-
Keepalive 的定义:
- Keepalive 是一种网络功能,旨在允许在TCP连接中保持持久的连接状态,从而允许客户端和服务器在单个连接上进行多次请求和响应,而不是每次请求都建立新的连接。
-
Nginx 中的 Keepalive:
- Nginx 支持 HTTP 层的 keep-alive(通过
Connection: keep-alive头部),这允许客户端和 Nginx 服务器之间的连接在多个请求之间保持打开状态。 - Nginx 还支持 TCP 层的 keepalive(不同于 HTTP keep-alive),它允许在 TCP 连接空闲时发送和接收保活包(probe packets)来检查连接是否仍然活动,防止连接因空闲而意外关闭。
- Nginx 支持 HTTP 层的 keep-alive(通过
-
Nginx 中 Keepalive 的配置:
-
对于 HTTP keep-alive,Nginx 提供了以下相关指令:
keepalive_timeout:设置非活动连接的超时时间,超过这个时间连接将被关闭。默认值通常为 75 秒。keepalive_requests:设置一个连接上允许的最大请求数。默认值为 100。keepalive_disable:可以选择性地禁用对某些客户端或请求类型的 keep-alive。
-
对于 TCP keepalive,Nginx 提供了
so_keepalive指令,但这通常用于操作系统级别的 TCP 配置,而不是直接在 Nginx 配置文件中设置。
-
-
Keepalive 并不能直接控制 Nginx:
- 虽然 keepalive 机制对 Nginx 的性能和效率有很大影响,但它并不能直接控制 Nginx 的整体操作。Nginx 的操作、功能和配置主要由其配置文件和其他模块来控制。
- Keepalive 只是影响连接管理的一种方式,通过减少建立和关闭连接的开销来提高性能。
-
总结:
- Keepalive 是一种网络通信机制,用于优化连接管理和提高性能。
- 在 Nginx 中,可以通过配置 HTTP keep-alive 和 TCP keepalive 来调整连接的行为。
- 然而,keepalive 并不能直接控制 Nginx 的整体操作,它只是 Nginx 配置和性能优化中的一个方面。
实验
- 方案规划
- nginx负载均衡服务器主 192.168.10.1
- nginx负载均衡服务器从 192.168.10.10
- 真实服务器1 192.168.10.20
- 真实服务器2 192.168.10.30
- VIP 192.168.19.188
安装软件
**rs1 rs2 **
systemctl stop firewalld
setenforce 0
yum install httpd -y
echo 7-3 > /var/www/html/index.html
systemctl start httpd
systemctl stop firewalld
setenforce 0
yum install httpd -y
echo 7-4 > /var/www/html/index.html
systemctl start httpd
#curl 验证服务有没有起
代理服务器
systemctl stop firewalld
setenforce 0
yum install epel-release.noarch -y
yum install -y nginx
systemctl start nginx
yum install keepalived -y
配置 nginx反向代理负载均衡
vim /etc/nginx/nginx.conf
两台一样的配置 ,分别验证nginx负载均衡
配置 keepalived
脚本模块
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_01
vrrp_skip_check_adv_addr
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_script check_down {
script "/etc/keepaliver/ng.sh"
interval 1
weight -30
fall 3
rise 2
timeout 2
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.10.188
}
track_script {
check_down
}
}
建脚本
vim /etc/keepalive/ng.sh
从服务器的配置
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_02 #改名字
vrrp_skip_check_adv_addr
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_script check_down {
script "/etc/keepaliver/ng.sh"
interval 1
weight -30
fall 3
rise 2
timeout 2
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51
priority 80 #权重要设置80
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.10.188
}
track_script {
check_down
}
}
从上也加上脚本
加上执行权限
chmod +x /etc/keepalived/ng.sh
验证
关掉主的nginx服务 先ip a看VIP网卡会不会跳到从上
systemctl stop nginx
再用客户机访问 看能否正常访问到页面
tcpdump -i ens33 -nn host 224.0.0.18 在客户端抓包