Centos7 nginx安装并负载均衡WCF/Web以及负载策略配置

12 篇文章 0 订阅
3 篇文章 0 订阅

centos7 nginx安装并负载均衡高并发WCF/Web以及负载策略配置

最近需要在开发中使用到负载均衡,有两种选择,一个是HA一个就是nginx,考虑过后选择nginx做负载均衡,首先大家可以参考这篇文章:链接写的非常好,思路十分清晰并且有图,这里我就不在赘述,接下来给大家介绍:

  • 如何在centos7 中安装nginx
  • 如何配置负载均衡(nginx.conf配置)
  • 负载策略配置

    首先是安装nginx,参考:怪才(Kencery) 一枝花算不算浪漫 凌激冰
    nginx包下载nginx由于nginx需要SSL功能,gzip模块,rewrite模块,以及编译安装需要安装gcc gcc-c++,所以需要openssl库openssl,zlib库zlib,pcre库pcre
    这里为了方便就直接yum安装了:

[root@localhost nginx-1.10.1]#  yum install -y zlib zlib-devel
[root@localhost nginx-1.10.1]#  yum install -y pcre pcre-devel 
[root@localhost nginx-1.10.1]#  yum install -y openssl openssl-devel 
[root@localhost nginx-1.10.1]#  yum install -y gcc gcc-c++
[root@localhost nginx-1.10.1]#  yum install -y pcre pcre-devel  
已加载插件:fastestmirror, langpacks
base                                                     | 3.6 kB     00:00     
extras                                                   | 3.4 kB     00:00     
updates                                                  | 3.4 kB     00:00     
updates/7/x86_64/primary_db                                | 3.6 MB   00:14     
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
正在解决依赖关系
--> 正在检查事务
---> 软件包 pcre.x86_64.0.8.32-15.el7_2.1 将被 升级
---> 软件包 pcre.x86_64.0.8.32-17.el7 将被 更新
---> 软件包 pcre-devel.x86_64.0.8.32-17.el7 将被 安装
--> 解决依赖关系完成

依赖关系解决

================================================================================
 Package             架构            版本                   源             大小
================================================================================
正在安装:
 pcre-devel          x86_64          8.32-17.el7            base          480 k
正在更新:
 pcre                x86_64          8.32-17.el7            base          422 k

事务概要
================================================================================
安装  1 软件包
升级  1 软件包

总计:902 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在更新    : pcre-8.32-17.el7.x86_64                                     1/3 
  正在安装    : pcre-devel-8.32-17.el7.x86_64                               2/3 
  清理        : pcre-8.32-15.el7_2.1.x86_64                                 3/3 
  验证中      : pcre-devel-8.32-17.el7.x86_64                               1/3 
  验证中      : pcre-8.32-17.el7.x86_64                                     2/3 
  验证中      : pcre-8.32-15.el7_2.1.x86_64                                 3/3 

已安装:
  pcre-devel.x86_64 0:8.32-17.el7                                               

更新完毕:
  pcre.x86_64 0:8.32-17.el7                                                     

完毕!
[root@localhost nginx-1.10.1]#  yum install -y zlib zlib-devel  
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
软件包 zlib-1.2.7-17.el7.x86_64 已安装并且是最新版本
正在解决依赖关系
--> 正在检查事务
---> 软件包 zlib-devel.x86_64.0.1.2.7-17.el7 将被 安装
--> 解决依赖关系完成

依赖关系解决

================================================================================
 Package             架构            版本                   源             大小
================================================================================
正在安装:
 zlib-devel          x86_64          1.2.7-17.el7           base           50 k

事务概要
================================================================================
安装  1 软件包

总计:50 k
安装大小:132 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安装    : zlib-devel-1.2.7-17.el7.x86_64                              1/1 
  验证中      : zlib-devel-1.2.7-17.el7.x86_64                              1/1 

已安装:
  zlib-devel.x86_64 0:1.2.7-17.el7                                              

