java-nginx理论及搭建使用

一 概述nginx:(实现负载的方式还有lvs,lvs是在传输层,nginx是在应用层,本人对7层网络协议什么的也不是很清楚,这个要自行"脑补"了....)

    可以做服务的反向代理,负载均衡,动静分离,为了HA高可用,需要搭建nginx的集群,实现上述的功能需要配置 nginx.conf。

二 名词解释:

  1. 何为反向代理?

    正向代理:比如vpn,用户知道我要访问哪个服务,但是可能那个服务是内网服务,我是访问不到的,这个时候我需要通过访问代理,获取这个要访问的服务。

    反向代理:比如nginx,对于用户而言,nginx就是它要请求的服务地址。(nginx是把请求又发给了代理的服务器,但是用户是不知道的),用户就是知道我请求nginx,然后nginx返回了结果。

  2. 何为负载均衡?

    比如一个web服务,我们也是一个集群形式,用户发送一个请求给了nginx,nginx根据策略(策略是有不同的,需要配置)来找我这个请求应该交给哪个节点服务来处理。

  3. 何为动静分离?

    nginx可以提供一台静态资源的服务器(比如vue的页面请求信息),如果客户发送一个请求,只是请求这些静态资源,那么nginx直接拿到资源返回即可;

    如果客户发送的是一个动态的资源的请求,那么nginx就正常的转发到具体的服务器就行了。

三 如何搭建(同redis的安装相像)

  1. 安装

    1.1 解压redis

      tar zxvf redis

    1.2 一些准备工作

      yum install -y gcc-c++

      yum install -y pcre pcre-devel

      yum install -y zlib zlib-devel

      yum install -y openssl openssl-devel

    1.3 先进入 nginx 减压后的目录 ,执行“./configure”(编译完成后,这个目录下会多一个“Makefile”文件);

       然后执行"make"命令进行编译;

    1.4 make PREFIX=/opt/nginx install(将nginx安装到指定目录下),到此安装完成。

    注意:关闭防火墙,或者开启端口访问权限

  2. 如何配置 nginx.conf 呢?

    参考:https://www.cnblogs.com/Joans/p/4386556.html

  3. 问题:nginx有单点的问题,需要实现HA。

    3.1 解决思路:台机器做主从备份(keepalived+nginx)

        何为keepalived?(一般配合负载的服务实现负载服务的高可用)

          因为keepalived是基于VRRP协议的,

          那么直白的表述一下VRRP协议:就是我们可以搞一个集群,这个集群包含的角色是一台master(主节点)和多台backup(备用节点),

                         这个集群会有一个vip(虚拟ip),这个ip供外部访问,正常mater掌握这个vip,如果mater挂了,

                         会重新选举一个mater继续占有这个vip。

    3.2 用keepalived+nginx实现HA:

        模式:抢占模式与非抢占模式

           抢占模式即MASTER从故障中恢复后,会将VIP从BACKUP节点中抢占过来。非抢占模式即MASTER恢复后不抢占BACKUP升级为MASTER后的VIP。

        具体配置:

           参考:https://blog.csdn.net/zzhongcy/article/details/88662535

posted @ 2020-01-17 14:41  bug修复中  阅读(466)  评论(0编辑  收藏  举报