linux+tomcat+nginx负载均衡
一、简介
【Nginx】 大名鼎鼎,麻雀虽小五脏俱全,它拥有小而稳且高效的特性。为目前大多数中小企业所使用。nginx可以做以下几件事:
- 反向代理
- 负载均衡
- 动静分离
- 网页、图片缓存
【Tomcat】 是一个免费开放源代码的 Web 应用服务器,具有开源免费、容易安装、 容易使 用、占用资源小、易于和其他软件集成等优点。 Tomcat 很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载 平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的改进和完善中,任何一个感 兴趣的程序员都可以更改它或在其中加入新的功能。
![](https://i-blog.csdnimg.cn/blog_migrate/3f23a6de8313d1ce659d9a046791608f.png)
图中的信息显而易见,以nginx服务器作为中转分发请求,以达到负载均衡的目的。
二、环境需求
配置三台tomcat:service-tomcat +3
1.===============安装JDK====================
1.1、查看是否已安装jdk,如果已安装,先卸载再安装新的jdk(过程如下:)
[root@admain1 ~]# java -version
java version "1.7.0_79"
OpenJDK Runtime Environment (rhel-2.5.5.4.el6-x86_64 u79-b14)
OpenJDK 64-Bit Server VM (build 24.79-b02, mixed mode)
[root@admain1 ~]# rpm -qa | grep java
tzdata-java-2015e-1.el6.noarch
java-1.7.0-openjdk-1.7.0.79-2.5.5.4.el6.x86_64
java-1.6.0-openjdk-1.6.0.35-1.13.7.1.el6_6.x86_64
[root@admain1 ~]# rpm -e --nodeps java-1.7.0-openjdk-1.7.0.79-2.5.5.4.el6.x86_64
[root@admain1 ~]# rpm -e --nodeps java-1.6.0-openjdk-1.6.0.35-1.13.7.1.el6_6.x86_64
[root@admain1 ~]# java -version
-bash: /usr/bin/java: 没有那个文件或目录
[root@admain1 ~]#
解压jdk到指定目录下:tar -xvf tar包 -C 指定目录
配置全局环境变量:
export JAVA_HOME=/usr/java/jdk1.7.0_79
export JRE_HOME=/usr/java/jdk1.7.0_79/jre
export PATH=$PATH:/usr/java/jdk1.7.0_79/bin
export CLASSPATH=./:/usr/java/jdk1.7.0_79/lib:/usr/java/jdk1.7.0_79/jre/lib
1.3、文件立即生效:source /etc/profile
2、===============安装Tomcat7===============
2.1、将Tomcat免安装版解压到指定文件夹
2.2、进入Tomcat的bin目录下,启动Tomcat:./startup.sh
2.3、测试,注意关闭防火墙
命令:vim /etc/sysconfig/iptables
添加:-A INPUT -m state --state NEW -m tcp -p tcp --dport 22122 -j ACCEPT
重启:service iptables restart
查看端口是否可访问:telnet ip 端口号 (如本机的35465:telnet localhost 35465)
3、============在一个Linux下部署多个Tomcat配置方法============
(1)修改/etc/profile文件,在后面追加如下代码#第一个Tomcat
CATALINA_BASE=/home/ictuser/apache-tomcat-8.0.24
CATALINA_HOME=/home/ictuser/apache-tomcat-8.0.24
export CATALINA_BASE CATALINA_HOME
#第二个Tomcat
CATALINA_2_BASE=/home/ictuser/tomcat_test/apache-tomcat-9.0.0.M11
CATALINA_2_HOME=/home/ictuser/tomcat_test/apache-tomcat-9.0.0.M11
export CATALINA_2_BASE CATALINA_2_HOME
#第一个Tomcat路径
TOMCAT_HOME=/home/ictuser/apache-tomcat-8.0.24
export TOMCAT_HOME
#第二个Tomcat路径
TOMCAT_2_HOME=/home/ictuser/tomcat_test/apache-tomcat-9.0.0.M11
export TOMCAT_2_HOME
修改以后刷新使修改生效。命令:source /etc/profile
(2). 修改其他tomcat(除了第一个tomcat)根目录bin下的catalina.sh文件
具体操作是切换到tomcat2的bin目录下,vim catalina.sh,找到下面的注释代码
# OS specific support. $var _must_ be set to either true or false.
并在上述代码下面添加以下代码,目的是为了tomcat2启动的时候能通过该文件的里的$CATALINA_2_BASE 和 $CATALINA_2_HOME找到/etc/profile配置文件里我们前一步配好的具体路径,完成tomcat2的启动过程。
# myself : add
export CATALINA_BASE=$CATALINA_2_BASE
export CATALINA_HOME=$CATALINA_2_HOME
如果有多个tomcat,修改方法是一样的。
(3).修改server.xml文件的端口号
除了第一个tomcat使用的默认配置好的端口号(如果有需要也可以修改),后面添加的tomcat都要通过其根目录下的conf目录下的server.xml文件来修改端口号防止端口冲突
效果如下:
四、安装nginx
1、下载稳定版的nginx到指定文件夹下;
linux命令:
下载:wgethttp://nginx.org/download/nginx-1.14.0.tar.gz
解压:zxvfnginx-1.14.0.tar.gz
2、安装准备: nginx依赖于pcre和pcre-devel库,要先安装(若已安装则不需要);
yum install pcre
yum install pcre-devel
yum install -y zlib-devel
3、进入解压后的文件夹,安装nginx到指定目录下
cd nginx-1.4.2
./configure --prefix=/usr/local/nginx
make && make install
4、启动:
cd /ulsr/local/nginx, 看到如下4个目录
./
....conf 配置文件
...html 网页文件
...logs 日志文件
...sbin 主要二进制程序(命令)
[root@localhost nginx]# ./sbin/nginx ——启动命令
nginx: [emerg] bind() to 0.0.0.0:80 failed(98: Address already in use)
....
nginx: [emerg] bind() to 0.0.0.0:80 failed(98: Address already in use)
nginx: [emerg] still could not bind()
报错:不能绑定80端口,80端口已经被占用
(有时是自己装了apache,nginx等,还有更多情况是操作系统自带了apache并作为服务启动)
解决: 把占用80端口的软件或服务关闭即可,也可更换其他端口使用
(关闭对应服务命令:pkill-9 http)
查看nginx是否启动:psaux|grep nginx
修改配置文件后重启:./usr/local/nginx/sbin/nginx-s reload
5.此时 直接在浏览器地址栏输入:localhost 便能看到 欢迎页面,说明你虚拟主机已经搭建好了
五、nginx+tomcat负载均衡简单配置:
进入nginx-1.10.1\conf路径,修改配置文件nginx.conf。
1、配置服务器组,在http{}节点之间添加upstream配置。(注意不要写localhost,不然访问速度会很慢)
upstream netitcast.com {
server 192.168.150.129:8080 weight=1; #tomcat1分流 weight=1 这是权重分配。
server 192.168.150.129:8081 weight=2; #tomcat2分流 weight=2 显然2更大,那么它被分配任务的几率也就更大
server 192.168.150.129:8082 weight=2; #tomcat3分流
server 192.168.150.129:8083 weight=2; #tomcat4分流
}
2、
在location\{}中,利用
proxy_pass
配置反向代理地址;此处“http://”不能少,后面的地址要和第一步
upstream
定义的名称保持一致。
location / { # root html; #index index.html index.htm; proxy_pass http://netitcast.com; proxy_redirect default; }
具体如下图: