目录
Nginx 负载均衡实现原理
Nginx 动静分离实现原理
搭建过程:
部署 Nginx 负载均衡服务器
部署两台 Tomcat 应用服务器
动静分离配置
Tomcat Server 1 IP:192.168.159.102
配置服务
Tomcat Server 2 IP:192.168.159.103
配置服务
Nginx server配置
静态页面配置
测试
测试静态页面效果
测试负载均衡效果,不断刷新浏览器测试
1、Nginx 实现负载均衡是通过反向代理实现
2、Nginx 配置反向代理的主要参数
1、动静分离原理
服务端接收来自客户端的请求中,既有静态资源也有动态资源,静态资源由 Nginx 提供服务,动态资源由 Nginx 转发至后端。
2、Nginx 静态处理优势
——Nginx 处理静态页面的效率远高于 Tomcat 的处理能力
——若 Tomcat 的请求量为1000次,则 Nginx 的请求量为6000次
——Tomcat 每秒的吞吐量为0.6M,Nginx 的每秒吞吐量为3.6M
——Nginx 处理静态资源的能力是 Tomcat 处理的6倍
Nginx 服务器:192.168.159.101
Tomcat 服务器1:192.168.159.102
Tomcat 服务器2:192.168.159.103
三台服务器 环境准备 [root@localhost ~]# systemctl stop firewalld #关闭防火墙 [root@localhost ~]# systemctl disable firewalld #开机不自启 [root@localhost ~]# setenforce 0 #关闭保护
编译安装nginx服务 #安装所需开发包和编译环境、编译器 yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make #创建程序用户,便于准确控制访问 useradd -M -s /sbin/nologin nginx cd /opt tar zxvf nginx-1.12.0.tar.gz -C /opt/ #解压安装包 cd nginx-1.12.0/ ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with -file-aio --with-http_gzip_static_module --with-http_flv_module --with-http_ssl_module #指定安装路径、指定用户名、组名、启用模块以支持统计状态 #编译及安装 make && make install #软链接便于系统识别nginx操作命令 ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ #添加nginx系统服务 echo '[Unit] Description=nginx After=network.target [Service] Type=forking PIDFile=/usr/local/nginx/logs/nginx.pid ExecStart=/usr/local/nginx/sbin/nginx ExecrReload=/bin/kill -s HUP $MAINPID ExecrStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target' > /lib/systemd/system/nginx.service #赋权及开启服务、开启开机自启 chmod 754 /lib/systemd/system/nginx.service systemctl start nginx.service systemctl enable nginx.service
#scp apache-tomcat-9.0.16.tar.gz root@192.168.159.103:/opt #将所需的压缩包在Tomcat1上传给Tomcat2 server,也可以自己直接将压缩包拉到/opt目录下 #关闭防火墙 systemctl stop firewalld systemctl disable firewalld setenforce 0 #安装JDK cd /opt rpm -qpl jdk-8u201-linux-x64.rpm rpm -ivh jdk-8u201-linux-x64.rpm java -version #设置JDK环境变量 echo 'export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64 export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar export PATH=$JAVA_HOME/bin:$PATH' > /etc/profile.d/java.sh source /etc/profile #安装启动Tomcat cd /opt tar zxvf apache-tomcat-9.0.16.tar.gz mv apache-tomcat-9.0.16 /usr/local/tomcat # 启动 /usr/local/tomcat/bin/startup.sh
[root@localhost ~]# mkdir /usr/local/tomcat/webapps/lic [root@localhost ~]# vim /usr/local/tomcat/webapps/lic/index.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <html> <head> <title>JSP test2 page</title> </head> <body> <% out.println("动态页面:ciao");%> </body> </html>
[root@localhost ~]# vim /usr/local/tomcat/conf/server.xml <Host name="tomcat1" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context docBase="/usr/local/tomcat/webapps/lic" path="" reloadable="true" /> </Host> #配置详解 Host name :主机名 appBase : Tomcat程序工作目录,相对路径为webapps,绝对路为/usr/local/tomcat/webapps unpackWARs :tomcat在webapps文件夹中发现war包文件时,是否自动将其解压 autoDeploy :设为true,则web.xml发生变化时,tomcat自动重新部署程序。实现这个功能必需允许后台处理xmlvalidation :是否开启对XML文件的验证 xmlNamespaceAware :是否启用xml命名空间,设置该值与xmlValidation为true,表示对web.xml文件执行有效性检验 docBase : wEB应用的目录(本地路径) path:设置访问的URI为WEB应用的根目录(URL路径),""表示默认,加载系统中自带的类(class文件) reloadable :是否在程序有改动时重新载入
[root@localhost ~]# mkdir /usr/local/tomcat/webapps/lic [root@localhost ~]# vim /usr/local/tomcat/webapps/lic/index.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <html> <head> <title>JSP test2 page</title> </head> <body> <% out.println("动态页面:hello");%> </body> </html>
165行 插入
[root@localhost ~]# vim /usr/local/tomcat/conf/server.xml <Host name="tomcat2" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context docBase="/usr/local/tomcat/webapps/lic" path="" reloadable="true" /> </Host>
#重启服务 [root@localhost ~]# /usr/local/tomcat/bin/shutdown.sh [root@localhost ~]# /usr/local/tomcat/bin/startup.sh
[root@localhost ~]# echo '<html><body><h1>这是默认目录静态页面</h1></body></html>' > /usr/local/nginx/html/index.html [root@localhost ~]# cat /usr/local/nginx/html/index.html <html><body><h1>这是默认目录静态页面</h1></body></html> [root@localhost ~]# mkdir /usr/local/nginx/html/tupian #新建存放图片的目录,拖入图片 [root@localhost ~]# cd /usr/local/nginx/html/tupian [root@localhost tupian]# rz -E rz waiting to receive. 配置Nginx服务 [root@localhost tupian]# vim /usr/local/nginx/conf/nginx.conf #gzip on; upstream tomcat_server { server 192.168.159.102:8080 weight=1; server 192.168.159.103:8080 weight=1; #配置负载均衡服务器列表,weight参数表示权重,权重越高,被分配到的概率越大 } server { listen 80; server_name www.accp.com; charset utf-8; #access_log logs/host.access.log main; location ~ .*.jsp$ { proxy_pass http://tomcat_server; proxy_set_header HOST $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css)$ { root /usr/local/nginx/html/tupian; expires 10d; } location / { root html; index index.html index.htm; } [root@localhost ~]# systemctl restart nginx
浏览器访问http://192.168.159.101/
浏览器访问http://192.168.159.101/gougou.jpg
浏览器访问http://192.168.159.101/lic/index.jsp