负载均衡在现在电商中是很常见的,主流的负载均衡有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;
}

负载均衡暂时更新到此处

点一杯星巴克

nginx负载均衡心跳 nginx 负载均衡配置详解_运维