Linux——nginx 负载均衡

常规的web服务器一般提供对于静态资源的访问,比如说:图片、web样式

网站提供的大部分交互功能都需要web编程语言的支持,而web服务对于程序的调用,不管编译型语言还是解释型语言,web服务同将对于应用程序的调用递交给通用网关接口(CGI)。CGI 服务完成对于程序的调用和运行,并将运行结构通过CGI接口返回给web服务,由web服务生成响应报文。

此时在web服务的领域内,引入了LAMP等较为知名的web架构,使web页面提供应用服务成为一种可能,

随着web网站的发展,基本的web服务器容易出现性能瓶颈、响应缓慢等问题,为了解决这些问题,人们尝试通过一些技术手段解决这个问题,这一类技术都属于负载均衡技术,常用于进行负载均衡的服务有:HAProxy、Nginx、lvs等。除此之外,还可以结合dns负载均衡等技术,即一个域名映射多个IP地址等方式。

一、nginx 负载均衡实验

nginx 负载均衡实验过程整理如下:

[root@bogon ~]# systemctl disable --now httpd			// 确保80端口未被httpd 占用
[root@bogon ~]# systemctl start nginx.service 			// 启动nginx 服务
[root@bogon ~]# ps -elf | grep nginx 	
1 S root        5825       1  0  80   0 -  2875 sigsus 14:47 ?        00:00:00 nginx: master process /usr/sbin/nginx
5 S nginx       5826    5825  0  80   0 -  3964 ep_pol 14:47 ?        00:00:00 nginx: worker process
5 S nginx       5827    5825  0  80   0 -  3964 ep_pol 14:47 ?        00:00:00 nginx: worker process
0 S root        5833    2362  0  80   0 - 55417 pipe_r 14:47 pts/0    00:00:00 grep --color=auto nginx
// 恢复成默认的主配置文件,如果之前没有备份,可以使用在/etc/nginx/nginx.default 来恢复,略有不同,影响不大
[root@bogon ~]# cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf_$(date +%s)		//备份当前配置文件
[root@bogon ~]# cp /etc/nginx/nginx.conf_1724661958 /etc/nginx/nginx.conf  // 恢复默认配置0
cp: overwrite '/etc/nginx/nginx.conf'? y
[root@bogon ~]# vim /etc/nginx/nginx.conf			// 暂时无需修改,额外的配置放在conf.d 目录下
[root@bogon ~]# ls /etc/nginx/conf.d/
[root@bogon ~]# vim /etc/nginx/conf.d/real_web.conf   // 这是一个新文件,全部内容如下:
server {
        listen  81;
        server_name     web1;
        root    /usr/share/nginx/real1;
        index index
### Linux 环境下负载均衡的健康检查模块 #### Nginx 的 HTTP 和 Stream 模块下的健康检查配置 对于基于 Nginx 构建的负载均衡方案,在Linux环境下可以利用Nginx Plus 或开源社区版本中的第三方模块来实现HTTP和Stream层面上的服务健康状态监测。 #### HTTP 上游服务器健康检查 为了确保上游服务器处于良好工作状态,可以在 `http` 块内定义 `upstream` 并启用主动健康检查功能。下面是一个典型的配置实例: ```nginx http { upstream backend { server 192.168.0.1; server 192.168.0.2; health_check; # 启动默认健康检查机制 } server { listen 80; location / { proxy_pass http://backend; } } } ``` 此段代码展示了如何简单地开启针对一组后端节点的基础健康状况评估过程[^2]。 #### 更高级别的自定义化健康检查 如果需要更复杂的逻辑判断,则可以通过指定额外参数来自定义健康探测行为,比如调整间隔时间、失败阈值等选项,并且能够设定特定路径作为探针访问的目标地址来进行更加精准的状态验证。 ```nginx health_check uri=/status match=status_code_2xx interval=5s falls=3 rises=2 timeout=1s; match status_code_2xx { status 2xx; } ``` 上述片段说明了怎样创建一个匹配规则用于识别返回码属于2XX范围内的响应视为正常情况;同时设置了每隔五秒执行一次检测操作,连续三次未达标即标记为不健康,而两次成功回复则恢复其在线标志。 #### TCP/UDP 层面的流模式健康检查 除了传统的七层协议外,对于四层网络传输(如数据库连接池),同样有必要实施相应的存活检验措施。借助于Nginx内置的支持TCP/UDP转发能力——Stream模块,也能轻松达成这一目标。 ```nginx stream { upstream db_servers { zone tcp_servers 64k; hash $remote_addr consistent; server 192.168.0.1:3306 max_fails=3 fail_timeout=30s; server 192.168.0.2:3306 max_fails=3 fail_timeout=30s; check interval=3000 rise=2 fall=5 timeout=1000 type=tcp; } server { listen 3306; proxy_pass db_servers; } } ``` 这里展示了一个适用于MySQL集群场景的例子,其中不仅包含了基本的心跳包发送频率(`interval`)、确认次数(`rise`)以及降级标准(`fall`),还特别指定了采用TCP握手方式进行连通性测试的方式[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值