个人笔记之Nginx

26 篇文章 0 订阅
25 篇文章 0 订阅

个人笔记之Nginx

声明:为了保证学习的效果,本人一般习惯先手敲出大致思路,再慢慢填充笔记内容,如果有安装配置过程也会先在自己电脑上跑通再发。这种方式难免出现错漏甚至从一开始的想法就是错误的,如果大佬们碰巧看到麻烦及时告知,在下感激不尽!

1.概念及流程

有时候,当短时间内用户访问量超过服务器的处理上线的时候,容易引发一系列问题甚至直接导致服务器崩溃。一般的解决方案是增加几台服务器,但是如何保证每台服务器都能分配到在它承受范围内的负载,而同时不影响用户使用体验,同时又能防止某台服务器的宕机导致系统彻底崩溃就成了问题,于是,Nginx就被开发出来应对这种情况。

Nginx,相当于一个用于分配请求最终访问到的目标地址的中间件,用于Linux集群中根据设置好的规则分配请求访问的服务器。

作用:解决高并发场景下服务器压力过大的问题,以及维持系统的高可用性

访问流程:

  1. 首先用户输入域名开始访问网站,此时该请求会被Nginx拦截到,并根据访问时所使用的域名在配置文件中寻找对应的server中的配置,找到配置的server_name,proxy_path和port

  2. 然后再根据配置文件中定义的upstream设置好的server_name对应的tomcat服务器所使用的端口以及不同服务器的真实IP地址

  3. 最后根据配置文件中设置的规则来决定是平均分配还是按照权重分配,来计算本次请求最终落到哪台服务器上。

  4. 最后从分配到的资源服务器拿到所需资源返回给用户。

TIPS:

  1. 用户输入不同域名来访问时,可能会指向同一个IP,这也是导致服务器压力过大的原因之一。

  2. 三个tomcat服务器相互独立,可以拥有相同的端口但是IP必须不同,以达到负载均衡的目的。

  3. 具体的访问权重及规则都在配置文件中配置,默认是平均分配,假设此时有三台服务器则将同时到达的请求平均分配到三台服务器,例如按123…的顺序分配。如果设置了权重,比如

    upstream serverloc{(serverloc是我瞎起的集群名)
    server 192.168.251.101:8080 weight=1;(服务器1)
    server 192.168.251.102:8080 weight=2;(服务器2)
    server 192.168.251.103:8080 weight=3;(服务器3)
    }

则此时请求会有1/6的概率落到服务器1,2/6的概率落到服务器2,3/6的概率落到服务器3,则最终访问的顺序按照123323…的顺序循环分配。按权重分配可以根据服务器性能差异等灵活配置。

2.搭建Nginx集群

Nginx源码安装

解编安启

(流程走过了,只要自己下个包就行了)

  • 将安装包上传到Linux虚拟机,安装包自己下
  • 解压,并把Nginx存放到指定目录
    • tar -zxf nginx-1.8.1.tar.gz
  • 需要安装nginx依赖的软件,若安装失败可能是网络原因,多试几次
    • yum install gcc pcre-devel zlib-devel openssl-devel -y
  • 配置安装路径
    • cd nginx-1.8.1
    • ./configure --prefix=/opt/cl/nginx-1.8.1
  • 开始编译并安装nginx
    • make && make install
  • 开启Ngxin
    • cd /opt/cl/nginx-1.8.1/sbin
    • ./nginx
    • http://192.168.251.100/

最终效果:

在这里插入图片描述

看到这个页面说明安装和启动成功

3.相关配置文件

(这部分是直接拷贝的)

配置文件

  • Nginx中文文档

    • https://www.nginx.cn/doc/index.html
  • 首先进入配置文件夹:

    cd /opt/cl/nginx-1.8.1/conf
    

    然后在server{}标签上面加上upstream标签:

    upstream serverloc{			
        server 192.168.251.101:8080 weight=1;
        server 192.168.251.102:8080 weight=2;
        server 192.168.251.103:8080 weight=3;
        }
     (serverloc是我瞎起的集群名)  
    (服务器1)
    (服务器2)
    (服务器3)
    

    最终文件效果(注释掉的文本内容都删了,实际上文件很长):

  • #user  nobody;
    worker_processes  1;
    
    events {
        worker_connections  1024;
    }
    
    
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  0;
    
    
        upstream serverloc {			
        server 192.168.251.101:8080 weight=1;
        server 192.168.251.102:8080 weight=2;
        server 192.168.251.103:8080 weight=3;
        } 
    
        server {
            listen       80;
            server_name  localhost;
            location / {
    			proxy_pass http://serverloc;
            }
        }
    }
    
    

随后重启Nginx:

cd /opt/cl/nginx-1.8.1/sbin
./nginx -s reload

此时打开node01(我的服务器1)上的tomcat服务器(为了偷懒我就只开了一个),然后输入之前访问Nginx的网址,发现现在没有进Nginx的欢迎页面而是进了tomcat的主页了:

在这里插入图片描述

我的节点配置是:

basenode 192.168.251.100
node01 192.168.251.101
node02 192.168.251.102
node03 192.168.251.103

basenode跑Nginx,三台其他虚拟机跑tomcat,这次简单试一下所以没写测试用的页面,只是开一台tomcat简单跑一下,以后有时间再补上吧。

在这里插入图片描述

这个网址已经访问到了tomcat,说明Nginx成功地自动访问到了tomcat服务器没有出问题

常用指令

关闭nginx服务
kill `cat /usr/local/nginx/logs/nginx.pid`

nginx -s reload  :修改配置后重新加载生效
nginx -s reopen  :重新打开日志文件
nginx -t -c /path/to/nginx.conf 测试nginx配置文件是否正确

关闭nginx:
nginx -s stop  :快速停止nginx
         quit  :完整有序的停止nginx

其他的停止nginx 方式:
ps -ef | grep nginx

kill -QUIT 主进程号     :从容停止Nginx
kill -TERM 主进程号     :快速停止Nginx
pkill -9 nginx          :强制停止Nginx

启动nginx:
nginx -c /path/to/nginx.conf

平滑重启nginx:
kill -HUP 主进程号
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值