完毕!
[root@localhost nginx-1.10.1]# yum install -y openssl openssl-devel  
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
正在解决依赖关系
--> 正在检查事务
---> 软件包 openssl.x86_64.1.1.0.1e-60.el7 将被 升级
---> 软件包 openssl.x86_64.1.1.0.2k-8.el7 将被 更新
--> 正在处理依赖关系 openssl-libs(x86-64) = 1:1.0.2k-8.el7,它被软件包 1:openssl-1.0.2k-8.el7.x86_64 需要
--> 正在处理依赖关系 libcrypto.so.10(OPENSSL_1.0.2)(64bit),它被软件包 1:openssl-1.0.2k-8.el7.x86_64 需要
---> 软件包 openssl-devel.x86_64.1.1.0.2k-8.el7 将被 安装
--> 正在处理依赖关系 krb5-devel(x86-64),它被软件包 1:openssl-devel-1.0.2k-8.el7.x86_64 需要
--> 正在检查事务
---> 软件包 krb5-devel.x86_64.0.1.15.1-8.el7 将被 安装
--> 正在处理依赖关系 libkadm5(x86-64) = 1.15.1-8.el7,它被软件包 krb5-devel-1.15.1-8.el7.x86_64 需要
--> 正在处理依赖关系 krb5-libs(x86-64) = 1.15.1-8.el7,它被软件包 krb5-devel-1.15.1-8.el7.x86_64 需要
--> 正在处理依赖关系 libverto-devel,它被软件包 krb5-devel-1.15.1-8.el7.x86_64 需要
--> 正在处理依赖关系 libselinux-devel,它被软件包 krb5-devel-1.15.1-8.el7.x86_64 需要
--> 正在处理依赖关系 libcom_err-devel,它被软件包 krb5-devel-1.15.1-8.el7.x86_64 需要
--> 正在处理依赖关系 keyutils-libs-devel,它被软件包 krb5-devel-1.15.1-8.el7.x86_64 需要
---> 软件包 openssl-libs.x86_64.1.1.0.1e-60.el7 将被 升级
---> 软件包 openssl-libs.x86_64.1.1.0.2k-8.el7 将被 更新
--> 正在检查事务
---> 软件包 keyutils-libs-devel.x86_64.0.1.5.8-3.el7 将被 安装
---> 软件包 krb5-libs.x86_64.0.1.14.1-26.el7 将被 升级
--> 正在处理依赖关系 krb5-libs(x86-64) = 1.14.1-26.el7,它被软件包 krb5-workstation-1.14.1-26.el7.x86_64 需要
---> 软件包 krb5-libs.x86_64.0.1.15.1-8.el7 将被 更新
---> 软件包 libcom_err-devel.x86_64.0.1.42.9-10.el7 将被 安装
--> 正在处理依赖关系 libcom_err(x86-64) = 1.42.9-10.el7,它被软件包 libcom_err-devel-1.42.9-10.el7.x86_64 需要
---> 软件包 libkadm5.x86_64.0.1.14.1-26.el7 将被 升级
---> 软件包 libkadm5.x86_64.0.1.15.1-8.el7 将被 更新
---> 软件包 libselinux-devel.x86_64.0.2.5-11.el7 将被 安装
--> 正在处理依赖关系 libselinux(x86-64) = 2.5-11.el7,它被软件包 libselinux-devel-2.5-11.el7.x86_64 需要
--> 正在处理依赖关系 libsepol-devel(x86-64) >= 2.5-6,它被软件包 libselinux-devel-2.5-11.el7.x86_64 需要
--> 正在处理依赖关系 pkgconfig(libsepol),它被软件包 libselinux-devel-2.5-11.el7.x86_64 需要
---> 软件包 libverto-devel.x86_64.0.0.2.5-4.el7 将被 安装
--> 正在检查事务
---> 软件包 krb5-workstation.x86_64.0.1.14.1-26.el7 将被 升级
---> 软件包 krb5-workstation.x86_64.0.1.15.1-8.el7 将被 更新
---> 软件包 libcom_err.x86_64.0.1.42.9-9.el7 将被 升级
--> 正在处理依赖关系 libcom_err(x86-64) = 1.42.9-9.el7,它被软件包 libss-1.42.9-9.el7.x86_64 需要
--> 正在处理依赖关系 libcom_err(x86-64) = 1.42.9-9.el7,它被软件包 e2fsprogs-libs-1.42.9-9.el7.x86_64 需要
--> 正在处理依赖关系 libcom_err(x86-64) = 1.42.9-9.el7,它被软件包 e2fsprogs-1.42.9-9.el7.x86_64 需要
---> 软件包 libcom_err.x86_64.0.1.42.9-10.el7 将被 更新
---> 软件包 libselinux.x86_64.0.2.5-6.el7 将被 升级
--> 正在处理依赖关系 libselinux(x86-64) = 2.5-6.el7,它被软件包 libselinux-python-2.5-6.el7.x86_64 需要
--> 正在处理依赖关系 libselinux(x86-64) = 2.5-6.el7,它被软件包 libselinux-utils-2.5-6.el7.x86_64 需要
---> 软件包 libselinux.x86_64.0.2.5-11.el7 将被 更新
---> 软件包 libsepol-devel.x86_64.0.2.5-6.el7 将被 安装
--> 正在检查事务
---> 软件包 e2fsprogs.x86_64.0.1.42.9-9.el7 将被 升级
---> 软件包 e2fsprogs.x86_64.0.1.42.9-10.el7 将被 更新
---> 软件包 e2fsprogs-libs.x86_64.0.1.42.9-9.el7 将被 升级
---> 软件包 e2fsprogs-libs.x86_64.0.1.42.9-10.el7 将被 更新
---> 软件包 libselinux-python.x86_64.0.2.5-6.el7 将被 升级
---> 软件包 libselinux-python.x86_64.0.2.5-11.el7 将被 更新
---> 软件包 libselinux-utils.x86_64.0.2.5-6.el7 将被 升级
---> 软件包 libselinux-utils.x86_64.0.2.5-11.el7 将被 更新
---> 软件包 libss.x86_64.0.1.42.9-9.el7 将被 升级
---> 软件包 libss.x86_64.0.1.42.9-10.el7 将被 更新
--> 解决依赖关系完成

