实验环境:
系统: 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 基础 http://blog.51cto.com/xiong51/2093556 , 第四节安装
?docker 组成: docker daemon, docker client, 镜像, 仓库, 容器
客户端通过 api 连接服务端, 本地命令执行服务端执行完之后返回给客户端, 镜像可以直接从 dockerhub 中下载, 镜像可以生成容器, 容器可以打包成镜像, 仓库可以保存镜像. 如图
3.2,nginx 安装
来源: http://www.bubuko.com/infodetail-2572838.html