首页 > 系统 > Linux >

Nginx负载均衡-----------减轻服务器压力

2017-03-22

Nginx负载均衡-----------减轻服务器压力。

Nginx负载均衡-----------减轻服务器压力。

配置环境,安装包下载
系统Linux CentOS 6.5
Tomcat:6.0,7.0(两个不同版本的方便测试)
Nginx安装包及其依赖包:CSDN下载地址
1.安装gcc 和 c++编译包
检测是否安装编译包命令:(安装会打印版本信息)

# Gcc –v 
--或者
# rpm -ql gcc

卸载已安装编译包命令:

# rpm -e gcc [-nodepts]

联网安装命令:

# yum -y install gcc
# yum install -y gcc gcc-c++

开始安装界面:
这里写图片描述

这里写图片描述vc3izfijrLCy17C/ycTc0OjSqtK7ts7KsbzkxM3QxLXItP08L3A+DQo8aHIgLz4NCjxwPjxzdHJvbmc+Mi6wstew0sDAtbD8PC9zdHJvbmc+PGJyIC8+DQrSwLTOsLLXsMuz0PLOqqO6PGJyIC8+DQpvcGVuc3NsLWZpcHMteC54LngudGFyLmd6PGJyIC8+DQp6bGliLXgueC54LnRhci5nejxiciAvPg0KcGNyZS14Lnh4LnRhci5nejxiciAvPg0Kbmd4X2NhY2hlX3B1cmdlLXgueC50YXIuZ3o8L3A+DQo8aHIgLz4NCrCy17BvcGVuc3NsPGJyIC8+DQq94tG5DQo8cHJlIGNsYXNzPQ=="brush:sql;"> # tar -zxvf openssl-fips-2.0.9.tar.gz

进入解压目录

# cd openssl-fips-2.0.9

安装(./config –prefix=安装目录)

# ./config --prefix=/usr/local/nginx
# make && make install

这里写图片描述

这里写图片描述


安装zlib
解压
# tar -zxvf zlib-1.2.8.tar.gz 

进入解压目录

# cd zlib-1.2.8

安装(./configure –prefix=安装目录)

# ./configure --prefix=/usr/local/nginx
# make && make install

zlib安装

zlib安装


安装pcre
解压
# tar -zxvf pcre-8.37.tar.gz 

进入解压目录

# cd pcre-8.37

安装(./configure –prefix=安装目录(绝对路径))

# ./configure --prefix=/usr/local/nginx
# make && make install

pcre安装

pcre安装


安装ngx_cache_purge(解压即可)
解压
# tar -zxvf ngx_cache_purge-2.2.tar.gz

3.安装Nginx
解压

# tar -zxvf nginx-1.9.2.tar.gz

进入解压目录

# cd nginx-1.9.2

安装Nginx(./configure –prefix=安装目录 –with-pcre=解压目录 –with-zlib=解压目录 –with-openssl=解压目录)

# ./configure --prefix=/usr/local/nginx --with-pcre=/usr/local/nginx-gz/pcre-8.37 --with-zlib=/usr/local/nginx-gz/zlib-1.2.8 --with-openssl=/usr/local/nginx-gz/openssl-fips-2.0.9
# make  && make install

Nginx安装

Nginx安装

安装 pcre-devel 包
# yum -y install pcre-devel

pcre-devel安装


4.配置缓存
./configure –add-module=ngx_cache_purge解压目录
–prefix=nginx安装目录
–with-openssl=解压目录
–with-zlib=解压目录
–with-http_stub_status_module –with-http_ssl_module

# ./configure --add-module=/usr/local/nginx-gz/ngx_cache_purge-2.2 --prefix=/usr/local/nginx --with-openssl=/usr/local/nginx-gz/openssl-fips-2.0.9 --with-zlib=/usr/local/nginx-gz/zlib-1.2.8 --with-http_stub_status_module --with-http_ssl_module

配置缓存


编译
【此时不用make install,只编译就行,编译后二进制文件在源码包objs目录下】

# make

编译
替换原来的nginx的二进制文件:
cp 解压目录/nginx-1.9.2/objs/nginx 安装目录/sbin/

# cp /usr/local/nginx-gz/nginx-1.9.2/objs/nginx /usr/local/nginx/sbin/

5.检测
检查80端口是否占用

# netstat -ano |grep 80

检测是否安装成功
启动Nginx

# cd /usr/local/nginx/sbin
# ./nginx

到网页输入改虚拟机地址出现一下内容就为成功
检测Nginx


6.配置负载均衡
在 conf文件下添加修改如下配置并重启
gzip.conf

