1、Nginx简介
Nginx是一款轻量级的Web 服务器/反向代理服务器占有内存少,并发能力强官方测试nginx能够支撑5万并发链接,并且CPU、内存等资源消耗却非常低,运行非常稳定。
2. 使用场景
2.1. 高并发场景
- 负载均衡(load Balance )
-
-
将请求/数据【均匀】分摊到多个操作单元上执行,负载均衡的关键在于【均匀】
-
2.2. 正向代理
- 代理人明确买家的目标是谁,代理人帮我们去联系目标
2.3. 反向代理
- 客户只需要发送请求到代理服务器,代理服务器会将请求转发给内部的服务器去处理,处理完毕之后会将结果返回给客户
- 但整个过程中客户和实际处理服务器是不会直接建立连接的
3、Nginx源码安装
4、 Nginx负载均衡
4.1. 集群搭建
4.2. 负载策略
-
4.2.1. 请求轮询
- 依次转发给配置的服务器
-
4.2.2. 增加权重
- 使用服务器权重,还可以进一步影响nginx负载均衡算法,谁的权重越大,分发到的请求就越多。
- 说你行你就行不行也行
-
4.2.3. 最少连接数
- 在连接负载最少的情况下,nginx会尽量避免将过多的请求分发给繁忙的应用程序服务器,而是将新请求分发给不太繁忙的服务器,避免服务器过载。
-
4.2.4. IpHash
- 确保来自同一客户端的请求将始终定向到同一台服务器,除非此服务器不可用
5. 资源静态化
5.1. 图床
- 由外部服务器统一管理图片
5.2. 配置静态资源
6. 单Linux搭建多Tomcat
6.1. 拷贝多台
6.2. 环境变量
设置并执行 source /etc/profile
#tomcat8080
export CATALINA_HOME=/opt/bdp/apache-tomcat-8080
export CATALINA_BASE=/opt/bdp/apache-tomcat-8080
export TOMCAT_HOME=/opt/bdp/apache-tomcat-8080
#tomcat18080
export CATALINA_HOME18080=/opt/bdp/apache-tomcat-18080
export CATALINA_BASE18080=/opt/bdp/apache-tomcat-18080
export TOMCAT_HOME18080=/opt/bdp/apache-tomcat-18080
6.3. server.xml文件
vim apache-tomcat-18080/conf/server.xml
只需要修改tomcat18080即可,8080保持不变
#22--默认为8005--》修改为18005
<Server port="18005" shutdown="SHUTDOWN">
#69--默认为8080--》修改为18080
<Connector port="18080" protocol="HTTP/1.1" connectionTimeout="20000"
redirectPort="8443" />
#116-默认为8009--》修改为18009
<Connector port="18009" protocol="AJP/1.3" redirectPort="8443" />
6.4. catalina.sh脚本
vim apache-tomcat-18080/bin/catalina.sh
只需要修改Tomcat18080即可,修改catalina.sh
####################113行开始添加
export CATALINA_BASE=$CATALINA_BASE18080
export CATALINA_HOME=$CATALINA_HOME18080
export TOMCAT_HOME=$TOMCAT_HOME18080
6.5. 启动Tomcat
./apache-tomcat-8080/bin/startup.sh
./apache-tomcat-18080/bin/startup.sh
7. 虚拟主机
虚拟主机使用的是特殊的软硬件技术,它把一台运行在因特网上的服务器主机分成多台“虚拟”的主机,每台虚拟主机都可以是一个独立的网站,可以具有独立的域名,具有完整的Intemet服务器功
能(WWW、FTP、Email等),同一台主机上的虚拟主机之间是完全独立的。从网站访问者来看,每一台虚拟主机和一台独立的主机完全一样
分类
- 1、基于域名的虚拟主机,通过域名来区分虚拟主机
- 2、基于端口的虚拟主机,通过端口来区分虚拟主机
8. Session一致性
-
节点分布
-
内存数据库
-
安装数据库
yum install memcached -y
-
开启数据库服务
-
systemctl status memcached systemctl start memcached systemctl enable memcached vim /etc/sysconfig/memcached
-
Tomcat
-
拷贝jar包到当前服务器lib目录下
-
要注意memcached的版本
-
如果一个机器有多个tomcat都需要session一致
- 配置tomcat/conf/server.xml
- 相同项目如果想共享session,需要把jvmRoute命名一致
- 如果你只有一个tomcat,忽略此步骤
-
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm18080"> </Engine>
-
配置 tomcat/conf/context.xml
-
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="n1:192.168.88.100:11211" sticky="true" lockingMode="auto" sessionBackupAsync="false" requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$" sessionBackupTimeout="1000" transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoT ranscoderFactory" />
-
重启Tomcat服务器
-
-
访问发现同一个server是可以共享session的,但是不同server因为涉及到跨域的问题
- session还是不-同的,需要设置cookie的domain