• nginx服务、nginx反向代理和nfs共享服务


    使用nginx作为HTTP负载均衡器

    http://nginx.org/en/docs/http/load_balancing.html

    介绍

    负载平衡是一种常用的跨多个应用程序实例 技术优化资源利用率,最大化吞吐量, 减少延迟,并确保容错配置。

    可以使用nginx作为非常有效的HTTP负载均衡器 将流量分发给几个应用程序服务器和改善 性能、可伸缩性和可靠性nginx的web应用程序。

    负载平衡方法

    以下负载平衡机制(或方法)的支持 nginx:

    • 循环——请求分发到应用程序服务器 以循环的方式,
    • least-connected——下一个请求分配给服务器的 的活跃连接数,
    • ip-hash——一个哈希函数是用来确定哪些服务器应该 被选中下一个请求(基于客户机的IP地址)。

    默认的负载平衡配置

    最简单的配置负载平衡nginx看起来 如下:

    http {
    上游myapp1 {
    服务器srv1.example.com;
    服务器srv2.example.com;
    服务器srv3.example.com;
    }
    
    服务器{
    听80;
    
    位置/ {
    proxy_pass http://myapp1;
    }
    }
    }

    在上面的示例中,有三个相同的应用程序的实例 srv1-srv3上运行。 当负载平衡方法不是特别的配置, 它默认为循环。 所有请求都代理服务器组myapp1,nginx应用HTTP负载 平衡分配请求。

    反向代理实现HTTP nginx包括负载平衡, HTTPS,FastCGI、uwsgi SCGI,memcached。

    配置HTTPS而不是HTTP负载平衡,只使用“HTTPS” 的协议。

    When setting up load balancing for FastCGI, uwsgi, SCGI, or memcached, use fastcgi_pass,uwsgi_passscgi_pass, and memcached_pass directives respectively.

     

    至少连接负载均衡

    另一个负载平衡的纪律是least-connected。 Least-connected允许控制应用程序的负载 实例的情况更公平一些请求 需要更长的时间来完成。

    least-connected负载平衡,nginx将尽量不要超载 忙与过度的请求,应用服务器分发新 请求一个不太繁忙的服务器。

    Least-connected负载平衡在nginx被激活 least_conn指令使用的服务器组配置:

    上游myapp1 {
    least_conn;
    服务器srv1.example.com;
    服务器srv2.example.com;
    服务器srv3.example.com;
    }

     

    会话持久性

    请注意,与循环或least-connected负载 平衡,可能每个后续客户的请求 分发给不同的服务器。 没有保证相同的客户端会永远 针对同一个服务器。

    如果有需要将客户端与一个特定的应用程序服务器 换句话说,让客户的会话“粘性”或“持续” 方面,总是试图选择一个特定的服务器——ip-hash负载 可以使用平衡机制。

    ip-hash,客户机的IP地址作为散列的关键 确定哪些服务器应该选择服务器组 客户的请求。 这个方法确保了来自相同客户机的请求 总是指向相同的服务器 除非该服务器不可用。

    配置ip-hash负载平衡,只是添加ip_hash指令到服务器(上游)组配置:

    上游myapp1 {
    ip_hash;
    服务器srv1.example.com;
    服务器srv2.example.com;
    服务器srv3.example.com;
    }

     

    加权负载平衡

    也可以影响甚至nginx负载平衡算法 进一步通过使用服务器的权重。

    在上面的例子中,这意味着服务器权重不配置 所有指定的服务器被视为同等资格 特定的负载平衡方法。

    与特定的循环或多或少也意味着平等 分布在整个服务器的请求——提供有足够的 请求,请求以统一的方式处理 足够快的完成。

    重量参数指定一个服务器,重量是占一部分 负载均衡的决定。

    上游myapp1 {
    服务器srv1.example.com重量= 3;
    服务器srv2.example.com;
    服务器srv3.example.com;
    }

    在这个配置中,每5新的请求将分布在 应用程序实例如下:3请求将被引导 srv1、一个请求将srv2 srv3和另一个。

    它也同样可以使用与least-connected和权重 ip-hash nginx的负载平衡在最近的版本。

    nginx  一个web软件

    nagios  一个监控软件

    url:http://202.102.10.10:80   统一资源定位符
    uri:http://202.102.10.10:80/a/b/c.txt 统一资源标识符

    安装nginx服务

    cd /etc/yum.repos.d

    ls  查看yum源在不在

    systemctl stop firewalld  关闭防火墙 systemctl disable firewalld  开机也不启动防火墙,太粗暴

    yum install epel -release -y 装一个扩展包,装后有epel.pepo和epel -testing.pepo源

    yum install nginx -y  安装nginx软件

    systemctl start nginx  启动nginx软件(启动后重新启动systemctl restart nginx,只能在实验环境用)

    vim /etc/nginx/nginx.conf   #查看nginx的配置文件

    ###{#配置文件内的信息

    /var/log/nginx/error.log   nginx的错误日志

    /var/log/nginx/access.log   nginx进程日志

    server{

        root /usr/share/nginx/html/ 默认访问路径

         }

    http://202.102.10.10:80/a/b/c.txt 第一段:http://----->server端是基于http协议给客户端发数据的

    第二段:202.102.10.10:80---->定位到全世界范围内唯一一款软件是谁

    第三段:/a/b/c.txt----》/usr/share/nginx/html/a/b/c.txt

    ###} 

    测试nginx服务

    systemctl reload nginx 修改配置文件后,要重新加载一下nginx的配置文件

    mkdir /usr/share/nginx/html/a/b -p  递归创建文件目录

    echo "welcome oldboy" >>/usr/share/nginx/html/a/b/c.txt

    systemctl status nginx  查看启动状态

    然后在客户端进行访问http://202.102.10.10:80/a/b/c.txt

    vim /etc/nginx/nginx.conf

     自己定义访问路径,测试nginx

    ##{

    location{

        root /var/www/html:#指定访问路径

        #index index.html   可以指定该路径下文件加载的顺序

        }

    ##}

    systemctl reload nginx 修改配置文件后,要重新加载一下nginx的配置文件

    mkdir  -p /var/www/html

    touch /var/www/html/index. html

    echo "welcom oldboy ">> /var/www/html/index.html

    http://202.102.10.10:80/index.html

    正向代理和反向代理: 

    配置反向代理

    echo "web1 ">> /var/www/html/index.html  在服务端1

    echo "web2 ">> /var/www/html/index.html  在服务端2

    echo "web3 ">> /var/www/html/index.html  在服务端3

    systemctl start nginx  启动nginx软件(启动后重新启动systemctl restart nginx)

    vim /etc/nginx/nginx.conf  代理机修改配置

    修改 http{

    #轮询

    upstream myapp1 {
            server srv1.example.com;
            server srv2.example.com;
            server srv3.example.com;

        }

    修改 location,因为是代理用的,所以改为 proxy_pass http://myapp1;

    然后在客户端访问代理主机

    http://202.102.10.10:80

     

    nfs共享存储

    yum install rpcbind nfs-utils -y  

    在服务端

    mkdir /share   创建一个共享目录

    mkfs.ext4 /dev/sdb1  #格式化一个盘

    mount /dev/sdb1  /share  #将盘挂载到共享目录下

    ifconfig eno1677736(网卡名)  192.168.16.147   #配置临时IP

    touch /share/share.txt

    echo 'gongxiang' > /share/share.txt

    vim /etc/exports  修改配置文件
    /share 192.168.16.0/24(rw,sync,fsid=0)

    systemctl start rpcbind.service   #查看启动是否成功systemctl status rpcbind.service

    systemctl start nfs-server.service#查看启动是否成功systemctl status nfs-server.service

    systemctl enable rpcbind.service    设置为开机启动

    systemctl enable nfs-server.service 设置为开机启动

    chmod -R o+w /share   放开写权限,服务端才能写东西

    exportfs  查看共享的目录

    showmount -e #默认查看自己共享的服务,前提是要DNS能解析自己,不然容易报错

    showmount -a #显示已经与客户端连接上的目录信息(几个客户端挂载到共享目录下)

     在客户端

    showmount -e 192.168.16.147  查看服务端共享的目录

    mount -t nfs (指定文件系统)192.168.16.147:/share   /var/www/html/   完成挂载

    ls /var/www/html/  就能看到服务端/share下的内容

    nginx反向代理+三台web+nfs共享存储实现集群配置

      

    源码安装nginx,并按照作业一描述的那样去测试使用

     http://blog.csdn.net/finded/article/details/51889914   源码安装nginx

     

  • 相关阅读:
    报表中的Excel操作之Aspose.Cells(Excel模板)
    .NET开源组件
    JSON 和 JSONP
    servlet 中getLastModified()
    spring mvc源码-》MultipartReques类-》主要是对文件上传进行的处理,在上传文件时,编码格式为enctype="multipart/form-data"格式,以二进制形式提交数据,提交方式为post方式。
    spring mvc dispatcherservlet处理request流程
    log显示error时的堆栈信息理解和分析
    web项目log日志查看分析->流程理解
    war包结构
    Spring Boot干货系列:(三)启动原理解析
  • 原文地址:https://www.cnblogs.com/domestique/p/6591974.html
Copyright © 2020-2023  润新知