Nginx快速入门(安装 负载均衡 动静分离 主备 原理)(下)

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
云防火墙,500元 1000GB
简介: Nginx快速入门(安装 负载均衡 动静分离 主备 原理)

启动成功访问 服务器ip:80

1673268024991.jpg

注意:如何连接不上,检查安全组是否开放端口,或者服务器防火墙是否开放端口!

相关命令:

# 开启
service firewalld start
# 重启
service firewalld restart
# 关闭
service firewalld stop
# 查看防火墙规则
firewall-cmd --list-all
# 查询端口是否开放
firewall-cmd --query-port=8080/tcp
# 开放80端口
firewall-cmd --permanent --add-port=80/tcp
# 移除端口
firewall-cmd --permanent --remove-port=8080/tcp
#重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload
# 参数解释
1、firwall-cmd:是Linux提供的操作firewall的一个工具;
2、--permanent:表示设置为持久;
3、--add-port:标识添加的端口;


Nginx配置之worker_processes


一般来说,worker_processes默认为1,官方说1一般情况足够了,也可以设置为cpu核心数,2或者4或者8再高没大意义,另外不要忘了设置worker_cpu_affinity,这个配置用于将worker process与指定cpu核绑定,降低由于多CPU核切换造成的寄存器等现场重建带来的性能损耗。


或者省事些,直接设置为auto,根据需求自动调整


1.9.10版本后可以配置

worker_processes auto;
worker_cpu_affinity auto;


解释:0001表示启用第一个CPU内核,0010表示启用第二个CPU内核,依此类推


配置参考

worker_processes     4;
worker_cpu_affinity 0001 0010 0100 1000;


反向代理

