Linux下Nginx+Tomcat负载均衡的实现
Linux下Nginx+Tomcat负载均衡的实现
配置与安装文档
作者:康翡
完成日期:2016-7-25
- 虚拟机与centos7的安装
- 准备工作
分别下载VMware Workstation 10 与 centos7
下载地址: 百度云http://pan.baidu.com/s/1c0yG7fE 密码:9egy
http://mirrors.163.com/centos/7.2.1511/isos/x86_64/
-
- 安装VMware10
由于安装过程比较简单并且过程较长,并且百度有详细教程,所以在此不再赘述。不过有以下几点需要注意:
- 许可证密匙: 5F4EV-4Z0DP-XZHN9-0L95H-02V17 本人用的
- 出现了"Software Updates"(软件升级)页面,去掉默认的勾,即不进行软件升级。
- 出现了"User Experience Improvement Program"(程序用户体验改进)页面,去掉默认的勾,即不参与用户体验。
软件完成安装效果图如下:
至此,VMware虚拟机已经安装成功了。
-
- 在VM10上安装centos 7
可以参考:http://www.centoscn.com/image-text/setup/2014/0723/3341.html
注意几点:
- 在网络类型选择这一步,如果用于本机测试(比如本例),就可以选用NAT模式
要是不同机器,需使用桥接模式(即第一个)
- 在本机上并没有以下这一步:
但是本人在网吧测试(本人电脑太卡)时,点击安装虚拟机时系统提示不支持虚拟化(大概意思),解决办法:
如果你的计算机硬件支持虚拟化的话。
重启电脑,在开机时按F2进入bios模式,将虚拟化开关打开即可。
解决方式如下图:
将上图中的Disabled改成enabled就可以解决。
- 在进行到下图这一步时:
需要注意:
右边的文件系统 除了swap其它都选择最上面的ext4,swap就选择swap即可。
需要的内存按默认的20G就行。
然后按步骤等待安装完成即可。安装过程中有询问则按 1、2、q、yes顺序即可
出现如下界面即代表成功安装(注:网络截图和本机安装有所区别)
- 在centos 7下Nginx服务器的配置
2.1 Nginx服务器的安装
说明:不知道观看者是否了解linux命令,所以都有解释。若是大牛,可忽略,无意冒犯。以下命令行众多,若有纰漏或者错误很抱歉。可以联系本人或者百度。
具体步骤:
- 用自带的火狐浏览器(左上角应用程序)-->百度Nginx—>进入Nginx News网站(官网)—>下载nginx(本人所用版本为nginx-1.8.1.tar.gz)-->等待下载完成后退出
- 点击左上角应用程序—>打开
以下是全部命令(注意:以下()内都为解释):
su(进入root模式)-->输入密码—>cd /(有空格)-->cd /home/kangfei/下载(不能敲汉字可从windows系统中复制粘贴)-->tar –zxvf nginx-1.8.1.tar.gz(zxvf后有空格输入 空格一般只有一个 按tab键可以自动补全)
-->cd nginx-1.8.1-->./configure-->这个时候可能会报错(error c complier….)
错误一解决方案如下:
-->su(输入密码)--> yum -y install gcc gcc++ autoconf automake(等待完成)--> cd /home/kangfei/下载-->cd nginx-1.8.1-->./configure-->这个时候可能会报错(error the HTTP….)
错误二解决方案如下:
-->su(输入密码)-->yum -y install pcre pcre-devel(等待完成)-->./configure这个时候可能会报错(error the HTTP zlip...)
错误三解决方案如下:
-->yum -y install zlip zlip-devel--> -->./configure-->make-->make install
-->/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf(启动nginx服务器 如启动失败则以root身份运行 su…)
至此,Nginx服务器已经安装完毕.
2.2 测试
打开火狐浏览器,在地址栏输入localhost或者127.0.0.1,若出现欢迎界面,即代表Nginx服务器安装成功。(本机80端口被占用,所以改为81端口)
- JDK的安装
以下步骤和Nginx的安装步骤类似:
先到火狐浏览器下载JDK,本人为jdk1.8.0_101.tar.gz版本
su-->输入密码
cd /home/kangfei/下载
tar -zxvf jdk-tab(tab键自动补全)
cd /usr/local
mkdir jdk(创建jdk文件夹)
cd /home/kangfei/下载
mv jdk1.8.0_101/ /usr/local/jdk/(将下载目录解压的文件夹jdk移动到usr/local/jdk下)
cd /usr/local
cd jdk
mv jdk1.8.0_101/ /usr/local/(将下载目录解压的文件夹jdk移动到usr/local下)
cd ../
rm -rf jdk
mv jdk1.8.0_101/ jdk
vi /etc/profile
在文件最后添加以下代码(tomcat、tomcat2之后安装):
JAVA_HOME=/usr/local/jdk
CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib:$JAVA_HOME/bin
export JAVA_HOME CLASSPATH
CATALINA_BASE=/usr/local/tomcat
CATALINA_HOME=/usr/local/tomcat
export CATALINA_BASE CATALINA_HOME
CATALINA2_BASE=/usr/local/tomcat2
CATALINA2_HOME=/usr/local/tomcat2
export CATALINA2_BASE CATALINA2_HOME
TOMCAT_HOME=/usr/local/tomcat
export TOMCAT_HOME
TOMCAT2_HOME=/usr/local/tomcat2
export TOMCAT2_HOME
source /etc/profile
可以通过以下命令验证JDK是否安装成功:
java –version
- tomcat的安装和相关配置
同样的步骤在浏览器中下载tomcat 后缀名为tar.gz即可
su
输入密码
cd /home/kangfei/下载
tar -zxvf tomcat-tab(tab键自动补全)
mv apache-tomcat-7.0.70 /usr/local/
mv apache-tomcat-7.0.70 tomcat
cd /tomcat/bin
安装成功 启动:
cd /usr/local/tomcat/bin
./startup.sh
关闭则为:
./shutdown.sh
若需要关闭防火墙,则输入:
关闭防火墙:iptables -F INPUT
按同样步骤可在/usr/local/下再安装一个Tomcat2
需要解决以下几个问题:
- 不同的tomcat启动和监听不同的端口
- 不同的tomcat的启动文件startup.sh和关闭文件shutdown.sh要指定各自的CATALINA_HOME和CATALINA_BASE这两个环境变量
解决步骤:
- 修改/etc目录下的profile文件,在文件末尾添加一组环境变量,和两组CATALINA环境变量。对应的命令为: vi /etc/profile,添加的命令为(上面已配):
JAVA_HOME=/usr/local/jdk
CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib:$JAVA_HOME/bin
export JAVA_HOME CLASSPATH
CATALINA_BASE=/usr/local/tomcat
CATALINA_HOME=/usr/local/tomcat
export CATALINA_BASE CATALINA_HOME
CATALINA2_BASE=/usr/local/tomcat2
CATALINA2_HOME=/usr/local/tomcat2
export CATALINA2_BASE CATALINA2_HOME
TOMCAT_HOME=/usr/local/tomcat
export TOMCAT_HOME
TOMCAT2_HOME=/usr/local/tomcat2
export TOMCAT2_HOME
- 第一个解压在/usr/local/tomcat下的tomcat不需要做任何改动,我们只要改变/usr/local/tomcat2下的第二个tomcat即可。
A、vi /usr/local/tomcat2/conf/server.xml
端口:8005-->9005
<Server port="9005" shutdown="SHUTDOWN">
端口:8080-->9080
<Connector port="9080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
端口:8009-->9009
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="9009" protocol="AJP/1.3" redirectPort="8443" />
B、vi /usr/local/tomcat2/bin/startup.sh
export JAVA_HOME=/usr/local/jdk
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$JAVA_HOME/lib
export CATALINA_HOME=CATALINA_HOME2 利用profile的第二组设置
export CATALINA_BASE=CATALINA_BASE2
修改完毕后:wq! 退出
source /etc/profile
出现下图代表tomcat安装成功:
- Nginx+Tomcat负载均衡的配置
su
输入密码
cd /usr/local/nginx/conf
vi nginx.conf(修改nginx的配置文件)
要修改的位置如下:
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
在这些代码下按i加入以下代码:
upstream localhost {
server localhost:9080;
server localhost:8080;
#ip_hash;
}
其中的server localhost:9080和8080为你配置的tomcat的服务器端口
在
location / {
root html;
index index.html index.htm;
下加入以下代码
proxy_pass http://localhost;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_headerX-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 15;
proxy_send_timeout 15;
proxy_read_timeout 15;
proxy_buffer_size 8k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
修改完毕之后:
Esc
:wq!
保存退出
此时负载均衡的配置已经设置完毕。
6 负载均衡的测试
6.1 在两个tomcat下新建两个a.jsp文件
1、在tomcat中新建a.jsp (除黑体部分皆为linux语句)
touch /usr/local/tomcat/webapps/ROOT/a.jsp
vi a.jsp
i
<html>
<body>
I am tomcat1=========
</body>
</html>
esc
:wq!
2、在tomcat2中新建a.jsp
touch /usr/local/tomcat2/webapps/ROOT/a.jsp
vi a.jsp
i
<html>
<body>
Wo shi tomcat2=========
</body>
</html>
esc
:wq!
6.2 分别开启两个tomcat服务器
cd /usr/local/tomcat/bin
./startup.sh
cd /usr/local/tomcat2/bin
./startup.sh
6.3 测试
打开火狐浏览器,在地址栏输入127.0.0.1:81/a.jsp
若多次敲入地址显示不同内容即为成功。
这是第一个tomcat下的a.jsp
这是第二个tomcat里面的a.jsp的内容,这样Nginx+tomcat的负载均衡的配置就算成功了!!