物理层:底层数据传输,比如网线、网卡标准
数据链路层:定义数据的基本格式,如何传输,如何标识。比如网卡 MAC 地址
网络层:定义 IP 编码,定义路由功能,比如不同设备的数据转发
传输层:端到端传输数据的基本功能,比如 TCP、UDP
会话层:控制应用程序之间会话能力,比如不同软件数据分发给不停软件
表示层:数据格式标识,基本压缩加密功能。
应用层:各种应用软件,包括 Web 应用。
这个分 3 种
第一种方法:
growpart /dev/vda 1
resize2fs /dev/vda1
第二种方法:
partpeobe /dev/sda
resize2fs /dev/vda1
第三种方法:
fdisk /dev/sdb # n p 1 1 回车 回车 t 8e w
pvcreate /dev/sdb1
vgextend datavg /dev/sdb1
lvextend -r -L +100%free /dev/mapper/datavg-lv01
8005 关闭时使用
8009 为 AJP 端口,即容器使用,如 Apache 能通过 AJP 协议访问 Tomcat 的 8009 端口来实现功能
8080 一般应用使用
迭代查询(返回最优结果)、递归查询(本地找 DNS)用户要访问 www.baidu.com,会先找本机的 host 文件,再找本地设置的 DNS 服务器,如果也没有找到,就去网络中找根服务器,根服务器反馈结果,说只能提供一级域名服务器.cn,就去找一级域名服务器,一级域名服务器说只能提供二级域名服务器.com.cn, 就去找二级域名服务器,二级域服务器只能提供三级域名服务器.baidu.com.cn,就去找三级域名服务器,三级域名服务器正好有这个网站 www.baidu.com,然后发给请求的服务器,保存一份之后,再发给客户端。
在一个虚拟路由器中,只有作为 MASTER 的 VRRP (虚拟路由冗余协议) 路由器会一直发送 VRRP 通告信息,BACKUP 不会抢占 MASTER,除非它的优先级更高。当 MASTER 不可用时 (BACKUP 收不到通告信息) 多台 BACKUP 中优先级最高的这台会被抢占为 MASTER。这种抢占是非常快速的 (<1s),以保证服务的连续性由于安全性考虑,VRRP 包使用了加密协议进行加密。BACKUP 不会发送通告信息,只会接收通告信息。
LVS:
抗负载能力强、工作在第 4 层仅作分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件里的性能最强的;无流量,同时保证了均衡器 IO 的性能不会受到大流量的影响;
工作稳定,自身有完整的双机热备方案,如 LVS+Keepalived 和 LVS+Heartbeat;
应用范围比较广,可以对所有应用做负载均衡;
配置简单,因为没有可太多配置的东西,所以并不需要太多接触,大大减少了人为出错的几率;
LVS 的缺点:
软件本身不支持正则处理,不能做动静分离,这就凸显了 Nginx/HAProxy+Keepalived 的优势。
如果网站应用比较庞大,LVS/DR+Keepalived 就比较复杂了,特别是后面有 Windows Server 应用的机器,实施及配置还有维护过程就比较麻烦,相对而言,Nginx/HAProxy+Keepalived 就简单多了。
Nginx:
工作在第 7 层,应用层,可以针对 http 应用做一些分流的策略。比如针对域名、目录结构。它的正则比 HAProxy 更为强大和灵活;
Nginx 对网络的依赖非常小,理论上能 ping 通就就能进行负载功能
Nginx 安装和配置简单
可以承担高的负载压力且稳定,一般能支撑超过几万次的并发量;
Nginx 不仅仅是一款优秀的负载均衡器 / 反向代理软件,它同时也是功能强大的 Web 应用服务器。Nginx 在处理静态页面、特别是抗高并发方面相对 apache 有优势;
Nginx 作为 Web 反向代理加速缓存越来越成熟,速度比传统的 Squid 服务器更快
Nginx 的缺点:
Nginx 不支持 url 来检测。
Nginx 仅能支持 http、https 和 Email 协议
Nginx 的 Session 的保持,Cookie 的引导能力相对欠缺。
HAProxy:
HAProxy 是支持虚拟主机的,可以工作在 4、7 层 (支持多网段);
能够补充 Nginx 的一些缺点比如 Session 的保持,Cookie 的引导等工作;
支持 url 检测后端的服务器;
它跟 LVS 一样,本身仅仅就只是一款负载均衡软件;单纯从效率上来讲 HAProxy 更会比 Nginx 有更出色的负载均衡速度,在并发处理上也是优于 Nginx 的;
HAProxy 可以对 Mysql 读进行负载均衡,对后端的 MySQL 节点进行检测和负载均衡,不过在后端的 MySQL slaves 数量超过 10 台时性能不如 LVS;
HAProxy 的算法较多,达到 8 种;
工作选择:
HAproxy 和 Nginx 由于可以做七层的转发,所以 URL 和目录的转发都可以做在很大并发量的时候我们就要选择 LVS,像中小型公司的话并发量没那么大选择 HAproxy 或者 Nginx 足已,由于 HAproxy 由是专业的代理服务器配置简单,所以中小型企业推荐使用 HAproxy。
docker 是一个 Client-Server 结构的系统,docker 守护进程运行在宿主机上,守护进程从客户端接受命令并管理运行在主机上的容器,容器是一个运行时环境,这就是我们说的集装箱。
一个完整的 docker 有以下几个部分组成:
docker client,客户端,为用户提供一系列可执行命令,用户用这些命令实现跟 docker daemon 交互;
docker daemon,守护进程,一般在宿主主机后台运行,等待接收来自客户端的请求消息;
docker image,镜像,镜像 run 之后就生成为 docker 容器;
docker container,容器,一个系统级别的服务,拥有自己的 ip 和系统目录结构;运行容器前需要本地存在对应的镜像,如果本地不存在该镜像则就去镜像仓库下载。
docker 使用客户端 - 服务器 (C/S) 架构模式,使用远程 api 来管理和创建 docker 容器。docker 容器通过 docker 镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。
传统虚拟机是需要安装整个操作系统的,然后再在上面安装业务应用,启动应用,通常需要几分钟去启动应用,而 docker 是直接使用镜像来运行业务容器的,其容器启动属于秒级别;
Docker 需要的资源更少,Docker 在操作系统级别进行虚拟化,Docker 容器和内核交互,几乎没有性能损耗,而虚拟机运行着整个操作系统,占用物理机的资源就比较多;Docker 更轻量,Docker 的架构可以共用一个内核与共享应用程序库,所占内存极小;同样的硬件环境,Docker 运行的镜像数远多于虚拟机数量,对系统的利用率非常高;
与虚拟机相比,Docker 隔离性更弱,Docker 属于进程之间的隔离,虚拟机可实现系统级别隔离;
Docker 的安全性也更弱,Docker 的租户 root 和宿主机 root 相同,一旦容器内的用户从普通用户权限提升为 root 权限,它就直接具备了宿主机的 root 权限,进而可进行无限制的操作。虚拟机租户 root 权限和宿主机的 root 虚拟机权限是分离的,并且虚拟机利用如 Intel 的 VT-d 和 VT-x 的 ring-1 硬件隔离技术,这种技术可以防止虚拟机突破和彼此交互,而容器至今还没有任何形式的硬件隔离;
Docker 的集中化管理工具还不算成熟,各种虚拟化技术都有成熟的管理工具,比如:VMware vCenter 提供完备的虚拟机管理能力;Docker 对业务的高可用支持是通过快速重新部署实现的,虚拟化具备负载均衡,高可用、容错、迁移和数据保护等经过生产实践检验的成熟保障机制,Vmware 可承诺虚拟机 99.999% 高可用,保证业务连续性;
虚拟化创建是分钟级别的,Docker 容器创建是秒级别的,Docker 的快速迭代性,决定了无论是开发、测试、部署都可以节省大量时间;
虚拟机可以通过镜像实现环境交付的一致性,但镜像分发无法体系化,Docker 在 Dockerfile 中记录了容器构建过程,可在集群中实现快速分发和快速部署。
镜像:镜像是一种轻量级、可执行的独立软件包,它包含运行某个软件所需的所有内容,我们把应用程序和配置依赖打包好形成一个可交付的运行环境 (包括代码、运行时需要的库、环境变量和配置文件等),这个打包好的运行环境就是 image 镜像文件。
容器:容器是基于镜像创建的,是镜像运行起来之后的一个实例,容器才是真正运行业务程序的地方。如果