依赖关系解决

================================================================================
 Package                   架构         版本                   源          大小
================================================================================
正在安装:
 openssl-devel             x86_64       1:1.0.2k-8.el7         base       1.5 M
正在更新:
 openssl                   x86_64       1:1.0.2k-8.el7         base       492 k
为依赖而安装:
 keyutils-libs-devel       x86_64       1.5.8-3.el7            base        37 k
 krb5-devel                x86_64       1.15.1-8.el7           base       266 k
 libcom_err-devel          x86_64       1.42.9-10.el7          base        31 k
 libselinux-devel          x86_64       2.5-11.el7             base       186 k
 libsepol-devel            x86_64       2.5-6.el7              base        74 k
 libverto-devel            x86_64       0.2.5-4.el7            base        12 k
为依赖而更新:
 e2fsprogs                 x86_64       1.42.9-10.el7          base       698 k
 e2fsprogs-libs            x86_64       1.42.9-10.el7          base       166 k
 krb5-libs                 x86_64       1.15.1-8.el7           base       747 k
 krb5-workstation          x86_64       1.15.1-8.el7           base       811 k
 libcom_err                x86_64       1.42.9-10.el7          base        40 k
 libkadm5                  x86_64       1.15.1-8.el7           base       174 k
 libselinux                x86_64       2.5-11.el7             base       162 k
 libselinux-python         x86_64       2.5-11.el7             base       234 k
 libselinux-utils          x86_64       2.5-11.el7             base       151 k
 libss                     x86_64       1.42.9-10.el7          base        45 k
 openssl-libs              x86_64       1:1.0.2k-8.el7         base       1.2 M

事务概要
================================================================================
安装  1 软件包 (+ 6 依赖软件包)
升级  1 软件包 (+11 依赖软件包)

