云计算平台知识图谱
2021-03-02 14:10:36 0 举报
AI智能生成
云计算平台知识图谱
作者其他创作
大纲/内容
系统技术组件
Zookeeper(竞争选举)
Haproxy(负载均衡)
Mesos(资源管理)
Marathon(调度管理)
Docker(虚拟化,进程管理,应用发布)
组件详细介绍
Mesos
mesos简介
Mesos是Apache下的开源分布式资源管理框架,它被称为是分布式系统的内核。Mesos最初是由加州大学伯克利分校的AMPLab开发的,后在Twitter得到广泛使用
mesos总体架构
Mesos-master:Mesos master,主要负责管理各个framework和slave,并将slave上的资源分配给各个framework
Mesos-slave:Mesos slave,负责管理本节点上的各个mesos-task,比如:为各个executor分配资源
Framework:计算框架,如:Hadoop,Spark等,通过MesosSchedulerDiver接入Mesos
Executor:执行器,安装到mesos-slave上,用于启动计算框架中的task
mesos工作流程
分支主题
marathon
marathon适合启动会长期的、始终运行的任务,如果任务终止说明任务出现问题,marathon会重新启动任务,即marathon会确保任务始终得到执行
marathon根据资源使用情况动态安排任务到某个mesos slave,每个任务在执行之前是不知道它将来在哪一台服务器上执行
marathon架构
分支主题
HAproxy
HAproxy特点
HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理
HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理
HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。 同时可以保护你的web服务器不被暴露到网络上
HAProxy实现了一种事件驱动, 单一进程模型,此模型支持非常大的并发连接数
zookeeper
zookeepr简介
Zoopkeeper 提供了一套很好的分布式集群管理的机制,就是它这种基于层次型的目录树的数据结构,并对树中的节点进行有效管理,从而可以设计出多种多样的分布式的数据管理模型
ZooKeeper服务命令
1. 启动ZK服务: sh bin/zkServer.sh start
2. 查看ZK服务状态: sh bin/zkServer.sh status
3. 停止ZK服务: sh bin/zkServer.sh stop
4. 重启ZK服务: sh bin/zkServer.sh restart
zookeeper常用配置
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/home/zookeeper/data
dataLogDir=/home/zookeeper/logs
clientPort=4180
server.1=10.1.39.43:2888:3888
server.2=10.1.39.47:2888:3888
server.3=10.1.39.48:2888:3888
zookeeper角色描述
分支主题
zookeeper工作原理
zookeeper 的核心是原子广播,这个机制保证了各个Server之间的同步。实现这个机制的协议叫做Zab协议。Zab协议有两种模式,它们分别是恢复模式(选主)和广播模式(同步)。当服务启动或者在领导者崩溃后,Zab就进入了恢复模式,当领导者被选举出来,且大多数Server完成了和 leader的状态同步以后,恢复模式就结束了。状态同步保证了leader和Server具有相同的系统状态。
为了保证事务的顺序一致性,zookeeper采用了递增的事务id号(zxid)来标识事务。所有的提议(proposal)都在被提出的时候加上了zxid。实现中zxid是一个64位的数字,它高32位是epoch用来标识leader关系是否改变,每次一个leader被选出来,它都会有一个新的epoch,标识当前属于那个leader的统治时期。低32位用于递增计数。
Zookeeper 下 Server工作状态
LOOKING:当前Server不知道leader是谁,正在搜寻
LEADING:当前Server即为选举出来的leader
FOLLOWING:leader已经选举出来,当前Server与之同步
zookeeper 特点
顺序一致性:按照客户端发送请求的顺序更新数据。
原子性:更新要么成功,要么失败,不会出现部分更新。
单一性 :无论客户端连接哪个server,都会看到同一个视图。
可靠性:一旦数据更新成功,将一直保持,直到新的更新。
及时性:客户端会在一个确定的时间内得到最新的数据。
zookeeper运用场景
数据发布与订阅 (我的业务用到这个特性,后面会有详细介绍)
名空间服务
分布式通知/协调
分布式锁
集群管理
docker
docker简介
1、Docker是一个程序运行、测试、交付的开放平台,Docker被设计为能够使你快速地交付应用。
2、docker使用轻量级的容器虚拟化平台,并且结合工作流和工具,来帮助你管理、部署你的应用程序。
docker用途
1)快速交付你的应用程序
2)开发和拓展更加简单
3)达到高密度和更多负载
Docker的主要组成
Docker: 开源的容器虚拟化平台。
Docker Hub: 用于分享、管理Docker容器的Docker SaaS平台
Docker 内部组成
Docker 镜像 - Docker images
Docker 镜像是Docker容器运行时的只读模板,每一个镜像由一系列的层 (layers) 组成。Docker 使用 UnionFS 来将这些层联合到单独的镜像中。UnionFS 允许独立文件系统中的文件和文件夹(称之为分支)被透明覆盖,形成一个单独连贯的文件系统。正因为有了这些层的存在,Docker 是如此的轻量。当你改变了一个 Docker 镜像,比如升级到某个程序到新的版本,一个新的层会被创建。因此,不用替换整个原先的镜像或者重新建立(在使用虚拟机的时候你可能会这么做),只是一个新 的层被添加或升级了。现在你不用重新发布整个镜像,只需要升级,层使得分发 Docker 镜像变得简单和快速。
Docker 仓库 - Docker registeries
Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。同样的,Docker 仓库也有公有和私有的概念。公有的 Docker 仓库名字是 Docker Hub。Docker Hub 提供了庞大的镜像集合供使用。这些镜像可以是自己创建,或者在别人的镜像基础上创建。Docker 仓库是 Docker 的分发部分。
Docker 容器 - Docker containers
Docker 容器和文件夹很类似,一个Docker容器包含了所有的某个应用运行所需要的环境。每一个 Docker 容器都是从 Docker 镜像创建的。Docker 容器可以运行、开始、停止、移动和删除。每一个 Docker 容器都是独立和安全的应用平台,Docker 容器是 Docker 的运行部分。
docker常用命令
镜像类命令
docker build --rm=true . 构建镜像
docker pull ${IMAGE} 安装镜像
docker images 显示已经安装的镜像
docker images --no-trunc 显示已经安装镜像的详细内容
docker rmi ${IMAGE_ID} 删除指定镜像
docker rmi $(docker images | grep “^” | awk “{print $3}”) 删除所有没有标签的镜像
docker rm $(docker ps -aq) 删除所有的镜像
docker rmi $(docker images --quiet --filter "dangling=true") 删除未使用的镜像
容器类命令
docker run 运行容器
docker ps 显示正在运行的容器
docker ps -a 显示所有的容器
docker stop ${CID} 停止指定容器
docker stop docker ps -q 停止所有正在运行的容器
docker ps -a --filter "exited=1" 显示所有退出状态为1的容器
docker rm ${CID} 删除指定容器
docker ps -a | grep wildfly | awk '{print $1}' | xargs docker rm -f 使用正则表达式删除容器
docker rm -f $(docker ps -a | grep Exit | awk '{ print $1 }') 删除所有退出的容器
docker rm $(docker ps -aq) 删除所有的容器
docker inspect --format '{{ .NetworkSettings.IPAddress }}' ${CID} 显示指定容器的IP
docker attach ${CID} 进入容器
docker exec -it ${CID} bash 进入容器打开一个shell
docker ps | grep wildfly | awk '{print $1}' 通过正则表达式查找容器的镜像ID
Docker的架构
Docker使用客户端-服务器(client-server)架构模式。
Docker 客户端会与Docker守护进程进行通信。Docker 守护进程会处理复杂繁重的任务,例如建立、运行、发布你的 Docker 容器。
Docker 客户端和守护进程可以运行在同一个系统上,当然也可以使用Docker客户端去连接一个远程的 Docker 守护进程。
Docker 客户端和守护进程之间通过socket或者RESTful API进行通信。
系统结构图
系统整体架构
分支主题
Jborg系统
代码层次结构
前端、vue.js,css
后端代码
表现层SpringMVC
业务层、service接口
持久层、mybatis
数据库、mysql
系统功能模块
系统管理
角色管理
用户管理
应用模块
应用组创建
应用组添加
程序包添加
应用模板创建
应用批量发布
资源模块
主机管理
集群管理
资源统计
服务管理
marathon服务管理
服务模板管理
容器模板
服务扩容
性能管理
容器性能
路由性能
监控
CPU,文件系统,内存,连接数,网络
日志管理
平台配置
云平台一期常见问题
问题1:MARATHON应用状态
问题2:zk not running
问题3:503 marathon选举不出leader
问题4:模板配置ok,健康检查不过
问题5:slave或者marathon,zookeeper所在主机磁盘满,导致应用发布失败,marathon,zookeeper实例挂掉
问题6:marathon,zookeeper挂了,重启失败
问题7:应用发布成功访问不了
问题8:29 app区mesos纳管slave失败
问题9:marathon实例能访问,F5不能访问
0 条评论
下一页