Nginx+负载均衡-2

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即可;

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,928评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,192评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,468评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,186评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,295评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,374评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,403评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,186评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,610评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,906评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,075评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,755评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,393评论 3 320
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,079评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,313评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,934评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,963评论 2 351

推荐阅读更多精彩内容