server {
        listen       80;
        server_name  localhost;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location / {
            root   html;
            proxy_pass  http://127.0.0.1:8080;
            index  index.html index.htm;
        }


使用 nginx 反向代理,根据访问的路径跳转到不同端口的服务中

server {
         listen    9001;
         server_name  192.168.12.128;
         location ~ /edu/ {
            proxy_pass  http://127.0.0.1:8080;
           }
         location ~ /vod/ {
            proxy_pass http://127.0.0.1:8081;
          }
       }


location 指令说明:


该指令用于匹配 URL。

1673268104544.jpg

1、= :用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配

成功,就停止继续向下搜索并立即处理该请求。

2、~:用于表示 uri 包含正则表达式,并且区分大小写。

3、~:用于表示 uri 包含正则表达式,并且不区分大小写。

4、^~:用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求字

符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再使用 location

块中的正则 uri 和请求字符串做匹配。

注意:如果 uri 包含正则表达式,则必须要有 ~ 或者 ~ 标识。


负载均衡


 

upstream myserver {
       server 192.168.12.128:8080;
       server 192.168.12.128:8081;
    }
    server {
        listen       80;
        server_name  localhost;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location / {
            root   html;
            proxy_pass  http://myserver;
            index  index.html index.htm;
        }


nginx 分配服务器策略


第一种 轮询(默认)

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。


第二种 weight

weight 代表权重默认为 1,权重越高被分配的客户端越多


第三种 ip_hash

每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器


第四种 fair(第三方)

按后端服务器的响应时间来分配请求,响应时间短的优先分


动静分离


假设某些文件需要经常变更,可以通过设置 expires 起到控制页面缓存的作用,合理的配置缓存和压缩可以减少很多服务器的请求压力。

1673268174198.jpg

location /www/ {
            root   /data/;
            index  index.html index.htm;
            autoindex on;
        }
        location /image/ {
           root   /data/;
           autoindex   on;
           autoindex_exact_size off;
           autoindex_localtime on;
        }


Nginx默认是不允许列出整个目录的。如需此功能,打开nginx.conf文件,在location server 或 http段中加入

autoindex on;

另外两个参数最好也加上去:


autoindex_exact_size off;

默认为on,显示出文件的确切大小,单位是bytes。

改为off后,显示出文件的大概大小,单位是kB或者MB或者GB

autoindex_localtime on;

默认为off,显示的文件时间为GMT时间。

改为on后,显示的文件时间为文件的服务器时间

1673268220965.jpg

1673268232749.jpg


高可用主备模式

1673268244796.jpg

(1)需要两台 nginx 服务器,在两台服务器安装 nginx

(2)需要 keepalived,在两台服务器安装 keepalived

(3)需要虚拟 ip


使用 yum 命令进行安装

yum install keepalived –y

安装之后, 有/etc/keepalived/keepalived.conf文件


修改/etc/keepalived/keepalivec.conf 配置文件,备份服务器注释带 * 号的地方注意更改。

global_defs {
 notification_email {
 acassen@firewall.loc
 failover@firewall.loc
 sysadmin@firewall.loc
 }
 notification_email_from Alexandre.Cassen@firewall.loc
 smtp_server 192.168.17.129
 smtp_connect_timeout 30
 router_id LVS_DEVEL   # 访问到主机,也可以写ip,也可以修改/etc/hosts文件添加映射********
}
vrrp_script chk_http_port {
 script "/usr/local/src/nginx_check.sh"
 interval 2 #(检测脚本执行的间隔)
 weight 2
}
vrrp_instance VI_1 {
 state MASTER # 备份服务器上将 MASTER 改为 BACKUP *******
 interface ens33 //网卡,通过 ifconfig 查看网卡名 *******
 virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同
 priority 100 # 主、备机取不同的优先级,主机值较大,备份机值(90)较小 ****
 advert_int 1
 authentication {
 auth_type PASS
 auth_pass 1111
 }
 virtual_ipaddress {
 192.168.17.50 // VRRP H 虚拟地址
 } }


在/usr/local/src 添加检测脚本,nginx_check.sh

#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then
 /usr/local/nginx/sbin/nginx
 sleep 2
 if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
 killall keepalived
 fi
fi


把两台服务器上 nginx 和 keepalived 启动

启动 nginx:./nginx

启动 keepalived:systemctl start keepalived.service


最终测试

(1)在浏览器地址栏输入 虚拟 ip 地址 192.168.17.50

(2)把主服务器(192.168.17.129)nginx 和 keepalived 停止,再输入 192.168.17.50


测试可以发现我们访问 keepalived 中配置的两个 VIP 都可以正常调度等,当我们停止任意一台 keepalived节点,同样还是正常访问;到此,keepalived+nginx 高可用集群(双主模式)就搭建完成了。


原理


mater 和 worker

1673268315593.jpg

1673268322542.jpg


worker是如何工作的?

1673268331384.jpg


一个 master 和多个 woker 有好处

(1)可以使用 nginx –s reload 热部署,利用 nginx 进行热部署操作

(2)每个 woker 是独立的进程,如果有其中的一个 woker 出现问题,其他 woker 独立的,继续进行争抢,实现请求过程,不会造成服务中断


设置多少个 woker 合适


worker 数和服务器的 cpu 数相等是最为适宜的


查看CPU个数:cat /proc/cpuinfo |grep “cores”|uniq

或者:top命令后 按1


连接数 worker_connection


第一个:发送请求,占用了 woker 的几个连接数?

答案:2 或者 4 个,如果是静态资源 则一个请求 一个响应 连接数2

如果是动态资源 则客户端与nginx的请求响应(2) + nginx和tomcat的连接(2) = 4


第二个:nginx 有一个 master,有四个 woker,每个 woker 支持最大的连接数 1024,支持的

最大并发数是多少?

普通的静态访问最大并发数是: worker_connections * worker_processes /2, 而如果是 HTTP 作 为反向代理来说,最大并发数量应该是 worker_connections * worker_processes/4。

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
25天前
|
负载均衡 算法 搜索推荐
Nginx 常用的负载均衡算法
【10月更文挑战第17天】在实际应用中,我们需要根据具体的情况来选择合适的负载均衡算法。同时,还可以结合其他的优化措施,如服务器健康检查、动态调整权重等,来进一步提高负载均衡的效果和系统的稳定性。
112 59
|
21天前
|
负载均衡 算法 应用服务中间件
Nginx 常用的负载均衡算法
【10月更文挑战第22天】不同的负载均衡算法各有特点和适用场景。在实际应用中,需要根据具体的业务需求、服务器性能和网络环境等因素来选择合适的算法。
23 3
|
25天前
|
负载均衡 监控 应用服务中间件
除了 Nginx,还有以下一些常见的负载均衡工具
【10月更文挑战第17天】这些负载均衡工具各有特点和优势,在不同的应用场景中发挥着重要作用。选择合适的负载均衡工具需要综合考虑性能、功能、稳定性、成本等因素。
|
1月前
|
负载均衡 应用服务中间件 nginx
Nginx的6大负载均衡策略及权重轮询手写配置
【10月更文挑战第9天】 Nginx是一款高性能的HTTP服务器和反向代理服务器,它在处理大量并发请求时表现出色。Nginx的负载均衡功能可以将请求分发到多个服务器,提高网站的吞吐量和可靠性。以下是Nginx支持的6大负载均衡策略:
144 7
|
1月前
|
负载均衡 算法 Java
腾讯面试:说说6大Nginx负载均衡?手写一下权重轮询策略?
尼恩,一位资深架构师,分享了关于负载均衡及其策略的深入解析,特别是基于权重的负载均衡策略。文章不仅介绍了Nginx的五大负载均衡策略,如轮询、加权轮询、IP哈希、最少连接数等,还提供了手写加权轮询算法的Java实现示例。通过这些内容,尼恩帮助读者系统化理解负载均衡技术,提升面试竞争力,实现技术上的“肌肉展示”。此外,他还提供了丰富的技术资料和面试指导,助力求职者在大厂面试中脱颖而出。
腾讯面试:说说6大Nginx负载均衡?手写一下权重轮询策略?
|
Web App开发 测试技术 应用服务中间件
nginx 原理&知识
2015年6月4日 17:04:20 星期四 发现两个关于nginx原理的系列文章, 非常好 http://blog.sina.com.cn/s/blog_6d579ff40100wi7p.html (Nginx 变量漫谈) http://blog.
730 0
|
24天前
|
应用服务中间件 BI nginx
Nginx的location配置详解
【10月更文挑战第16天】Nginx的location配置详解
|
1月前
|
缓存 负载均衡 安全
Nginx常用基本配置总结:从入门到实战的全方位指南
Nginx常用基本配置总结:从入门到实战的全方位指南
253 0
|
1月前
|
应用服务中间件 Linux nginx
Jetson 环境安装(四):jetson nano配置ffmpeg和nginx(亲测)之编译错误汇总
这篇文章是关于在Jetson Nano上配置FFmpeg和Nginx时遇到的编译错误及其解决方案的汇总。
87 4
|
4天前
|
存储 负载均衡 中间件
Nginx反向代理配置详解,图文全面总结,建议收藏
Nginx 是大型架构必备中间件,也是大厂喜欢考察的内容,必知必会。本篇全面详解 Nginx 反向代理及配置,建议收藏。
Nginx反向代理配置详解,图文全面总结,建议收藏