课程名称:Java架构师-技术专家
课程章节: 第6周 集群架构:LVS+Nginx高可用集群
主讲老师:慕课讲师团:Geely、风间影月、阿神……
课程内容:
今天的学习内容包括:
1. 什么是Nginx
- Nginx(engine x)是一个高性能的HTTP和反向代理web服务器,同时也提供 IMAP/POP3/SMTP服务。
- 主要的功能是反向代理,通过反向代理可以实现集群和负载均衡以及URL的路由(通过配置文件实现)。
- 静态资源虚拟化,可以将本地的静态文件虚拟化成一个服务。
2、什么是反向代理
2.1、什么是正向代理
- 客户端请求目标服务器之间的一个代理服务器
- 请求会先经过代理服务器,然后再转发请求到目标服务器,获得内容后最后响应给客户端。电信、移动运营商、VPN就是正向代理服务器。
2.2、什么是反向代理
- 用户请求目标服务器,由代理服务器决定访问那个ip,代理服务器屏蔽了目标服务器。
- 通过反向代理可以实现路由,通过url转发到不同的服务器
3、Nginx解析过程
nginx通过配置监听端口,映射路由到指定服务。
server {
listen 80; # 监听的端口号
server_name localhost; # 服务名
localtion / { # 映射
root html;
index index.html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
4、Nginx常用命令
由于Nginx安装我已经很娴熟,所以不在此赘述,在此记录一下Nginx常用命令。这些命令由 master 进程接受。
# 切换到nginx安装目录
# 启动 nginx
./sbin/nginx
# 停止nginx
./sbin/nginx -s stop
# 完成当前工作后停止
./sbin/nginx -s quit
# 在不停止nginx的情况下,重启nginx,重新加载配置文件,启动新的工作进程,完美停止旧的工作进程
./sbin/nginx -s reload
# 检测nginx配置文件是否可用
# nginx -t -c ./nginx.conf
5、Nginx进程模型
- master进程:主进程
- worker进程:工作进程,是为master进行服务的。
通过ps-ef | grep nginx
命令查看 nginx 进程
[root@iZ2zeausm2jefqqtmpikzqZ ~]# ps -ef | grep nginx
root 4608 4222 0 Jul21 ? 00:00:00 runsv nginx
root 4621 4608 0 Jul21 ? 00:00:00 svlogd -tt /var/log/gitlab/nginx
root 4623 4608 0 Jul21 ? 00:00:00 nginx: master process /opt/gitlab/embedded/sbin/nginx -p /var/opt/gitlab/nginx
polkitd 4667 4623 0 Jul21 ? 00:00:00 nginx: worker process
polkitd 4668 4623 0 Jul21 ? 00:00:00 nginx: worker process
polkitd 4669 4623 0 Jul21 ? 00:00:00 nginx: worker process
polkitd 4670 4623 0 Jul21 ? 00:01:11 nginx: worker process
nginx 在启动之后会产生一个master进程,默认一个worker进程。在./conf/nginx.conf
配置文件中可以配置worker进程数。
worker_processes 2;
master会专门接受一些来自外界的指令,然后把这些指令传递给 worker执行,如果worker发生了异常退出了,那么 master 会启动一些新的worker 去做事。
Nginx多进程保证了多个worker之间是相互独立,一个worker退出不影响其它的worker。
假设Nginx启动以后,创建了3个Worker,当客户端有请求进入到Nginx的时候,每一个worker都要去争抢锁(该锁和客户端一一对应),抢到锁之后 client 和 worker1 会建立响应的关系,才能去处理来自客户端的请求。
传统服务器采用同步阻塞的方式处理请求,必须等一个请求处理完毕之后才回去处理下一个请求。
Nginx采用异步非阻塞的方式处理请求。Nginx可以设置默认连接数,默认是1024。
events {
# 默认使用epoll
use epoll;
# 每个worker允许连接的客户端最大连接数
worker_connections 10240;
}
总结 Nginx高性能的原因是采用了抢占机制和异步非阻塞的通信模式(多路复用器,在Netty里面会涉及到)。master是作为监听,当worker获得了client请求的时候,并且处理到了阻塞的部分,worker就不会继续等待该阻塞的请求,而是会处理一些其它的客户端的请求。
6、nginx.conf详解
main 全局配置
├── worker_processes 工作进程数
├── event 配置工作模式以及连接数,是一个指令块。
├── http http模块相关配置
│ └── server 虚拟主机,是一个服务器。可以配置多个
│ ├── localtion 路由规则,表达式
│ ├── listen 该虚拟主机监听端口
│ └── upstream 集群,内网服务器,负载均衡的规则
课程收获:
通过今天的学习了解了
- nginx是什么(高性能的反向代理服务器)
- 能干什么(能够实现集群、负载均衡、URL路由)
- 什么是正向代理、什么是反向代理?(代理服务器会帮助我们去请求外部的资源,用于代理客户端的就是正向代理。服务端的代理就是反向代理,让客户端无感知)
- Nginx的进程模型(Nginx工作时分为master进程和worker进程,worker进程处理请求,为master工作,master指导worker进程工作)
- Nginx的配置文件
学习时长90分钟,第一天完毕。
共同学习,写下你的评论
评论加载中...
作者其他优质文章