nginx+tomcat+redis负载均衡,实现session共享
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx+tomcat+redis负载均衡,实现session共享相关的知识,希望对你有一定的参考价值。
实验环境:
系统: centos 7.4 3.10.0-327.el7.x86_64
docker: 18.03.0-ce
docker-compose:docker-compose version 1.21.0
redis: 4.0.9
nginx: 1.12.2
tomcat:8.5.30
jdk:1.8.161
基础理论
session 统一方案:
1、单机的session会话保持机制如nginx的ip-hash,如果单个机器下线,那么session将会全部丢失
2、session共享,如tomcat集群,多个应用服务器共享同步session,单台机器下线,根据负载均衡原理,调度器会遍历寻找可用节点,不足在于,只能是同一种中间件如tomcat集群。并且session复制会带来性能损失,session内容通过广播同步给成员,会造成网络流量瓶颈。
3、session服务器 如memcached/redis ,应用服务器接受请求后会将session保存cache db中,当应用服务器出现问题,调度器会遍历所有节点,没发现都没有这个session时会去成cached db中查找,如果找到就复制到本机,这样就能实现session共享和高可用。
实验使用 session服务器的方式
tomcat:
Tomcat的工作模式3种:独立Servlet,进程内servlet,进程外servlet。
Tomcat是一个基于组件的服务器,他的构建组件都是可以配置的,其中最外层的组件是Catalina Servlet容器,其他组一定要按照一定的格式要求配置在这个顶层的容器中。
Tomcat各个组件是在$CATLINA_HOME/conf/server.xml文件中配置的。
tomat是一个servlet容器,来处理http请求。在平时的使用中我们都会再浏览器中输入http地址来访问服务资源,比如格式http://host[":"port][abs_path] ,这里我们将它做为中间件使用。
nginx
nginx负载均衡实现方式: 分别是
- 轮询,
- 加权轮询,
- least-conn, 最小连接
- ip-hash,
- fail,
- url-hash
mysql主从理论
- 1、主从建立连接后
- 2、从库会生成一个IO线程 一个SQL线程,
- 3、IO线程会去请求主库的二进制日志并将日志记录到本地的 中继日志中
- 4、主库会生成一个log dump线程 用来给从库的IO线程传递二进制日志
- 5、从库的SQL线程会解析中继日志生成具体操作,最终实现主从的操作一致数据一致。
理论待继续完善, 实验拓扑如下
2、拓扑
为了更好的理解安装,软件都直接使用源码安装的方式
3、安装
3.1、docker安装
需要先了解一下基本原理: docker基础,第四节安装
?docker组成:docker daemon, docker client, 镜像,仓库,容器
客户端通过api连接服务端,本地命令执行服务端执行完之后返回给客户端,镜像可以直接从dockerhub中下载,镜像可以生成容器,容器可以打包成镜像,仓库可以保存镜像。如图
3.2、nginx安装
以上是关于nginx+tomcat+redis负载均衡,实现session共享的主要内容,如果未能解决你的问题,请参考以下文章
高性能站点架构之负载均衡 Nginx+tomcat+redis实现tomcat集群
Tomcat +redis +nginx 搭建高性能负载均衡 集群
转 tomcat+nginx+redis实现均衡负载session共享
nginx+tomcat+redis负载均衡,实现session共享