centos 7安装nginx以及用途

Nginx-负载均衡

  • Nginx简介
    nginx(读作“engine x”)是一个由俄罗斯软件工程师Igor Sysoev编写的免费开源web服务器。自2004年发布以来,nginx一直专注于高性能、高并发性和低内存使用。在web服务器功能之上的附加功能,如负载平衡、缓存、访问和带宽控制,以及与各种应用程序有效集成的能力,帮助nginx成为现代网站架构的良好选择。目前,nginx是互联网上第二流行的开源web服务器。

想深入学习研究nginx可以到官网学习,官网地址:http://nginx.org/en/


  • Nginx安装(以centos 7操作系统为例)
  1. 安装依赖环境
官网获取cenots 7版本的nginx镜像源,地址:http://nginx.org/en/linux_packages.html#RHEL-CentOS
引入镜像源
vi /etc/yum.repos.d/nginx.repo --创建编辑nginx.repo
添加以下内容:
nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

安装时默认选择stable包,如想使用mainline包,执行一下这个命令:
sudo yum-config-manager --enable nginx-mainline
  1. 安装
yum install nginx --安装
systemctl status nginx --查看运行状态
systemctl start nginx --启动
systemctl restart nginx --重启
systemctl stop nginx --关闭
systemctl enable nginx --设置开机自启动
nginx -v --查看安装版本
yum list|grep nginx --查看可用版本 
ps -ef|grep nginx --查看nginx进程
  • Nginx配置
nginx.conf --配置文件

1. 配置主体结构
user nobody; # 在“主”上下文中的指令
events {
    # 连接处理配置
}

http {
    # 特定于HTTP的配置并影响所有虚拟服务器 
    server {
        # 配置HTTP虚拟服务器1       
        location /one {
            # 处理以'/one'开头的uri的配置
        }
        location /two {
            # 处理以'/two'开头的uri的配置
        }
    } 
    server {
        # 配置HTTP虚拟服务器2
    }
}

stream {
    # 特定于TCP/UDP的配置并影响所有虚拟服务器
    server {
        # 配置TCP虚拟服务器1
    }
}

2. load balancer(负载均衡)
要开始使用NGINX Plus或NGINX开源来平衡一组服务器的HTTP流量,首先需要使用upstream指令来定义这个组。指令放在http上下文中
http {
    upstream backend {
        server backend1.example.com weight=5;
        server backend2.example.com;
        server 192.0.0.1 backup;
    }
}
组中的服务器使用server指令配置(不要与定义在NGINX上运行的虚拟服务器的服务器块混淆)
server {
    location / {
        proxy_pass http://backend;
    }
}
下面的示例组合了上面的两个片段,并展示了如何将HTTP请求代理到后端服务器组。这个组由三个服务器组成,其中两个运行同一应用程序的实例,而第三个是备份服务器。因为上游块中没有指定负载平衡算法,NGINX使用默认的循环算法:
http {
    upstream backend {
        server backend1.example.com;
        server backend2.example.com;
        server 192.0.0.1 backup;
    }
    
    server {
        location / {
            proxy_pass http://backend;
        }
    }
}
3. 选择负载平衡方法
I. NGINX开源支持四种负载平衡方法,NGINX Plus增加了两种方法:
a. 轮循:请求均匀地分布在服务器上,同时考虑了服务器的权重。这个方法是默认使用的(没有启用它的指令)
upstream backend {
   server backend1.example.com;
   server backend2.example.com;
}

b. 最少的连接:一个请求被发送到服务器的活动连接数最少,同样考虑到服务器的权重
upstream backend {
    least_conn;
    server backend1.example.com;
    server backend2.example.com;
}
c. IP Hash:发送请求的服务器由客户机IP地址决定。在这种情况下,使用IPv4地址的前三个字节或整个IPv6地址来计算散列值。该方法保证来自相同地址的请求到达相同的服务器,除非该服务器不可用
upstream backend {
    ip_hash;
    server backend1.example.com;
    server backend2.example.com;
}
如果一个服务器需要暂时从负载平衡循环中移除,可以使用down参数来标记它,以保持当前客户端IP地址的散列。本服务器处理的请求被自动发送到组中的下一个服务器
upstream backend {
    server backend1.example.com;
    server backend2.example.com;
    server backend3.example.com down;
}
d. 通用散列——请求发送到的服务器由用户定义的键决定,键可以是文本字符串、变量或组合。例如,密钥可以是一个成对的源IP地址和端口,或者是一个URI,如下例所示
upstream backend {
    hash $request_uri consistent;
    server backend1.example.com;
    server backend2.example.com;
}
哈希指令的可选一致性参数支持ketama一致性哈希负载平衡。根据用户定义的散列键值,请求均匀地分布在所有上游服务器上。如果向上游组添加或从上游组删除一个上游服务器,则只会重新映射几个键,这在负载平衡缓存服务器或其他累积状态的应用程序中最小化了缓存丢失。
e. 最少时间(NGINX Plus only)——对于每个请求,NNGINX Plus选择平均延迟最低和活动连接最少的服务器,其中最低平均延迟是根据least_time指令的以下参数计算的:
header - 从服务器接收第一个字节的时间
last_byte - 从服务器接收完整响应的时间
last_byte inflight - 考虑到不完整的请求,从服务器接收完整响应的时间
upstream backend {
    least_time header;
    server backend1.example.com;
    server backend2.example.com;
}
f. 随机:每个请求将被传递到一个随机选择的服务器。如果指定了两个参数,首先NGINX根据server权值随机选择两台服务器,然后使用指定的方法选择其中一台
least_conn - 活动连接的最少数量
least_time=header (NGINX Plus) - 从服务器接收响应报头的最小平均时间($upstream_header_time)
least_time=last_byte (NGINX Plus) - 从服务器接收完整响应的最小平均时间($upstream_response_time)
upstream backend {
    random two least_time=last_byte;
    server backend1.example.com;
    server backend2.example.com;
    server backend3.example.com;
    server backend4.example.com;
}
II. 服务器的权重
默认情况下,NGINX使用轮询方法在组中的服务器之间根据它们的权重分配请求。服务器指令的权值参数设置服务器的权值;默认值是1
upstream backend {
    server backend1.example.com weight=5;
    server backend2.example.com;
    server 192.0.0.1 backup;
}
例如,backend1.example.com的权值为5;其他两个服务器具有默认的权值(1),但是IP地址为192.0.0.1的服务器被标记为备份服务器,除非其他两个服务器都不可用,否则不会接收请求。使用这种权重配置,每6个请求中有5个发送到backend1.example.com, 1个发送到backend2.example.com

III. 服务器慢启动
服务器慢启动特性可以防止最近恢复的服务器被连接压得喘不过气来,因为连接可能会超时并导致服务器再次被标记为失败。

在NGINX Plus中,slow - start允许上游服务器在恢复或可用之后逐渐将其权重从0恢复到其标称值。这可以通过服务器指令的slow_start参数完成:
upstream backend {
    server backend1.example.com slow_start=30s;
    server backend2.example.com;
    server 192.0.0.1 backup;
}
时间值(这里是30秒)设置NGINX Plus将服务器连接数量增加到最大的时间。
注意,如果在一个组中只有一个服务器,那么服务器指令的max_failed、fail_timeout和slow_start参数将被忽略,服务器永远不会被认为不可用。

ok,希望对有需要的同学有所帮助~.~。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章