美文网首页
Nginx+负载均衡-2

Nginx+负载均衡-2

作者: 空留灯半盏 | 来源:发表于2018-07-14 21:12 被阅读0次

Nginx+负载均衡-2

rewrite重写

规则

语法: location 配置 (注: 需要pcre才能开启此模块)

前缀含义
location =  /uri    精确匹配(必须全部相等)
location ^~ /uri     匹配指定字符开头
location ~  pattern   区分大小写
location ~* pattern  不区分大小写
location /         通用匹配,任何请求都会匹配到 

例如

#精确匹配,网址:http://www.example.com/
location = / {}

#区分大小写 
location ~ /Example/ {}
http://www.example.com/Example/  [成功]
http://www.example.com/example/  [失败]

#不区分大小写 
location ~* /Example/ {}

#匹配指定字符开头
location ^~ /img/ {}
#http://www.example.com/img/a.jpg   [成功]
#http://www.example.com/img/b.mp4   [成功]
#http://www.example.com/video/b.mp4 [失败]

动静分离

准备两台服务器,分别为apache和nginx

修改nginx 配置文件 apache处理php nginx 处理图片

server {
    #监听端口
    listen 80;
    
    #请求php文件则交给大括号处理
    location ~ \.php$ {
        #重写交给指定服务器的指定端口处理
        proxy_pass http://192.168.159.131:8082;
    }
    
    #请求图片则交给大括号处理
    location ~ \.(gif|jpg|jpeg|png)${
        #重写交给指定服务器指定端口处理
        proxy_pass http://192.168.159.131:8081;
    }
}

