nginxday05学习记录--负载均衡/动静分离

1.nginx配置实例-负载均衡

1.实现效果
(1)浏览器地址栏输入http://192.168.44.128:8081/edu/a.html,负载均衡效果,平均8080和8081端口
2.准备工作
(1)主备两台tomcat服务器,一台8080,一台8081
(2)在两台tomcat里面webapps目录中,创建名称是edu文件夹,在edu文件夹中创建a.html,用于测试
3.在nginx的配置文件中进行负载均衡的配置
在http块中添加如下配置信息:

http {
 include       mime.types;
 default_type  application/octet-stream;
 upstream myserver{
 	server 192.168.44.127:8081;
 	server 192.168.44.128:8080;
 }

在server中的配置

server {
     listen       80;
     server_name  192.168.44.128;

     #charset koi8-r;

     #access_log  logs/host.access.log  main;

     location / {
         root   html;
         proxy_pass http://myserver;
         index  index.html index.htm;
     }

重启ngnix配置

[root@localhost sbin]# ./nginx -s reload
2.Nginx 提供了几种分配方式(策略)

1、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。
2、 weight
weight 代表权,重默认为 1,权重越高被分配的客户端越多
指定轮询几率, weight 和访问比率成正比,用于后端服务器性能不均的情况。

upstream server_pool{
server 192.168.5.21 weight=10;
server 192.168.5.22 weight=10;
}

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

upstream server_pool{
ip_hash;
server 192.168.5.21:80;
server 192.168.5.22:80;
}

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

upstream server_pool{
server 192.168.5.21:80;
server 192.168.5.22:80;
fair;
}
3.nginx配置实例–动静分离

动态请求和静态请求分离。
在这里插入图片描述
一种是纯粹把静态文件独立成单独的域名,放在独立的服务器上。
另一种方法是动态跟静态文件混合在一起发布,通过nginx来分开。
通过 location 指定不同的后缀名实现不同的请求转发。通过 expires 参数设置,可以使浏览器缓存过期时间,减少与服务器之前的请求和流量。
具体 Expires 定义:是给一个资源设定一个过期时间,也就是说无需去服务端验证,直接通过浏览器自身确认是否过期即可,所以不会产生额外的流量。此种方法非常适合不经常变动的资源。(如果经常更新的文件,不建议使用 Expires 来缓存),我这里设置 3d,表示在这 3 天之内访问这个 URL,发送一个请求,比对服务器该文件最后更新时间没有变化,则不会从服务器抓取,返回状态码304,如果有修改,则直接从服务器重新下载,返回状态码 200。
2.准备工作
(1)在linux系统中准备静态资源,用于进行访问
在这里插入图片描述
3.具体配置
(1)在nginx配置文件中进行配置

server {
    listen       80;
    server_name  192.168.44.128;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

    location /www/ {
        root   /data/;
        index  index.html index.htm;
    }
location /image/{
    root /data/;
    autoindex on;
}

重启ngnix:

[root@localhost sbin]# ./nginx -s reload
4.nginx高可用性准备工作

1.什么是nginx的高可用
在这里插入图片描述
在这里插入图片描述
(1)需要两台ngxin服务器
(2)需要keepalived
(3)需要虚拟ip
2.准备工作
(1)两台虚拟服务器
测试地址为192.168.44.128和192.168.44.127
(2)在两台服务器上安装nginx

cd nginx-1.12.2
./configure
make && make install
[root@localhost sbin]# pwd
/usr/local/nginx/sbin
[root@localhost sbin]# ./nginx -s reload

(3)在两台服务器上安装keepalived

yum install keepalived -y
[root@localhost usr]# rpm -q -a keepalived
keepalived-1.2.13-5.el6_6.x86_64
[root@localhost keepalived]# pwd
/etc/keepalived

4.配置
(1)修改/etc/keepalived/keepalived.conf

global_defs {
   notification_email {
    #acassen@firewall.loc
    #failover@firewall.loc
    #sysadmin@firewall.loc
   }
   #notification_email_from Alexandre.Cassen@firewall.loc
   #smtp_server 192.168.44.128
   #smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
vrrp_script chk_http_port {
	script "/usr/local/src/nginx_check.sh"
	interval 2 #(检测脚本执行的间隔)
	weight 2
}
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 123456
    }
    virtual_ipaddress {
        192.168.44.50
    }
}

(2)在/usr/local/src下添加检测脚本

#!/bin/bash
A=`ps -C nginx – no-header |wc -l`
if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx
sleep 2
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi

(3)把两台机器上nginx和keepalived启动

[root@localhost sbin]# service keepalived start
Starting keepalived:                                       [  OK  ]
[root@localhost keepalived]# ps -ef | grep keepalived
root       6093      1  0 17:16 ?        00:00:00 /usr/sbin/keepalived -D
root       6094   6093  0 17:16 ?        00:00:00 /usr/sbin/keepalived -D
root       6095   6093  0 17:16 ?        00:00:00 /usr/sbin/keepalived -D
root       6101   5414  0 17:17 pts/2    00:00:00 grep keepalived
[root@localhost keepalived]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:4a:34:25 brd ff:ff:ff:ff:ff:ff
    inet 192.168.44.127/24 brd 192.168.44.255 scope global eth0
    inet 192.168.44.50/32 scope global eth0
    inet6 fe80::20c:29ff:fe4a:3425/64 scope link 
       valid_lft forever preferred_lft forever
3: pan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN 
    link/ether fe:bf:e8:88:76:9e brd ff:ff:ff:ff:ff:ff

5.访问绑定网址
192.168.44.50

5.nginx的原理

在这里插入图片描述

[root@localhost keepalived]# ps -ef | grep nginx
root      26941      1  0 09:19 ?        00:00:00 nginx: master process ./nginx
nobody    26972  26941  0 09:23 ?        00:00:00 nginx: worker process
root      54169  54020  0 12:58 pts/2    00:00:00 grep nginx

2.worker是如何进行工作的
在这里插入图片描述
3.一个master和多个woker有好处
(1)可以使用nginx -s reload热部署
(2)每个worker都是独立占用进程,如果有其中一个worker出现问题,其他woker独立的,继续进行争抢,实现请求过程,不会造成服务中断
4.设置多少个worker才是最合适
io多路复用进制(linux)
woker数和服务器的cpu数相等是最为适宜的
5.连接数woker_connection
第一个:发送请求,占用了worker几个连接数(2个或者4个)
第二个:nginx有一个master,有4个worker,每个woker支持最大的连接数是1024,支持的最大的并发量是多少?
woker_connections*woker_processes/2
1024或者2048

6.安装遇到的问题

./nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such
解决链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值