一种Docker云平台下弹性缓存系统的制作方法_5

文档序号:9600940阅读:来源:国知局
体流程为:
[0207] (19. 1)判断事件类型,事件类型分为Proxy节点失连、定时器到时。
[0208] (19. 2)如果事件是Proxy失连,则跳转执行步骤(19. 3);如果事件是定时器到时, 则跳转执行步骤(19. 6)。
[0209] (19. 3)获取失连Proxy节点的IP地址。
[0210] (19. 4)将Porxy列表中该节点的连接状态设置为"不正常",防止其他线程使用该 连接。
[0211] (19. 5)关闭连接池中与该Proxy建立的所有连接。跳转至(19. 1)继续执行。
[0212] (19. 6)通过etcd客户端获得Webserver服务地址。
[0213] (19. 7)向Webserver模块发请求,获得所有Proxy地址列表。
[0214] (19. 8)循环从新获得的列表中获得地址,判断现列表中是否存在该地址。
[0215] (19. 9)如果不存在,则建立该Proxy的连接池;否则,不建立。
[0216] (19. 10)所有地址处理完成后,循环从现有列表中获得地址,并判断新获得列表中 是否存在该地址。
[0217] (19. 11)若不存在,则将该Proxy设置为"不正常",并关闭所有连接;否则,不处 理。
[0218] (19. 12)跳转至(19. 1)继续执行。
【主权项】
1. 一种Docker云平台下弹性缓存系统,其特征在于,包括Webserver模块、Docker集 群管理模块、Docker宿主机集群、MySQL数据库、Etcd集群、Docker镜像仓库和客户端; Client端传输用户与验证信息至Webserver模块;Webserver模块将Docker容器控制相 关数据、获取宿主机状态命令发送至Docker集群管理模块;Webserver模块读取与写入宿 主机状态、用户信息至MySQL数据库;Webserver模块发送容器启动状态信息至Etcd集群; Client端从Docker宿主机集群中读取缓存数据、Proxy节点列表信息;Docker宿主机集群 传输宿主机状态数据、Docker管理数据至Docker集群管理模块;从Docker镜像仓库中发 送Docker Image数据至Docker集群管理模块;Docker宿主机集群传输缓存集群启动相关 数据、Docker容器状态数据、弹性事件数据、容灾事件数据至Etcd集群。2. 如权利要求1所述的Docker云平台下弹性缓存系统,其特征在于,Webserver模块 负责Docker容器的启动与删除,处理Redis集群弹性伸缩请求与容灾方面请求,以及处理 Client端各种请求,并为管理员和用户提供可视化界面;Webserver使用JSON作为数据交 换格式; Docker集群管理模块通过Etcd集群,管理Docker宿主机集群;启动时订阅相应目录, Docker宿主机定期将自身信息发布到同一目录;Docker集群管理模块接收到订阅的信息 后,根据接收的订阅信息更新宿主机列表及宿主机系统状态;同时,Docker集群管理模块 为Webserver模块提供服务,包括收集Docker宿主机中容器的信息、新建或销毁容器、定时 收集Docker宿主机系统状况(CPU负载、内存信息、带宽、I/O信息)。3. 如权利要求1所述的Docker云平台下弹性缓存系统,其特征在于,Docker宿主机集 群:Docker宿主机集群有多个Redis集群构成;每个Redis集群对应一个Docker Image ; 在Docker Image中,集成一个容器守护进程模块,以及不同类型的容器节点;在Docker宿 主机集群中,容器节点类型分为Redis模式、Proxy模式和Manager模式;根据Docker容器 节点类型的不同,启动相应的流程,主要包括启动过程管理、节点状态监控、弹性实现、节点 故障上报。4. 如权利要求1所述的Docker云平台下弹性缓存系统,其特征在于,在Docker云平 台中,为每个用户分配独占的Redis集群,各个Redis集群间没有任何通信,实现多租户隔 离;Client端与集群中Proxy节点可以直接通信;用户在配置Redis集群时可以选择建立 Redis Slave节点,基于Redis的主从复制功能,slave节点具有与master节点相同数据; 当Redis Master节点失效时,实时地将slave节点提升为master节点。5. 如权利要求1所述的Docker云平台下弹性缓存系统,其特征在于,用户使用的 Client端节点必须与缓存系统处于同一网络中,Client端通过TCP/IP协议与Redis集群 通信,通过HTTP协议与Webserver通信;采用连接池技术管理Client与Proxy的所有连接; 用户通过Webserver模块进行用户验证后,Webserver模块返回相应Redi s集群的Proxy列 表;此外,Client端定时更新Proxy列表,保证Proxy列表的正确性;Client端获取Proxy 列表后,可以选择相应的负载均衡算法向Proxy发出读写请求;用户可以自行设置负载均 衡算法,负载均衡算法包括:随机法、轮询法、加权轮询法、动态加权轮询法、最快响应优先 法。6. 如权利要求1所述的Docker云平台下弹性缓存系统,其特征在于,Docker镜像仓 库:为Docker宿主机提供Docker Image下载服务;采用建立基于容器的私有Docker镜像 仓库;基于容器的构建方法先从Docker Hub下载Registry镜像,然后在服务器中基于该镜 像创建容器,启动成功后这个容器便可以向外提供registry服务。7. 如权利要求1所述的Docker云平台下弹性缓存系统,其特征在于,Webserver模 块采用无状态设计方法,可以根据需求横向扩展;Webserver模块启动后,在Etcd集群中/ Webserver目录发布自身信息;当其他模块向Webserver模块发请求时,首先从该目录下 随机获取某个Web Server服务地址,此处使用了 etcd的服务发现功能;根据请求对象, Webserver细分为用户服务模块、管理员服务模块、Client服务模块、Docker集群通信模 块。8. 如权利要求1所述的Docker云平台下弹性缓存系统,其特征在于,Docker集群管理 模块分为宿主机模式、管理者模式;在管理者模式中,主机实际为宿主机的代理节点,其保 存着所有宿主机信息,外部使用标准Docker协议请求管理者管理宿主机;新建容器时,管 理者用将启动容器请求分发到某个宿主机,删除容器操作只需找到实际运行该容器的宿主 机后,发出删除请求;两种模式的服务器通过Etcd集群组成一个整体的集群。9. 如权利要求3所述的Docker云平台下弹性缓存系统,其特征在于,容器守护进程模 块集成在Docker Image中,当容器启动时,首先启动容器守护模块;容器运行状态信息采 用Context结构体描述,并保存其中;Webserver启动容器时,将所有容器配置保存在系统 参数中,根据系统参数初始化Context结构体;初始化完毕后,根据Context启动相应容器 模式,其中Manager节点负责整个集群的管理并将集群相关信息保存在etcd集群中;Proxy 是Client连接Redis的代理服务,它本身实现了 Redis协议,表现与一个原生Redis服务相 同;Redis作为存储引擎分为master、slave两种节点,slave复制master中数据,这两种节 点组成了一个Server Group ;采用哈希槽的方式对数据进行分片,数据根据CRC32 (key) % 1024分布在1024个slot中,slot是一个虚拟的概念,数据实际存储在多个Server Group 中,对于Server Group来说没有任何分布式逻辑在其中,每个Server Group负责一部分 key-value 数据。10. 如权利要求1所述的Docker云平台下弹性缓存系统,其特征在于,为了实现集群的 弹性伸缩功能,使用基于动态三次指数平滑预测算法的集群弹性伸缩实现; 在Redis集群中,Manager节点定时收集所有Proxy、Redis节点的负载信息;Proxy的 负载信息包括内存使用率Mus_、CPU使用率Cusage、带宽使用率Nus_;R edis节点的信息只包 括内存使用率Musage; 对于Redis节点,Manager会将所有Redis节点的MusagJjf据,整合在一起形成Redis节 点的整体负载;当系统长时间运行后,可能会造成各节点负载情况分布不均,因此,整合时 需要分析这些Redis节点负载信息的离散度,采用公式(1)计算Redis节点负载信息为:其中i表示Redis节点的序号,如果〇多20,说明负载分布不均,此时需要执行 Rebalance操作,重新分配这些Redis节点负载;μ表示Reids节点的整体负载,并保存到 Redis负载的时间序列{Rt, t = 1,2, ...,η}中;时间序列用固定长度队列保存在Manager 节点的内存中; 对于Proxy节点,Client端采用轮询方式与Proxy进行通信,使得每个Proxy节点的 负载情况相差不大;所有Proxy节点的整体负载Pall可利用公式(2)计算得到:同样,Paii表示Proxy节点的整体负载,并保存至Proxy负载的时间序列{Pt, t = 1,2,· · ·,η}; 当Redis节点和Proxy节点的整体负载计算完毕后,弹性伸缩引擎会对相应的两个时 间序列进行分析,两种时间序列处理方法相同。
【专利摘要】本发明公开一种Docker云平台下弹性缓存系统,由WebServer模块、Docker集群管理模块、Docker宿主机集群、MySQL数据库、Etcd集群、Docker镜像仓库、客户端组成。Client端传输用户与验证信息至WebServer模块;WebServer模块将Docker容器控制相关数据、获取宿主机状态命令发送至Docker集群管理模块;WebServer模块读取与写入宿主机状态、用户信息至MySQL数据库;WebServer模块发送容器启动状态信息至Etcd集群;Client端从Docker宿主机集群中读取缓存数据、Proxy节点列表信息;Docker宿主机集群传输宿主机状态数据、Docker管理数据至Docker集群管理模块;从Docker镜像仓库中发送Docker?Image数据至Docker集群管理模块;Docker宿主机集群传输缓存集群启动相关数据、Docker容器状态数据、弹性事件数据、容灾事件数据至Etcd集群。
【IPC分类】H04L29/08
【公开号】CN105357296
【申请号】CN201510733634
【发明人】毛莺池, 钟海士, 王龙宝, 平萍, 戚荣志, 许峰
【申请人】河海大学
【公开日】2016年2月24日
【申请日】2015年10月30日
当前第5页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1