nginx+tomcat负载均衡搭建及梦林博客http://www.limlhome.cn/blog/?p=298

JDK安装:
进入/usr目录下,创建java文件夹,mkdir java
用rz命令上传到java目录下,并赋权限chmod 755 jdk-6u45-linux-i586.bin,然后./jdk-6u45-linux-i586.bin(注意,这个步骤一定要在jdk-6u45-linux-i586.bin所在目录下,就是java目录)

解压完毕后在java目录生成

配置环境变量:
vi /etc/profile,添加如下内容在:
LANGUAGE=CN
export language
JAVA_HOME=/usr/java/jdk1.6.0_45
export JAVA_HOME
export PATH=$JAVA_HOME/bin:$PATH
添加完成后保存并退出,让/etc/profile文件修改后立即生效,可以使用如下命令:source /etc/profile
java -version

输出版本证明jdk安装成功

 

安装依赖的软件包:
yum -y install gcc
yum -y install pcre*
yum -y install zlib
yum -y install zlib-devel
yum -y install openssl
yum -y install openssl openssl--devel

 

Nginx安装:

用rz命令上传到/usr/local目录下

解压:tar -zxvf nginx-1.3.15.tar.gz,解压完毕后在/usr/local文件夹下生成

 

cd nginx-1.3.15
./configure --prefix=/usr/local/nginx
make
make install

退出nginx-1.3.15进入nginx,再进入sbin目录,在sbin目录下能看到nginx启动文件,启动nginx服务,如果报下面的错误,就是80端口被占用了,netstat -ntlp找到占用80端口的pid,然后kill掉就好了

如果启动没有问题,执行/usr/local/nginx/sbin/nginx -t

测试ok,代表nginx安装成功,关闭apache,因为apache和nginx公用80端口(如果没安装apache,这步不用执行),关闭防火墙:service iptables stop,然后可以通过访问http://ip/看到nginx默认页面

 

Tomcat安装:
在/usr/local目录下,用rz命令将上传到当前目录/usr/local下,解压命令如下:tar zxvf apache-tomcat-7.0.41.tar.gz,在/usr/local目录下生成apache-tomcat-7.0.41文件夹,同时拷贝两个tomcat,命名为tomcat1,tomcat2
mv apache-tomcat-7.0.41 /usr/local/tomcat1
cp /usr/local/tomcat1 /usr/local/tomcat2 -r

 

分别修改tomcat1和tomcat2 端口,这里有三个端口需要修改,分别如下:
shutdown 端口:8005 主要负责启动关闭
ajp端口:8009主要负责通过ajp均衡(常用于apache和tomcat整合)
http端口:8080可以通过web页面直接访问(nginx+tomcat整合)
cd tomcat1/conf,找到配置文件server.xml,三个端口如下:

 

如果tomcat1三个端口分别为:8005 8009 8080 ,那么tomcat2端口在此基础上都+1,即为:8006 8010 8081,一台服务器上端口不能重复,否则会报错,cd  tomcat2/conf,找到配置文件server.xml

将上图中8005 8009 8080端口分别改成8006 8010 8081,修改完成后保存并退出

 

然后启动两个tomcat,启动命令为: /usr/local/tomcat1/bin/startup.sh,/usr/local/tomcat2/bin/startup.sh,启动后,使用netstat -tnl,可以看到6个端口

即代表tomcat1,tomcat2成功启动

 

使用http://ip:8080访问tomcat默认页面

 

使用http://ip:8081访问tomcat默认页面

 

如果需要修改tomcat发布目录为自己指定的目录,需要做如下调整,创建两个发布目录:
在usr目录下运行下面的命令,mkdir -p /usr/webapps/{www1,www2}
执行完命令后进入webapps目录下

可以看到创建好的两个发布目录www1和www2

 

编辑vi /usr/local/tomcat1/conf/server.xml,在最后</Host>前一行加入以下内容:<Context  path=""  docBase="/usr/webapps/www1" reloadable="false"/>

保存并退出

 

编辑vi /usr/local/tomcat2/conf/server.xml,在最后</Host>前一行加入以下内容:<Context  path=""  docBase="/usr/webapps/www2" reloadable="false"/>

保存并退出

 

在/usr/webapps/www1目录下,创建jsp文件,使用命令:touch test.jsp,在www1目录下看见刚被创建的test.jsp文件

 