gzip on;
gzip_min_length   1k;
gzip_buffers      4 16k;
gzip_http_version 1.1;
gzip_comp_level   2;
gzip_types        text/plain application/x-javascript text/css application/xml;
gzip_vary on;

nginx.conf
其中:
upstream mysvr配置两个我们要访问的服务器,当压力不同时会自动进行分配
server配置我们实际访问的地址,也就是虚拟机主机的端口、名字、编码格式

#运行用户 
user  nobody nobody; 
#启动进程 
worker_processes  2; 
#全局错误日志及PID文件 
error_log  logs/error.log notice; 
pid        logs/nginx.pid; 
#工作模式及连接数上限 
events { 
        use epoll; 
        worker_connections      1024; 
} 
#设定http服务器,利用它的反向代理功能提供负载均衡支持 
http { 
        #设定mime类型 
        include       mime.types; 
        default_type  application/octet-stream; 
        #设定日志格式 
        log_format main         '$remote_addr - $remote_user [$time_local] ' 
                                                '"$request" $status $bytes_sent ' 
                                                '"$http_referer" "$http_user_agent" ' 
                                                '"$gzip_ratio"'; 
        log_format download '$remote_addr - $remote_user [$time_local] ' 
                                                '"$request" $status $bytes_sent ' 
                                                '"$http_referer" "$http_user_agent" ' 
                                                '"$http_range" "$sent_http_content_range"'; 
        #设定请求缓冲 
        client_header_buffer_size    1k; 
        large_client_header_buffers  4 4k; 
        #开启gzip模块 
        gzip on; 
        gzip_min_length  1100; 
        gzip_buffers     4 8k; 
        gzip_types       text/plain; 
        output_buffers   1 32k; 
        postpone_output  1460; 
        #设定access log 
        access_log  logs/access.log  main; 
        client_header_timeout  3m; 
        client_body_timeout    3m; 
        send_timeout           3m; 
        sendfile                on; 
        tcp_nopush              on; 
        tcp_nodelay             on; 
        keepalive_timeout  65; 
        #设定负载均衡的服务器列表 
        upstream mysvr { 
                #weigth参数表示权值,权值越高被分配到的几率越大 
                #本机上的Squid开启3128端口 
                server 192.168.0.110:8080   weight=1; 
                server 192.168.0.121:8080   weight=5; 
        } 
        #设定虚拟主机 
        server { 
                listen          8086; 
                server_name     gkNginx; 
                charset gb2312; 
                #设定本虚拟主机的访问日志 
                access_log  logs/www.yejr.com.access.log  main; 
                #如果访问 /img/*, /js/*, /css/* 资源,则直接取本地文件,不通过squid 
                #如果这些文件较多,不推荐这种方式,因为通过squid的缓存效果更好 
                location ~ ^/(img|js|css)/  { 
                        root    /data3/Html; 
                        expires -1; 
                } 
                #对 "/" 启用负载均衡 
                location / { 
                        proxy_pass      http://mysvr; 
                        proxy_redirect          off; 
                        proxy_set_header        Host $host; 
                        proxy_set_header        X-Real-IP $remote_addr; 
                        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for; 
                        client_max_body_size    10m; 
                        client_body_buffer_size 128k; 
                        proxy_connect_timeout   90; 
                        proxy_send_timeout      90; 
                        proxy_read_timeout      90; 
                        proxy_buffer_size       4k; 
                        proxy_buffers           4 32k; 
                        proxy_busy_buffers_size 64k; 
                        proxy_temp_file_write_size 64k; 
                } 
                #设定查看Nginx状态的地址 
                #location /NginxStatus { 
                       # stub_status             on; 
                       # access_log              on; 
                       # auth_basic              "NginxStatus"; 
                       # auth_basic_user_file  conf/htpasswd; 
                #} 
        } 
} 

修改这两个文件之后记得重新加载配置文件并且测试
在sbin目录下重新加载配置文件,并重启

# ./nginx -s reload

重启完成之后我们输入配置的虚拟IP进行测试:
这里写图片描述

这里写图片描述

从图中我们可以看到我们同一个地址访问了两个不同的Tomcat,这样我们的负载均衡就配置成功了。


下面附一些Nginx常用的命令:
启动ngnix
安装目录/sbin/ngnix –s reload 重启
安装目录/sbin/ngnix –s stop 停止
安装目录/sbin/ngnix –s start 启动

nginx -s reload :修改配置后重新加载生效
nginx -s reopen :重新打开日志文件
nginx -t -c /path/to/nginx.conf 测试nginx配置文件是否正确

开机启动
shell加入系统服务即可
chmod +x /etc/rc.d/init.d/nginx (设置可执行权限)
chkconfig –add nginx (添加系统服务)

相关文章
最新文章
热点推荐