Nginx实现负载均衡是通过反向代理实现
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
反向代理是为服务端服务的,反向代理可以帮助服务器接收来自客户端的请求,帮助服务器做请求转发,负载均衡等。
反向代理对服务端是透明的,对我们是非透明的,即我们并不知道自己访问的是代理服务器,而服务器知道反向代理在为他服务。
四层反向代理:是基于IP+PORT(TCP/UDP端口)转发
七层反向代理:基于http,https,mail代理转发
Nginx
实现负载均衡的策略:ip
绑定策略:来自同一个 ip
的请求永远只分配一台服务器,有效解决了动态网页存在的 session
共享问题。二、Nginx动静分离实现原理
动静分离是指在 web
服务器架构中,将静态页面与动态页面或者静态内容接口和动态内容接口分开不同系统访问的架构设计方法,进而提示整个服务的访问性和可维护性。
服务端接收来自客户端的请求中。既有静态资源也有动态资源,静态资源由Nginx提供服务,动态资源Nginx转发至后端
• Nginx处理静态页面的效率远高于Tomcat的处理能力
• 若Tomcat的请求量为1000次,则Nginx的请求量为6000次
• Tomcat每秒的吞吐量为0.6M,Nginx的每秒吞吐量为3.6M
• Nginx处理静态资源的能力是Tomcat处理的6倍
Nginx 服务器:192.168.50.40:80
Tomcat服务器1:192.168.50.35:80
Tomcat服务器2:192.168.37.38:8080 192.168.50.38:8081
关闭防火墙
安装依赖包以及配置模块
yum -y install prce-devel zilb-devel openssl-devel gcc gcc-c++ make
解压软件包
添加模块
编译安装
yum -y install prce-devel zilb-devel openssl-devel gcc gcc-c++ make
useradd -M -s /sbin/nologin nginx
tar zxvf nginx-1.12.0.tar.gz
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-file-aio \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-http_fiv_module \
--with-http_ssl_module \
--with-stream
make && make install
创建一个用户useradd -M -s /sbin/nologin nginx
优化路径
添加系统服务 vim /lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
给件赋予权限,启动下nginx服务
chmod 754 /lib/systemd/system/nginx.service
systemctl start nginx.service
systemctl enable nginx.service
测试下网页访问
2、准备好tomcat服务器1
安装好jdk环境
tar zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local/
vim /etc/profile.d/java.sh编辑java环境
export JAVA_HOME=/usr/local/jdk1.8.0_91
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin/:$PATH
将tomcat包拉进来
解压后移动文件 mv apache-tomcat-8.5.16 /usr/local/tomcat
在当前目录下启动服务./startup.sh
查看端口信息 netstat -antp | grep java
在cd /usr/local/tomcat/webapps/下创建test目录
vim index.jsp编辑jsp文件
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
JSP test1 page
<% out.println("动态页面 1,http://www.test1.com");%>
另俩台服务器也如同上面tomcat进行配置,但test要改为test2和test3
访问到tomcat就行
cd conf/
查看端口
Tomcat2 server 配置
实例一
vim server.xml
同理
实例二
在实例二中还要改其中的端口号
此处后面还有一个8009端口改为8010
启动服务
查看端口
添加下面内容,进行重启服务
upstream tomcat_server {
server 192.168.50.35:8080 weight=1;
server 192.168.50.37:8080 weight=1;
server 192.168.50.37:8081 weight=1;
}
server {
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|png|swf)$ {
root /var/www/html/img;
}
重启服务
systemctl restart nginx
通过客户机进行访问
在nginx服务器上拉入静态图片
进行网页访问