总计:6.9 M
总下载量:1.2 M
Downloading packages:
No Presto metadata available for base
openssl-libs-1.0.2k-8.el7.x86_64.rpm                       | 1.2 MB   00:21     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在更新    : libcom_err-1.42.9-10.el7.x86_64                            1/31 
  正在更新    : libselinux-2.5-11.el7.x86_64                               2/31 
  正在更新    : 1:openssl-libs-1.0.2k-8.el7.x86_64                         3/31 
  正在更新    : krb5-libs-1.15.1-8.el7.x86_64                              4/31 
  正在更新    : libkadm5-1.15.1-8.el7.x86_64                               5/31 
  正在更新    : libss-1.42.9-10.el7.x86_64                                 6/31 
  正在安装    : libcom_err-devel-1.42.9-10.el7.x86_64                      7/31 
  正在更新    : e2fsprogs-libs-1.42.9-10.el7.x86_64                        8/31 
  正在安装    : libverto-devel-0.2.5-4.el7.x86_64                          9/31 
  正在安装    : libsepol-devel-2.5-6.el7.x86_64                           10/31 
  正在安装    : libselinux-devel-2.5-11.el7.x86_64                        11/31 
  正在安装    : keyutils-libs-devel-1.5.8-3.el7.x86_64                    12/31 
  正在安装    : krb5-devel-1.15.1-8.el7.x86_64                            13/31 
  正在安装    : 1:openssl-devel-1.0.2k-8.el7.x86_64                       14/31 
  正在更新    : e2fsprogs-1.42.9-10.el7.x86_64                            15/31 
  正在更新    : krb5-workstation-1.15.1-8.el7.x86_64                      16/31 
  正在更新    : 1:openssl-1.0.2k-8.el7.x86_64                             17/31 
  正在更新    : libselinux-utils-2.5-11.el7.x86_64                        18/31 
  正在更新    : libselinux-python-2.5-11.el7.x86_64                       19/31 
  清理        : krb5-workstation-1.14.1-26.el7.x86_64                     20/31 
  清理        : e2fsprogs-1.42.9-9.el7.x86_64                             21/31 
  清理        : 1:openssl-1.0.1e-60.el7.x86_64                            22/31 
  清理        : libkadm5-1.14.1-26.el7.x86_64                             23/31 
  清理        : 1:openssl-libs-1.0.1e-60.el7.x86_64                       24/31 
  清理        : krb5-libs-1.14.1-26.el7.x86_64                            25/31 
  清理        : e2fsprogs-libs-1.42.9-9.el7.x86_64                        26/31 
  清理        : libss-1.42.9-9.el7.x86_64                                 27/31 
  清理        : libselinux-python-2.5-6.el7.x86_64                        28/31 
  清理        : libselinux-utils-2.5-6.el7.x86_64                         29/31 
  清理        : libselinux-2.5-6.el7.x86_64                               30/31 
  清理        : libcom_err-1.42.9-9.el7.x86_64                            31/31 
  验证中      : libss-1.42.9-10.el7.x86_64                                 1/31 
  验证中      : libselinux-utils-2.5-11.el7.x86_64                         2/31 
  验证中      : keyutils-libs-devel-1.5.8-3.el7.x86_64                     3/31 
  验证中      : libselinux-2.5-11.el7.x86_64                               4/31 
  验证中      : libselinux-python-2.5-11.el7.x86_64                        5/31 
  验证中      : libsepol-devel-2.5-6.el7.x86_64                            6/31 
  验证中      : libkadm5-1.15.1-8.el7.x86_64                               7/31 
  验证中      : 1:openssl-1.0.2k-8.el7.x86_64                              8/31 
  验证中      : libverto-devel-0.2.5-4.el7.x86_64                          9/31 
  验证中      : libcom_err-devel-1.42.9-10.el7.x86_64                     10/31 
  验证中      : 1:openssl-libs-1.0.2k-8.el7.x86_64                        11/31 
  验证中      : 1:openssl-devel-1.0.2k-8.el7.x86_64                       12/31 
  验证中      : libselinux-devel-2.5-11.el7.x86_64                        13/31 
  验证中      : krb5-workstation-1.15.1-8.el7.x86_64                      14/31 
  验证中      : libcom_err-1.42.9-10.el7.x86_64                           15/31 
  验证中      : e2fsprogs-libs-1.42.9-10.el7.x86_64                       16/31 
  验证中      : krb5-devel-1.15.1-8.el7.x86_64                            17/31 
  验证中      : e2fsprogs-1.42.9-10.el7.x86_64                            18/31 
  验证中      : krb5-libs-1.15.1-8.el7.x86_64                             19/31 
  验证中      : libss-1.42.9-9.el7.x86_64                                 20/31 
  验证中      : libselinux-python-2.5-6.el7.x86_64                        21/31 
  验证中      : libselinux-utils-2.5-6.el7.x86_64                         22/31 
  验证中      : krb5-workstation-1.14.1-26.el7.x86_64                     23/31 
  验证中      : 1:openssl-libs-1.0.1e-60.el7.x86_64                       24/31 
  验证中      : 1:openssl-1.0.1e-60.el7.x86_64                            25/31 
  验证中      : libselinux-2.5-6.el7.x86_64                               26/31 
  验证中      : libcom_err-1.42.9-9.el7.x86_64                            27/31 
  验证中      : e2fsprogs-libs-1.42.9-9.el7.x86_64                        28/31 
  验证中      : libkadm5-1.14.1-26.el7.x86_64                             29/31 
  验证中      : e2fsprogs-1.42.9-9.el7.x86_64                             30/31 
  验证中      : krb5-libs-1.14.1-26.el7.x86_64                            31/31 

