5.负载均衡

Linux环境下Nginx安装

1.安装nginx

http://nginx.org/en/download.html
cd /usr/local/src
wget http://nginx.org/download/nginx-1.17.4.tar.gz
tar -zxvf nginx-1.17.4.tar.gz
cd nginx-1.17.4
./configure (./configure --prefix=/usr/local/nginx)
make
make install (make && make install)

2.Nginx安装完成后进行初始化配置

1)进入解压后Nginx的conf目录对配置文件进行初始化
vi nginx.conf
在文件的头部配置Nginx打开进程数
worker_processes 4;
worker_cpu_affinity 0001 0010 0100 1000;
error_log /usr/local/nginx/nginx_error.log crit;
worker_rlimit_nofile 204800;
events {
use epoll;
worker_connections 204800;
}

3.启动Nginx命令

进入Nginx的sbin目录
启动:./nginx
重启:./nginx -s reload
停止:./nginx -s stop
测试:./nginx -t
启动出现问题1:
nginx: [error] invalid PID number “” in "/usr/local/nginx/logs/nginx.pid”
解决命令1:
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
启动出现问题2:
./nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory
解决命令2:(系统多少位验证:uname -a)
ln -s /usr/local/lib/libpcre.so.1 /lib64 ###64bit系统命令
ln -s /usr/local/lib/libpcre.so.1 /lib ###32bit系统命令
启动出现问题3:
nginx: [error] open() “/usr/local/nginx/logs/nginx.pid” failed (2: No such file or directory)
解决命令3:
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

4.Nginx启动后会至少有一个主进程,一个子进程运行

worker_processes 8;
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
error_log /usr/local/nginx/nginx_error.log crit;
worker_rlimit_nofile 204800;
events {
use epoll;
worker_connections 204800;
}
主进程用来管理所有子进程,子进程用来响应浏览器的请求
Nginx命令行:
https://www.nginx.com/resources/wiki/start/topics/tutorials/commandline/

TERM,INT 快速关闭进程,直接关闭
QUIT 优雅的关闭进程,有还在下载或工作的进行待工作完后关闭
KILL 直接关闭顽固进行,最暴力的方式
HUP 重新加载配置文件,并开启新进程,优雅的关闭旧进程
USR1 将原日志文件改名(改成备份文件仍写入),创建一个新的access.log,
使用命令后将写入到新日志文件
具体语法
kill -INT mpid
kill -HUP mpid 演示配置文件的软加载

kill –USR1 mpid

5.Nginx gzip压缩

gzip是最常见的压缩算法
sdch时google家的压缩方式,使用的不多,chrome可以,firefox就不支持
文档:http://nginx.org/en/docs/
server {

    gzip on; #是否开启on|off)
    gzip_min_length 1k; #不压缩临界值,大于1K的才压缩,一般不用改
    gzip_buffers 16 8k; #32 4k压缩在内存中缓冲几块就往外输出每块多大
    #gzip_http_version 1.0; #开始压缩的浏览器版本,可以不设置
    gzip_comp_level 8; #压缩级别越大文件越小但越占CPU资源,推荐6
    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png application/vnd.ms-fontobject font/ttf font/opentype font/x-woff image/svg+xml; 
    gzip_vary off; #是否往response header里头写入Vary: Accept-Encoding相当于一个压缩标志告知浏览器
    gzip_disable "MSIE [1-6]\."; #建议不对IE压缩客户端不支持正则验证
    locaton / {
    
    }

}
conf/ mime.types
gzip_types 文件类型
分块传输的,具体多大不展示

6.负载均衡

upstream webapp {
server 127.0.0.1:8080;
}
server {
location / {
proxy_pass http://webapp;
}
}

1、轮询(weight=1)

默认选项,当weight不指定时,各服务器weight相同,
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

upstream bakend {
server 192.168.1.10;
server 192.168.1.11;
}

2、weight
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
如果后端服务器down掉,能自动剔除。
比如以下配置,则1.11服务器的访问量为1.10服务器的两倍。

upstream bakend {
server 192.168.1.10 weight=1;
server 192.168.1.11 weight=2;
}

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

upstream resinserver{
ip_hash;
server 192.168.1.10:8080;
server 192.168.1.11:8080;
}

设备的状态有:
1、down 表示单前的server暂时不参与负载
2、weight 权重,默认为1。 weight越大,负载的权重就越大。
3、max_fails 允许请求失败的次数默认为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误
4、fail_timeout max_fails次失败后,暂停的时间。
5、backup 备用服务器, 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。

整体实例
upstream tel_img_stream {
#ip_hash;
server 192.168.11.68:20201;
server 192.168.11.69:20201 weight=100 down;
server 192.168.11.70:20201 weight=100;
server 192.168.11.71:20201 weight=100 backup;
server 192.168.11.72:20201 weight=100 max_fails=3 fail_timeout=30s;
}

说明:
1)、down 表示当前的server暂时不参与负载
2)、weight 默认为1.weight越大,负载的权重就越大。
3)、backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
4)、上例中192.168.11.72:20201 设置最大失败次数为 3,也就是最多进行 3 次尝试,且超时时间为 30秒。max_fails 的默认值为 1,fail_timeout 的默认值是 10s。
注意,当upstream中只有一个 server 时,max_fails 和 fail_timeout 参数可能不会起作用。

11、ab压力测试
ulimit -a 查看每个用户允许打开的最大文件数
ulimit -n 4096 将open files (-n) 1024 设置成open files (-n) 4096 这个命令使用工具执行只能暂时生效,只要一关闭就还原了
vi /etc/security/limits.conf

  • soft nofile 65536
  • hard nofile 65536
    centos安装ab
    如果使用rpm安装包,直接使用yum --install rpm包名
    如果不想安装apache但是又想使用ab命令,可以直接安装apache的工具包httpd-tools
    yum -y install httpd-tools

centos使用ab
ab -n 2000 -c 500 http://*:8000/recommend?companyCode=param
-n:请求数
-c:并发数
param:post你需要传的参数
*:是IP地址

增加并发的数量
1、 系统连接的打开数
2、 nginx的子进程打开数
增加统计模块
./configure --with-http_stub_status_module
server {
location /status {
stub_status on;
access_log off;
allow 172.105.120.105;
deny all;
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值