• nginx实现负载均衡


    一、负载均衡

    负载均衡就是将负载(工作任务,访问请求)进行平衡、分摊到多个操作单元(服务器,组件)上进行执行。是解决高性能,单点故障(高可用),扩展性(水平伸缩)的终极解决方案。

    根据此次做的实验来理解就是,当大量用户访问某个服务器时(即主服务器),为了减轻主服务器的负担,就会跳转到自己的子服务器上,实现均衡负载。

    二、反向代理与正向代理

    反向代理:代理的是服务器端

    正向代理:代理的是客户端

    三、用nginx实现负载均衡

    环境:三台centos7虚拟机

    1.先创建第一台虚拟机,等环境配置好后,另外两台直接克隆就可以

    这里,创建的第一台虚拟机作为主服务器,克隆的两台分别作为子服务器一、子服务器二

    2.装好虚拟机后,打开终端

    进入root:

    su root
    

     

    3.安装nginx

    先更新下rpm依赖库,配置两个源站

    rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
    

      

    再安装nginx

    yum -y install nginx
    

      

    4.安装maridab

    安装maridab

    yum -y install mariadb-server
    

      

    启动maridab

    systemctl start mariadb.service
    

      

    初始化maridab

    mysql_secure_installation
    

      

    5.安装php/fpm

    yum -y install php php-fpm
    

      

    6.更改nginx配置文件

    打开 default.conf

    vim /etc/nginx/conf.d/default.conf
    

      

    按下键盘上的 i 键进入编辑模式

    启动 nginx 和 php-fpm

    systemctl start php-fpm nginx
    

      

    7.编辑 index.php 文件,向网页中写入内容

    vim /usr/share/nginx/html/index.php
    

      

    按下键盘上的 i 键进入编辑模式

    输入:

    <?php echo '<p>******</p>'; ?>
    

      

    ******可替换为别的内容,只要在后边修改两个子服务器的php文件的内容不一样就行,为了能够肉眼看出实现负载均衡
    写完内容之后,:wq,保存并退出


    8.关闭防火墙及selinux
    systemctl status firewalld     //查看防火墙状态
    systemctl stop firewalld       //关闭防火墙
    setenforce 0            //关闭selinux
    

      

    9.完成以上操作后,关机,进行克隆

    选择虚拟机当前状态,创建完整克隆

    克隆完两台后,将三台虚拟机都开机

    10.修改php文件

    由于克隆的虚拟机中都已经安装和配置好nginx了,所以不需要再重新安装

    现在需要修改两台子服务器的 php 文件

    让php文件里的内容不一样,这样在网页上显示的时候就不一样,可以看出用户进行访问时,是用的哪台服务器

    vim /usr/share/nginx/html/index.php
    

      

    两台子服务器均进行以上操作

    可以将子服务器一的******换成*

    子服务器二的******换成**

    11.分别在克隆的虚拟机中查看两台子服务器的ip地址

    ifconfig
    

      

    12.再回到主服务器,修改nginx配置文件

    vim /etc/nginx/conf.d/default.conf
    

      

    按 i 进入编辑

    (1)将之前更改的 index.php 再改回 index.html

    (2)在文件的顶部添加以下模板的内容:

    upstream (启用功能)$名字  {
          server $IP/$Domain A;   
          server $IP/$Domain B;
    }
    

      

    如:

    upstream lcf  {
          server 192.168.149.131; //子服务器一的ip
          server 192.168.149.137;  //子服务器二的ip
    }
    

      

    (3)在server内部添加:proxy_pass http://$名字;

    location / {
    ……
    proxy_pass http://$名字;
         }
    }

      

    如:

    location / {
    ……
    proxy_pass http://lcf;
         }
    }
    

      

    (4):wq 保存并退出

    13.开启nginx服务

    systemctl start nginx
    

      

    14.查看主服务器的ip

    ifconfig
    

      

    在自己电脑的浏览器上输入主服务器的ip,进行访问

    多刷新几次,会发现页面显示的内容不一样,即实现了负载均衡

  • 相关阅读:
    Asp.Net 加密 web.config中的某个敏感信息
    异步模型中HttpWebRequest的Timeout
    WCF路由所有的请求到一个方法route all request to one operation
    .Net中直接操作内存
    【转】.NET AJAX实例
    【原】IE/FF 强制浏览器不读取缓存(强制刷新)
    【精】经典的css技巧
    【转】C#如何获取客户端/服务端IP地址
    【原】FireFox显示滚动条 [解决页面左右移动]
    【原】Function Import in Entity Framework 4 issue
  • 原文地址:https://www.cnblogs.com/canneddream/p/14934068.html
Copyright © 2020-2023  润新知