已安装:
  openssl-devel.x86_64 1:1.0.2k-8.el7                                           

作为依赖被安装:
  keyutils-libs-devel.x86_64 0:1.5.8-3.el7 krb5-devel.x86_64 0:1.15.1-8.el7    
  libcom_err-devel.x86_64 0:1.42.9-10.el7  libselinux-devel.x86_64 0:2.5-11.el7
  libsepol-devel.x86_64 0:2.5-6.el7        libverto-devel.x86_64 0:0.2.5-4.el7 

更新完毕:
  openssl.x86_64 1:1.0.2k-8.el7                                                 

作为依赖被升级:
  e2fsprogs.x86_64 0:1.42.9-10.el7      e2fsprogs-libs.x86_64 0:1.42.9-10.el7  
  krb5-libs.x86_64 0:1.15.1-8.el7       krb5-workstation.x86_64 0:1.15.1-8.el7 
  libcom_err.x86_64 0:1.42.9-10.el7     libkadm5.x86_64 0:1.15.1-8.el7         
  libselinux.x86_64 0:2.5-11.el7        libselinux-python.x86_64 0:2.5-11.el7  
  libselinux-utils.x86_64 0:2.5-11.el7  libss.x86_64 0:1.42.9-10.el7           
  openssl-libs.x86_64 1:1.0.2k-8.el7   

完毕!
[root@localhost nginx-1.10.1]#  yum install gcc
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
正在解决依赖关系
--> 正在检查事务
---> 软件包 gcc.x86_64.0.4.8.5-11.el7 将被 升级
--> 正在处理依赖关系 gcc = 4.8.5-11.el7,它被软件包 gcc-c++-4.8.5-11.el7.x86_64 需要
---> 软件包 gcc.x86_64.0.4.8.5-16.el7 将被 更新
--> 正在处理依赖关系 libgomp = 4.8.5-16.el7,它被软件包 gcc-4.8.5-16.el7.x86_64 需要
--> 正在处理依赖关系 cpp = 4.8.5-16.el7,它被软件包 gcc-4.8.5-16.el7.x86_64 需要
--> 正在处理依赖关系 libgcc >= 4.8.5-16.el7,它被软件包 gcc-4.8.5-16.el7.x86_64 需要
--> 正在检查事务
---> 软件包 cpp.x86_64.0.4.8.5-11.el7 将被 升级
---> 软件包 cpp.x86_64.0.4.8.5-16.el7 将被 更新
---> 软件包 gcc-c++.x86_64.0.4.8.5-11.el7 将被 升级
---> 软件包 gcc-c++.x86_64.0.4.8.5-16.el7 将被 更新
--> 正在处理依赖关系 libstdc++-devel = 4.8.5-16.el7,它被软件包 gcc-c++-4.8.5-16.el7.x86_64 需要
--> 正在处理依赖关系 libstdc++ = 4.8.5-16.el7,它被软件包 gcc-c++-4.8.5-16.el7.x86_64 需要
---> 软件包 libgcc.x86_64.0.4.8.5-11.el7 将被 升级
---> 软件包 libgcc.x86_64.0.4.8.5-16.el7 将被 更新
---> 软件包 libgomp.x86_64.0.4.8.5-11.el7 将被 升级
---> 软件包 libgomp.x86_64.0.4.8.5-16.el7 将被 更新
--> 正在检查事务
---> 软件包 libstdc++.x86_64.0.4.8.5-11.el7 将被 升级
---> 软件包 libstdc++.x86_64.0.4.8.5-16.el7 将被 更新
---> 软件包 libstdc++-devel.x86_64.0.4.8.5-11.el7 将被 升级
---> 软件包 libstdc++-devel.x86_64.0.4.8.5-16.el7 将被 更新
--> 解决依赖关系完成

