nginx负载均衡配置详解
负载均衡在现在电商中是很常见的,主流的负载均衡有nginx,LVS和SLB等等。其中nginx的负载均衡是应用的很广泛的,在中小企业中应用的最多。
本次实验中是一台Centos7和一台Cenos6.8
Cenos7上面做nginx+tomcat nginx做负载均衡 tomcat做后端服务
Cenos6.8上面做nginx nginx做后端服务
在Centos7上做nginx
上传包nginx包
nginx-1.13.9.tar.gz
安装需要到的包
yum install gcc gcc-c++ pcre* zlib-devel openssl-devel gd-devel php php-mysql php-fpm -y
解压包
tar -zxvf nginx-1.13.9.tar.gz
进入目录
cd nginx-1.13.9
安装编译
./configure --prefix=/usr/local/nginx --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-http_image_filter_module --with-http_slice_module --with-mail --with-threads --with-file-aio --with-stream --with-mail_ssl_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-pcre --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module && make && make install
启动Nginx
/usr/local/nginx/sbin/nginx
查看ip 地址
有页面说明启动成功
nginx安装完成了
安装tomcat
创建一个java目录
在/usr/local/java的目录分别创建两个目录 jdk tomcat
分别把jdk和tomcat包放入相应的目录里
jdk-8u144-linux-x64.tar.gz
apache-tomcat-8.5.23.tar.gz
解压jdk
tar -zxvf jdk-8u144-linux-x64.tar.gz
更改环境变量
vi /etc/profile
#set java environment
export JAVA_HOME=/usr/local/java/jdk/jdk1.8.0_144 #jdk路径
export JRE_HOME=/usr/local/java/jdk/jdk1.8.0_144/jre #jdk路径
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JRE_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
生成环境变量
source /etc/profile
验证java环境
java -version
解压tomcat
tar -xvf apache-tomcat-8.5.23.tar.gz
在tomcat添加jdk的环境变量的路径
进入tomcat目录的bin里面
vi setclasspath.sh
export JAVA_HOME=/usr/local/java/jdk/jdk1.8.0_144 #Jjdk路径
export JRE_HOME=/usr/local/java/jdk/jdk1.8.0_144/jre
在bin里面启动tomcat
./startup.sh
在浏览器访问ip:8080 有tomcat的画面说明tomcat启动成功
在另一个台Centos6.8上部署nginx,也可以是其他服务 比如tomcat apache 都可以
此处用nginxweb服务,部署和上面是一样的。
完成后开始配置负载均衡
Nginx的负载均衡配置主要用到upstream模块
在http字段里加入
upstream fengxiao {
server 192.168.3.236:8080; #是Cenos7上的tomcat
server 192.168.3.234:80; #是Centos6.8上的nginx
}
在location里加入
location / {
root html;
index index.html index.htm;
proxy_pass http://fengxiao;
}
重启nginx
/usr/local/nginx/sbin/nginx -s reload
现在访问192.168.3.236 多刷新几次就会发现 一会是nginx 一会是tomcat页面说明基本的负载均衡配置成功。
目前配置到此处
昨日太困了,今天继续更新负载均衡配置
目前的配置是两台nginx实现的负载均衡
一台服务器要做负载均衡上面同样有页面
另一台服务器只有web服务
配置省略了
直接配置负载均衡
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#负载均衡配置
#增加权重weight 暂时不能用down 备份服务backup当其他服务都忙时请求此服务器 103.106在3次请求失败,nginx在5分钟内,不会将新的请求分>配给它。
upstream fengxiao {
server 192.168.0.103:81 weight=6 max_fails=3 fail_timeout=300;
server 192.168.0.106:81 weight=1 max_fails=3 fail_timeout=300 backup;
}
sendfile on;
keepalive_timeout 65;
#负载均衡server
server {
listen 80;
server_name localhost;
location / {
# root html;
# index index.html index.htm;
proxy_pass http://fengxiao;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 81;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
}
}
上面是我配置的负载均衡文件
注意负载均衡的server和放web服务的端口不能一样,需要更换一个端口
upstream fengxiao {
server 192.168.0.103:81 weight=6 max_fails=3 fail_timeout=300;
server 192.168.0.106:81 weight=6 max_fails=1 fail_timeout=300 backup;
}
重要的是这里 weight设置权重 权重越大访问的几率越大 max_falls设置失败的次数 fail_timeout设置失败后此web服务多久能再次访问 backup是其他服务都在忙的时候访问此服务器web。
除了nginx本身的负载均衡策略还有第三方模块的负载
这个模块根据web服务器响应时间策略来负载均衡
下载fair模块源码
下载地址:https://github.com/xyang0917/nginx-upstream-fair
把这个模块配置编译进nginx里
此处省略,前几天的博客里有
upstream fengxiao {
fair;
server 192.168.0.103:81 ;
server 192.168.0.106:81 ;
}
检查nginx配置 重启
url_hash 此种负载均衡在1.7以后就集成到Nginx里了不需要特别添加,此种负载均衡把固定的url固定访问到同一台后端服务器上
upstream fengxiao {
server 192.168.0.103:81 ;
server 192.168.0.106:81 ;
hash $request_uri;
}
负载均衡暂时更新到此处
点一杯星巴克