1、概念:
正向代理:客户端明确被访问服务器
反向代理:客户端不清楚被访问服务器,只清楚代理服务器
负载均衡
2、nginx负载均衡的实现
2.1、什么是http upstream 模块
upstream mypro {
}
server{
location /{
proxy_pass hhtp://mypro;
}
}
主要实现轮询算法
ip_hash 指令
将通一个用户引入同一个服务器
upstream mypro{
ip_hash;//同一个ip用户,会一直访问第一次进入的服务器。
server www.baiud.com;
server www.jd.com;
}
权重和ip_hash是冲突的,不能同事使用
2.2、server 指令(服务器权重)
upstream mypro{
server www.baiud.com weight=2;//被访问权重是2/3,
server www.jd.com;//被访问权重是1/3
}
其它负载均衡实现(硬件实现,软件实现:服务器软件,系统软件等)
2.3 backup;
upstream mypro{
server www.baiud.com weight=2;//被访问权重是2/3, 值越大,负载越大
server www.jd.com;//被访问权重是1/3
server www.taobao.com backup; //备份机,只有非备份机都挂掉了才启用
}
2.4 down;
upstream mypro{
server www.baiud.com weight=2;//被访问权重是2/3,
server www.jd.com;//被访问权重是1/3
server www.taobao.com down; //停机标志,不会被访问
}
整体配置:
负载均衡策略:
1.none(轮询,权重油weight决定)
2.ip_hash 根据客户端第一次分配的机器,以后都是这台机器
//下面是第三方提供的
3.fair 动态的根据后端服务器的负载能力进行选择
4.url_hash 根据客户端url信息分配服务器(适合访问一些图片,静态页面等)
3、nginx+tomcat 负载均衡配置
反向代理:
负载均衡
3.1负载均衡配置实现
2.5、下载第三方模块
如果nginx没有安装
1.
如果nginx安装后:
2.执行make 然后在nginx的安装目录里的objs目录里nginx(添加了第三方的编译文件),
3.关闭nginx
4.用objs里的nginx 替换到sbin/里的nginx文件
3.2 负载均衡时session 的处理策略
1.将用户锁定在一个服务器上 优点:简单 缺点:缺乏容错性
2.session 复制 优点:会及时同步session信息 缺点:网络压力
实现方式: 在tomcat里的server-session-replication.xml 开启session复制
然后在应用代码中。web.xml中设置,应用可以支持session复制
测试或者验证时,可以创建一个session监听器实现 httpSessionAttributeListener
3.session共享,将服务器里的session放在同一个地方
1.黏性session
不同的tomcat指定一个memcached,tomcat 主存储
2.非黏性session
tomcat 不存储session
实现方式:非黏性配置
3.3 集群环境中应用代码应注意的问题
1.实体类序列化支持 一般是session 实体类 根据版本号
2.获取用户ip地址的方式,在代理
在代码中获取ip里的head里的上述配置选项
其它头配置信息
动静分离结构的预规划
1.静态资源(单独服务器)