依赖关系解决

================================================================================
 Package                 架构           版本                 源            大小
================================================================================
正在更新:
 gcc                     x86_64         4.8.5-16.el7         base          16 M
为依赖而更新:
 cpp                     x86_64         4.8.5-16.el7         base         5.9 M
 gcc-c++                 x86_64         4.8.5-16.el7         base         7.2 M
 libgcc                  x86_64         4.8.5-16.el7         base          98 k
 libgomp                 x86_64         4.8.5-16.el7         base         154 k
 libstdc++               x86_64         4.8.5-16.el7         base         301 k
 libstdc++-devel         x86_64         4.8.5-16.el7         base         1.5 M

事务概要
================================================================================
升级  1 软件包 (+6 依赖软件包)

总计:31 M
Is this ok [y/d/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在更新    : libgcc-4.8.5-16.el7.x86_64                                 1/14 
  正在更新    : libstdc++-4.8.5-16.el7.x86_64                              2/14 
  正在更新    : libstdc++-devel-4.8.5-16.el7.x86_64                        3/14 
  正在更新    : libgomp-4.8.5-16.el7.x86_64                                4/14 
  正在更新    : cpp-4.8.5-16.el7.x86_64                                    5/14 
  正在更新    : gcc-4.8.5-16.el7.x86_64                                    6/14 
  正在更新    : gcc-c++-4.8.5-16.el7.x86_64                                7/14 
  清理        : gcc-c++-4.8.5-11.el7.x86_64                                8/14 
  清理        : libstdc++-devel-4.8.5-11.el7.x86_64                        9/14 
  清理        : gcc-4.8.5-11.el7.x86_64                                   10/14 
  清理        : libstdc++-4.8.5-11.el7.x86_64                             11/14 
  清理        : libgcc-4.8.5-11.el7.x86_64                                12/14 
  清理        : cpp-4.8.5-11.el7.x86_64                                   13/14 
  清理        : libgomp-4.8.5-11.el7.x86_64                               14/14 
  验证中      : libgcc-4.8.5-16.el7.x86_64                                 1/14 
  验证中      : cpp-4.8.5-16.el7.x86_64                                    2/14 
  验证中      : gcc-c++-4.8.5-16.el7.x86_64                                3/14 
  验证中      : libstdc++-devel-4.8.5-16.el7.x86_64                        4/14 
  验证中      : libstdc++-4.8.5-16.el7.x86_64                              5/14 
  验证中      : libgomp-4.8.5-16.el7.x86_64                                6/14 
  验证中      : gcc-4.8.5-16.el7.x86_64                                    7/14 
  验证中      : gcc-c++-4.8.5-11.el7.x86_64                                8/14 
  验证中      : libgcc-4.8.5-11.el7.x86_64                                 9/14 
  验证中      : libgomp-4.8.5-11.el7.x86_64                               10/14 
  验证中      : gcc-4.8.5-11.el7.x86_64                                   11/14 
  验证中      : libstdc++-4.8.5-11.el7.x86_64                             12/14 
  验证中      : libstdc++-devel-4.8.5-11.el7.x86_64                       13/14 
  验证中      : cpp-4.8.5-11.el7.x86_64                                   14/14 

更新完毕:
  gcc.x86_64 0:4.8.5-16.el7                                                     

作为依赖被升级:
  cpp.x86_64 0:4.8.5-16.el7           gcc-c++.x86_64 0:4.8.5-16.el7            
  libgcc.x86_64 0:4.8.5-16.el7        libgomp.x86_64 0:4.8.5-16.el7            
  libstdc++.x86_64 0:4.8.5-16.el7     libstdc++-devel.x86_64 0:4.8.5-16.el7    

完毕!

安装完依赖项就来安装nginx,首先解压包:

tar -zxvf nginx-1.10.1.tar.gz

接下来进入nginx目录:

[root@localhost nginx]# cd nginx-1.10.1
[root@localhost nginx-1.10.1]# ./configure
[root@localhost nginx-1.10.1]# make
[root@localhost nginx-1.10.1]# make install

到这里安装就结束了,那么我们如何确定我们是否已经成功安装了nginx呢?
因为我们编译时默认配置所以编译出来的文件目录是/usr/local/nginx/sbin/
,我们进入这个目录:

[root@localhost sbin]# cd /usr/local/nginx/sbin/
[root@localhost sbin]# ./nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

执行 ./nginx -t出现下边两行说明成功,我们也能看出来test is successful
当确认安装完成之后,首先就需要启动和查看Nginx默认安装的端口是多少,两个命令分别如下:

[root@localhost sbin]# ./nginx
[root@localhost sbin]# netstat -ntlp 
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd           
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      10387/nginx: master 
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      2982/dnsmasq        
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1327/sshd           
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1167/cupsd          
tcp6       0      0 :::3306                 :::*                    LISTEN      2839/mysqld         
tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd           
tcp6       0      0 :::22                   :::*                    LISTEN      1327/sshd           
tcp6       0      0 ::1:631                 :::*                    LISTEN      1167/cupsd      

nginx默认是监听80端口

如果防火墙打开就要开放80端口:

[root@localhost sbin]# firewall-cmd --permanent --zone=public --add-port=80/tcpsuccess
[root@localhost sbin]# firewall-cmd --permanent --zone=public --add-port=80/udp
success
[root@localhost sbin]# firewall-cmd --reload 
success

停止运行nginx:

[root@localhost sbin]# ./nginx -s quit

至此nginx就已经安装完成了并且能够访问到,那么接下来介绍如何使用nginx进行负载均衡:
这里借用使用nginx搭建高可用,高并发的wcf集群的说明来讲解吧,两个WCF服务,一个nginx,一个客户端
1. 两个WCF的windows服务器承载(192.168.25.23:9049,192.168.25.23:9047),一台Client的服务器
2. 一台Centos机器,用来承载web复杂均衡nginx(192.168.23.130)。
3. 3.在所有的Client的Hosts文件中增加host映射:【192.168.23.130
cluster.com】,方便通过域名的形式访问nginx所在服务器的ip地址。

WCF程序

1) HomeService实现类代码如下(输出当前server的ip地址,方便查看):

 public class HomeService : IHomeService
      {
          public string DoWork(string msg)
          {
              var ip = Dns.GetHostAddresses(Dns.GetHostName()).FirstOrDefault(i => i.AddressFamily ==
                                                                 AddressFamily.InterNetwork).ToString();

              return string.Format("当前 request 由 server={0} 返回", ip);
         }
     }

