Nginx+Tomcat负载均衡、动静分离群集
Nginx+Tomcat负载均衡、动静分离群集
tomcat的重要目录
- bin:存放启动和关闭Tomcat脚本
- conf:存放Tomcat不同的配置文件
- doc:存放Tomcat文档
- lib:存放Tomcat运行需要的库文件
- logs:存放Tomcat执行时的LOG文件
- src:存放Tomcat的源代码
- webapps:Tomcat的主要Web发布目录
- work:存放jsp编译后产生的class文件
Nginx负载均衡实现原理
- Nginx实现负载均衡是通过反向代理实现的
- Nginx配置反向代理的主要参数
upstream 服务池名{}
配置后端服务器池,以提供响应数据
proxy_pass http://服务池名
配置将访问请求转发给后端服务器池的服务器处理
Nginx动静分离实现原理
- 动静分离原理
服务端接收来自客户端的请求中,机油静态资源也有动态资源,静态资源由Nginx提供服务,动态资源由Nginx转发至后端
Nginx+Tomcat项目
现在nfs机上操作
先关闭防火墙
[root@nfs ~]# systemctl stop firewalld
[root@nfs ~]# setenforce 0
先创建 目录
[root@nfs ~]# mkdir /web1
[root@nfs ~]# mkdir /web2
在创建一个文本
[root@nfs ~]# cd /web1
[root@nfs web1]# vi index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %>
<html>
<head>
<title>tomcat1</title>
</head>
<body>
<% out.println("this is tomcat1 server");%>
<div>动态页面</div><br/><img src="a.jpg" />
</body>
</html>
在添加图片
[root@nfs ~]# cd /web1
[root@nfs web1]# ll
总用量 52
-rw-r–r--. 1 root root 47792 12月 7 17:52 a.jpg
-rw-r–r--. 1 root root 230 12月 7 17:19 index.jsp
然后在cp 文件到 web2上
[root@nfs web1]# cp index.jsp /web2
[root@nfs web1]# cd /web2
[root@nfs web2]# vi index.jsp
在tomcat1机上操作
按解压包jdk-8u91-linux-x64.tar.gz 和 apache-tomcat-8.5.16.tar.gz
在剪切
mv jdk1.8.0_91/ /usr/local/java
[root@tomcat1 ~]# vi /etc/profile
末尾添加
export JAVA_HOME=/usr/local/java
export PATH=
P
A
T
H
:
PATH:
PATH:JAVA_HOME/bin:$JAVA_HOME/jre
[root@tomcat1 ~]# source /etc/profile
[root@tomcat1 ~]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/java/bin:/usr/local/java/jre
[root@tomcat1 ~]# java -version
openjdk version “1.8.0_131”
OpenJDK Runtime Environment (build 1.8.0_131-b12)
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)
在创建一个文本
[root@tomcat1 ~]# vi abc.java
public class abc {
public static void main (String[] args) { System.out.println(“你瞅啥!!!”);
}
}~
[root@tomcat1 ~]# java abc
你瞅啥!!!
在解压apache-tomcat-8.5.16.tar.gz
[root@tomcat1 ~]# tar zxvf apache-tomcat-8.5.16.tar.gz
进行剪切重命名
[root@tomcat1 ~]# mv apache-tomcat-8.5.16/ /usr/local/tomcat8
[root@tomcat1 ~]# mkdir /webapp1
[root@tomcat1 ~]# mount 20.0.0.14:/web1 /webapp1
在修改配置文件
[root@tomcat1 ~]# vi /usr/local/tomcat8/conf/server.xml
在<Host name=“localhost” appBase=“webapps”
unpackWARs=“true” autoDeploy=“true”>
下添加命令行
<Context docBase="/webapp1" path="" reloadable=“false”> </Context>
在进行软链接
[root@tomcat1 ~]# ln -s /usr/local/tomcat8/bin/startup.sh /usr/bin/tomcatup
[root@tomcat1 ~]# ln -s /usr/local/tomcat8/bin/shutdown.sh /usr/bin/tomcatdown
[root@tomcat1 ~]# tomcatup
[root@tomcat1 ~]# netstat -anpt | grep 8080
tcp6 0 0 :::8080 :::* LISTEN 48120/java
在网页上输入 http://20.0.0.12(本机ip)
tomcat2同上
在主调度器上操作
先解压包
tar zxvf nginx-1.12.2.tar.gz
在Nginx下 创建一个不能登录的用户
cd nginx-1.12.2/
useradd -M -c /usr/sbin/nologin nginx
在安装yum源,并且编译安装
yum -y install pcre-devel.x86_64 zlib-devel.x86_64
cd nginx-1.12.2/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
make && make install
在软连接
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin
在修改配置文件
vi /usr/local/nginx/conf/nginx.conf
upstream tomcat_server {
server 20.0.0.12:8080 weight=1;
server 20.0.0.13:8080 weight=1;
}
在添加命令行
proxy_pass http://tomcat_server;
}
开启服务并且 看看有没有报错
Nginx
[root@nginx1 ~]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
在解压Keepalived的压缩包
tar zxvf keepalived-2.0.13.tar.gz
在进行yum源安装 并且编译安装
yum -y install popt-devel.x86_64 kernel-devel openssl-devel
./configure --prefix=/
make && make install
cp keepalived/etc/init.d/keepalived /etc/init.d
在修改配置参数
[root@nginx1 ~]# vi /etc/init.d/keepalived
chkconfig --add keepalived
chmod +x /etc/init.d/keepalived
systemctl enable keepalived.service
[root@nginx1 ~]# vi /etc/keepalived/keepalived.conf
添加命令行
! Configuration File for keepalived
global_defs {
router_id nginx1 ##本服务器的名称}
vrrp_script chk_http_port {
script "/usr/local/
src/nginx.sh"
interval 2
weight 2}
vrrp_instance VI_1 { ##定义VRRP热备实例
state MASTER ##热备状态,MASTER(主服务器)interface ens33 ##承载VIP地址的物理接口virtual_router_id 51 ##虚拟路由器的ID号,每个热备组保持一致
priority 110 ##优先级,数值越大优先级越高advert_int 1 ##通告间隔秒数(心跳频率)authentication { ##热备认证信息,每个热备组保持一致
auth_type PASS ##认证类型 a
uth_pass 6666 ##密码字符串 }
track_script { chk_http_port}virtual_ipaddress { ##指定漂移地址(VIP)
20.0.0.200
}
}
在写一个脚本
[root@nginx1 ~]# vi /usr/local/src/nginx.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
fielse exit 0
fi
给与权限
chmod +x /usr/local/src/nginx.sh
在重启服务
systemctl restart keepalived.service
看漂移地址是不是在 主调度器上
ip addr
备调度器同上
在[root@nginx2 ~]# vi /etc/keepalived/keepalived.conf 配置文件中有一点不一样