Tomcat 和 Nginx
Tomcat 和 Nginx
Nginx介绍
- 支持高达50000个并发连接数的响应
- 拥有强大的静态资源处理能力
- 运行稳定
- 内存、CPU等系统资源消耗非常低
- 目前很多大型网站都应用Nginx服务器作为后端网站程序的反向代理及负载均衡器,提升整个站点的负载并发能力
Nginx动静分离原理
- 通过location字段进行匹配
- 如果是.html结尾的文件会被发往本地处理
- 如果是.jsp结尾的会被发往tomcat
Tomcat重要目录
目录 | 作用 |
---|---|
bin | 存放启动和关闭Tomcat脚本 |
conf | 存放Tomcat不同的配置文件 |
doc | 存放Tomcat文档 |
lib | 存放Tomcat运行需要的库文件 |
logs | 存放Tomcat执行时的LOG文件 |
src | 存放Tomcat的源代码 |
webapps | Tomcat的主要Web发布目录 |
work | 存放jsp编译后产生的class文件 |
Nginx配置负载均衡、动静分离
NFS存储服务器部署
-
安装nfs-utils、rpcbind软件包
yum -y install nfs-utils rpcbind
-
创建共享目录
mkdir /opt/tomcat1 mkdir /opt/tomcat2
-
编辑一个javascript的测试网页,并上传图片
vim /opt/tomcat1/index.jsp
vim /opt/tomcat2/index.jsp
-
共享目录
vi /etc/exports /opt/tomcat1 192.168.1.17(ro) /opt/tomcat2 192.168.1.18(ro)
-
启动服务,并查看
systemctl start nfs systemctl restart rpcbind showmount -e
配置Java环境变量
-
解压,移动
tar xf jdk-8u91-linux-x64.tar.gz mv jdk1.8.0_91/ /usr/local/java
-
配置环境变量
vi /etc/profile export JAVA_HOME=/usr/local/java export JAVA_JRE=/usr/local/java/jre export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/lib:$JAVA_JRE/bin:$JAVA_JRE/lib
- 执行,并查看
source /etc/profile
echo $PATH
-
测试,查看版本
java -version
-
编辑一个.java文件测试
vim HelloWorld.java public class HelloWorld { public static void main (String[] args) { System.out.println("helloworld!"); } } javac HelloWorld.java java HelloWorld
部署Tomcat
-
解压、移动
tar xf apache-tomcat-8.5.16.tar.gz mv apache-tomcat-8.5.16 /usr/local/tomcat8
-
建立软连接
ln -s /usr/local/tomcat8/bin/startup.sh /usr/bin/tomcatup ln -s /usr/local/tomcat8/bin/shutdown.sh /usr/bin/tomcatdown ln -s /usr/local/tomcat8/conf/server.xml /etc/tomcat.xml
-
开启tomcat
tomcatup
-
检查是否开启
netstat -anpt | grep java
测试tomcat
-
创建web目录
mkdir -p /tomcat/web
-
将nfs挂载到本地目录
tomcat1 mount 192.168.2.18:/opt/tomcat1 /tomcat/web tomcat2 mount 192.168.2.18:/opt/tomcat2 /tomcat/web
-
查看挂载情况
cd /tomcat/web
- 设置网站根目录
编辑配置文件
vi /etc/tomcat.xml
<Context docBase="/tomcat/web" path="" reloadable="false">
</Context>
- 测试
192.168.1.17:8080
192.168.1.18:8080
调度器
-
编译安装nginx
yum 安装依赖包yum -y install gcc gcc-c++ make pcre pcre-devel zlib zlib-devel
-
创建一个不可登陆账户给ngxin使用
useradd -M -s /sbin/nologin nginx
-
解压
tar xf nginx-1.12.2.tar.gz
-
配置内容
cd nginx-1.12.2/ ./configure \ --prefix=/usr/local/nginx \ --user=nginx \ --group=nginx \ --with-http_stub_status_module
-
编译安装
make && make install -j 8
-
建立nginx软连接
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
-
nginx配置文件软连接
ln -s /usr/local/nginx/conf/nginx.conf /etc/
-
配置文件
vi /usr/local/nginx/conf/nginx.conf
-
检查nginx是都可以正常运行
nginx -t
-
查看nginx状态
netstat -anpt | grep nginx
-
启动nginx
nginx
-
测试
安装keepalived
-
解压
tar xf keepalived-2.0.13.tar.gz
-
安装编译工具与插件
yum -y install gcc gcc-c++ make popt-devel kernel-devel openssl-devel
-
切换目录、编译安装
cd keepalived-2.0.13/ ./configure --prefix=/ make && make install
-
加入系统管理服务、设为开机自启
cp keepalived/etc/init.d/keepalived /etc/init.d/ systemctl enable keepalived.service
-
编辑主调度器配置文件
vi /etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs { router_id Nginx_01 } vrrp_instance VI_1 { state MASTER interface ens33 virtual_router_id 51 priority 150 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.1.100 } } }
-
编辑备用调度器配置文件
vi /etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs { router_id Nginx_02 } vrrp_instance VI_1 { state BACKUP interface ens33 virtual_router_id 51 priority 140 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.1.100 } }
- 重启
ip addr 测试
-
主路调度器故障测试,禁用网卡,或者是禁用keepalived
-
重新启动keepalived
nginx监控脚本
-
脚本的作用就是在nginx服务出问题的时候,关闭keepalived
-
假设主调度器仅仅是Nginx服务出现问题,其它(keepalived)一切正常,那么VIP就不会跳到备用调度器上,备用调度器就无法启用,就会出现下面情况
-
编辑脚本
vi /etc/keepalived/nginx_check.sh #!/bin/bash A=`ps -C nginx --no-header | wc -l` if [ $A -eq 0 ] then /usr/local/nginx/sbin/nginx if [ `ps -C nginx --no-header | wc -l` -eq 0 ] then exit 1 else exit 0 fi else exit 0 fi