2) App.Config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
  </startup>
  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior name="">
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <services>
      <service name="WcfService.HomeService">
        <endpoint address="/HomeService" binding="basicHttpBinding" contract="WcfService.IHomeService">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
        <host>
          <baseAddresses>
            <add baseAddress="http://192.168.25.23:9049" />
          </baseAddresses>
        </host>
      </service>
    </services>
  </system.serviceModel>
</configuration>

部署wcf两台机器的ip地址是192.168.25.23:9049,192.168.25.23:9047,所以部署的时候注意一下config中的baseAddress地址。这里看下iis
的绑定端口
这里写图片描述

nginx负载配置

#user  nobody;
worker_processes  auto;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    upstream  cluster.com{
        #这里写的就是我们的两台WCF服务的地址(因为我是在一台机器上部署两个WCF所以端口不一样,正常两台机器ip不一样端口相同)weight是一种负载算法 后文会详细说明
        server 192.168.25.23:9049 weight=3;  
        server 192.168.25.23:9047 weight=1;   

        #ip_hash; 

            # server 192.168.25.23:9049 ;  
        #server 192.168.25.23:9047 ;   


                 }

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
            #这里proxy_pass必须写,cluster.com与upstream  后面的名字是对应的,意思是nginx拦截http://cluster.com的请求,根据upstream 的负载规则进行负载均衡
            proxy_pass http://cluster.com; 
                #设置主机头和客户端真实地址,以便服务器获取客户端真实IP
            proxy_set_header X-Forwarded-Host $host;
            proxy_set_header X-Forwarded-Server $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header  X-Real-IP  $remote_addr; 

        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