编辑test.jsp文件的内容,,将下面的内容复制到test.jsp文件中,保存并退出

 

在/usr/webapps/www2目录下,创建jsp文件,使用命令:touch test.jsp,在www2目录下看见刚被创建的test.jsp文件

 

编辑test.jsp文件的内容,,将下面的内容复制到test.jsp文件中,保存并退出

 

重启tomcat1:在/usr/local/tomcat1/bin目录下,先执行./shutdown.sh,然后执行./startup.sh,在浏览器里访问http://192.168.121.187:8080/test.jsp,看到如下:

证明tomcat1启动正常,部署的页面可以显示

 

重启tomcat2:在/usr/local/tomcat2/bin目录下,先执行./shutdown.sh,然后执行./start.sh,在浏览器里访问http://192.168.121.187:8081/test.jsp,看到如下:

证明tomcat2启动正常,部署的页面可以显示

 

nginx+tomcat整合:
整合主要是修改nginx.conf配置,给一个完整的nginx.conf线上配置,部分参数可以自己根据实际需求修改:cd /usr/local/nginx/conf,找到nginx.conf,useradd www www(一个用户名,一个用户组)

上图中红框里是添加的注释以及包括已经修改过的,修改完后保存并退出,然后执行./nginx -t看是否报错(测试nginx配置是否成功),如果不报错就两次刷新浏览器,如果有不同结果,则证明配置成功(前提已启动两个tomcat)

 

如上配置,nginx+tomcat反向代理负载均衡配置完毕
nginx正向代理是Web容器,反向代理是负载均衡

不管替换nginx配置文件还是替换后端服务,不需要重启服务, nginx -s reload操作即可,老的请求用老的配置文件处理,新的请求用新的配置文件处理,老的请求处理完之后最后切换到新的配置文件
服务器性能处理能力一致用轮询,服务器性能处理能力不一致用权重,ip_hash,URL_hash,fair第三方

nginx配置文件(nginx.conf):

# user nobody # nginx父进程启动了一个子进程,它是以nobody启动的
nginx单进程单线程worker_processes 1,设置和cpu核数一致
worker_connections 1024; # 单个进程处理多少请求,最大连接数
http->include mime.types; # 引入的文件mime.types,它是映射的文件
http->default_type application/octet-stream(在mime.types里)
sendfile on; # 发送文件的开关,高效传输文件
keepalive_timeout ; # 长连接的超时时间
server->listen 80 # 监听80端口
server->server_name localhost # 服务名,也可以叫别的名字,外层是http,经过多个server,每个server可以有不同的路径
server->location / {root html; # 以root身份找到nginx下的html路径

                                index index.html index.htm} # 默认的index下有多个文件,以/分隔,如果想把别的路径加进来,可以在这行后面再加路径,按照顺序选,找到哪个是哪个,优先显示第一个
error_page 500 502 503 504 /50x.html; # 错误页面的返回码,在/50x.html页面下可以看到
location = /50x.html {root html;} # /50x.html在root下的html目录下

在nginx.conf配置文件下增加如下shell脚本,添加到server下,location /的下面:
location /status{stub_status on;
                        access_log off;
                        allow 127.0.0.1;
                        deny all; # 默认会把这行注释掉
                       }

 

修改配置文件,用./nginx -s reload命令重启服务,./nginx -V可以查看版本以及安装时配置的参数
use epoll; # 使用异步IO,效率高于同步IO,高并发
upstream后面跟着服务,server下的server_name也要改成服务,如下图:

 

下面这四行直接拿过来就行,主要关注第一行,nginx会代理转发到有效的server下,最终nginx请求的是http://127.0.0.1:9090/bbs,直接替换服务

1、轮询
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除
upstream backserver{
server 192.168.0.14;
server 192.168.0.15;
}

2、指定权重
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况
upstream backserver{
server 192.168.0.14 weight=10;
server 192.168.0.15 weight=10;
}

3、IP绑定ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题,一个人访问一个固定的ip
upstream backserver{
ip_hash;
server 192.168.0.14:88;
server 192.168.0.15:80;
}

先配置负载均衡列表upstream,然后起一个server

location后面的/代表监控所有路径
--with-http_stub_status_module # 监控nginx有多少个请求队列

原文地址:https://www.cnblogs.com/laosun0204/p/8735009.html