server{
    #监听端口
    listen 8081;
    
    location / {
    项目跟目录
    root /php/wwwroot/wev2;
    location / {
        #项目根目录
        root /php/wwwroot/web2;
        #默认首页
        index index.html index.htm;
    }
}       

修改配置文件后需要重启服务

vi /php/server/nginx/sbin/nginx -s reload

修改apache配置文件启动服务

vi /php/server/apache/conf/httpd.conf

#apache 服务端口修改为8082
Listen 8082;

重启apache服务

/php/server/apache/bin/Apachectl start

关闭防火墙/将端口8081/8082添加到防火墙例外

service iptable stop #关闭防火墙
vi  /etc/sysconfig/iptables  #添加防火墙例外

运维架构设计方案

架构设计(使用冗余策略,增加备用服务器监控活动服务器)

高可用服务器搭建

什么是HA

HA是英文High Available的缩写,指高可用服务器

当活动服务器出现故障,导致用户无法访问,则使用备用服务器

如何使用高可用服务器(HA)
冷备
活动服务器出现故障,收到阿里云短信报警,需要运营人员手动备用服务器
热备
通过第三方软件( keepalived ),监控活动服务器,当出现故障自动切换到备用服务器
介绍keepalived

什么是keepalived : 就是一个高可用软件

用来检测服务器状态,用来防止单点故障的发生,保证业务的正常运行

原理:

                ->主服务器
用户->VIP(虚拟IP)
               ->备用服务器

安装keepalived

安装: yum -y install keepalived
管理: service keepalived start/stop/restart #启动/关闭/重启
配置文件: /etc/keepalived
日志文件: /var/log/messages
配置部署keepalived

至少准备两台服务器(查看ip信息)

分别在两台服务器上安装nginx并访问测试 (安装具体见上一将)

分别在两台服务器上安装keepalived

yum -y install keepalived

分别查看两台服务器网卡 ip a

配置活动服务器

vi /etc/keepalived/keepalived.conf

留下配置文件第一行 并将其与代码替换以下代码
#健康检查配置
vrrp_script check_web {
    #监控本机80端口
    script "</dev/tcp/127.0.0.1/80"
    interval 2  #每隔2秒中检测一次
    fall 2      #检查2次异常则切换备用服务器
    rise 1      #检查正常次数
}

#虚拟路由
vrrp_instance VI_1 {
    state MASTER            #活动服务器(MASTER) 备用服务(BACKUP)
    interface eth0          #绑定的网卡
    virtual_router_id 51    #虚拟路由器的ID,有效范围为0-255
    priority 100            #优先级
    advert_int 1            #健康检查时间
    authentication {        #身份认证
        auth_type PASS
        auth_pass 1111
    }

    track_script {          #健康检查脚本
        check_web
    }

    virtual_ipaddress {     #VIP(虚拟IP地址)
        192.168.159.200
    }
}
#注:修改VIP 和绑定网卡

启用/重启活动服务器/备份服务器

访问测试....

负载均衡

负载均衡架构图

负载均衡.png

负载均衡策略

轮询: 将请求依次轮询发给每个服务器

权重: 服务器的权重越高,处理请求的概率越大

ip哈希: 通过哈希函数决定请求发送给哪个服务器

最少连接: 将请求发给持有活动连接的服务器.

语法(修改nginx配置文件)
http {
    #设定负载均衡的服务器列表 phpServers 可以写网址或ip或其他英文
upstream phpServers {
    #默认轮询
    #权重     server 服务器IP:端口 weight=3;
    #ip哈希  ip_hash;
#最少连接 least_conn;
        server 服务器IP:端口;
        server 服务器IP:端口;
        server 服务器IP:端口;
    }

    server {
        listen 80;

        location / {
            # 当80端口有请求的时候交给上面定义的负载均衡器处理(phpServers)
            proxy_pass http://phpServers;
        }
    }
}

SESSION共享

明确: session存储在服务端(打开php配置文件可以查看存储路径)

发现: 由于实现了复制均衡的轮询策略导致session丢失

解决

使用ip哈希负载均衡策略

session入库(将session保存的数据库中)

实现

准备主服务器(注: 实现轮询结果)

server {
    Listen 80;
    server_name   localhost;
    #charset koi8-r;
    $access_log logs/host.access.log  main;
        location / {
            #现在: 所有请求交给负载均衡器处理
            #解释: 当80端口有请求的时候交给上面定义的负载均衡器处理(phpServer)
            proxy_pass  http://phpServers;
            #之前: 所有的请求访问html目录下的文件
            #root  html;
            #index  index.html  index.htm
        }
    #error_page  404  /404.html
    #redirect  server error pages to the static page /50x.html
}

打开从服务器的nginx配置文件

在server{

    location ~ \.php$ {
        root            站点目录(比如 /php/wwwroot/web1);
        fastcgi_pass    127.0.0.1:9000;
        fastcgi_index    index.php
        fastcgi_param     SCRIPT_FILENAME   站点目录/$fastcgi_script_name;
        include           fastcgi_params;
        }
    .....
}

重启服务..

/php/server/nginx/sbin/nginx -s reload

在从A服务器站点目录中创建test.php文件并写入session代码打印

<?php
   session_start();
$_SESSION['TEST'] = 'xxsdxas';
   print_r($_SESSION)'

在从B服务器创建..

<?php
 session_start(); 
print_r($_session);
session负载均衡丢失.png

修改配置文件

vi /phpserver/nginx/conf/nginx/conf

upstream phpServers {
    ip_hash;
    server 192.168.80.88;
    server 192.168.80.89;
}

重启服务...

发现只能查看到一台服务器(hash原因) 每次就只能访问一个服务器读取session 并在B服务器上设置session即可;

相关文章

  • Nginx+负载均衡-2

    Nginx+负载均衡-2 rewrite重写 规则 语法: location 配置 (注: 需要pcre才能开启...

  • Fiori-like Prototype ( F5 Nginx

    F5 + Nginx Apache Tomcat F5 Nginx+ Apache Tomcat 配置集群负载均衡...

  • Nginx+负载均衡

    Nginx+负载均衡 服务器介绍 概念 服务器: 就是没有显示器的主机 WEB服务器: 就是一个软件(监听80端口...

  • centos7 下nginx+tomcat集群出现13: Per

    在centos7下用nginx+ tomcat搭建负载均衡集群。ng ,tomcat都是启动的,分别都可以访问,但...

  • 架构运维篇(四):Centos7/Linux中Tomcat安装H

    上一篇 架构运维篇(三):Centos7/Linux安装部署Nginx+多Tomcat负载均衡入门实践 简介 前三...

  • Nginx-进阶学习

    目录: Nginx集群和负载均衡 一、Nginx集群和负载均衡 1、集群 2、负载均衡-权重(1)负载均衡-轮训:...

  • ribbon

    1.Ribbon 2.客户端负载均衡 3.服务端的负载均衡 4.负载均衡算法

  • Nginx 负载均衡 多种方法

    1.轮询负载均衡 (需要请求 session时建议不要用 。如登录等) 2.权重负载均衡 3.hash负载均衡 (...

  • 负载均衡算法

    1.什么是负载均衡 对系统中的负载情况进行调整,尽量减小系统中各个节点负载不均衡的情况 2.负载均衡的算法 轮询:...

  • 关于负载均衡的总结

    负载均衡的分类 常见的分为三类,dns负载均衡,硬件负载均衡,软件负载均衡 dns负载均衡 一般实现地域级别的负载...

网友评论

      本文标题:Nginx+负载均衡-2

      本文链接:https://www.haomeiwen.com/subject/uyfupftx.html