配置好之后重启nginx

  1. client端的程序搭建

1)第一件事就是将 192.168.23.190 映射到本机的host中去,因为服务不提供给第三方使用,所以加host还是很轻松的。修改本地host文件:

192.168.23.130 cluster.com

cluster.com 域名与nginx配置文件 proxy_pass http://cluster.com; 这里是对应的。

2) 然后就是client端程序添加服务引用,因为添加了host映射,所以服务引用地址就是

http://cluster.com/MaterialService.svc

这里就直接写个demo

    static void Main(string[] args)
        {
            for (int i = 0; i < 20; i++)
            {
                var service = new ServiceReference1.MaterialServiceClient();

                var result = service.DoWork("");
                Console.WriteLine(result);
            }

            Console.ReadKey();
        }

最后执行代码,
这里写图片描述
这里我们配置的就是1:3的比例,我们看到确实如此,只需要通过cluster.com进行服务访问,nginx会自动给我复杂均衡,这就是我们开发中非常简单化的wcf复杂均衡。

nginx负载策略有五种:

  • 轮询(默认)
  • 指定权重
  • IP绑定 ip_hash
  • fair(第三方)
  • url_hash(第三方)

1、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

upstream  cluster.com{
        server 192.168.25.23:9049 ;  
        server 192.168.25.23:9047 ;   
   }

2、指定权重
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。

upstream  cluster.com{
        server 192.168.25.23:9049 weight=3;  
        server 192.168.25.23:9047 weight=1;   
}

3、IP绑定 ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

upstream  cluster.com{
        ip_hash; 
        server 192.168.25.23:9049 ;  
        #server 192.168.25.23:9047 ;   
                 }

4、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。

upstream  cluster.com{
        server 192.168.25.23:9049 ;  
        server 192.168.25.23:9047 ;   
        fair; 
                 }

5、url_hash(第三方)
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。

upstream  cluster.com{
         server 192.168.25.23:9049 ;  
        server 192.168.25.23:9047 ;   
         hash $request_uri; 
        hash_method crc32; 
  }

举个例子IP绑定 ip_hash:
在需要使用负载均衡的server中增加

proxy_pass http://cluster.com; 
upstream cluster.com{ 
ip_hash; 
server 127.0.0.1:9090 down; (down 表示单前的server暂时不参与负载) 
server 127.0.0.1:8080 weight=2; (weight 默认为1.weight越大,负载的权重就越大) 
server 127.0.0.1:6060; 
server 127.0.0.1:7070 backup; (其它所有的非backup机器down或者忙的时候,请求backup机器) 
} 

max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误

fail_timeout:max_fails次失败后,暂停的时间

总结

至此已经全部讲解完了nginx的安装,配置负载均衡算法,在实际应用中非常有用,希望对大家有帮助

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值