一种多用户环境下利用浏览器访问Linux容器集群的方法和装置与流程

文档序号:12664797阅读:672来源:国知局
本发明是一种多用户环境下利用浏览器访问Linux容器集群的方法和装置,属于软件
技术领域
:。
背景技术
::Linux容器是一种操作系统层虚拟化技术,用来进行进程和资源的隔离。与虚拟机技术相比,Linux容器不需要指令级模拟,所以显得更为轻量,性能也更高,是目前云计算领域备受瞩目的技术之一。Linux容器集群是指将分布于物理集群上的多个Linux容器利用网络连接起来,组成的虚拟集群。利用这样的虚拟集群,可以开发和部署诸如Spark,MPI等分布式应用,同时由于底层的基础是Linux容器,所以在虚拟集群上的操作不会对物理服务器产生影响,具有很高的安全性和可用性。多用户环境是指在同一个物理集群下,有很多的Linux容器集群,每个集群由若干个Linux容器组成,这些集群可以属于不同的用户,在这样一个环境下,需要对虚拟集群进行隔离。传统的对Linux容器集群进行访问的方法,是利用本地的ssh客户端,通过ssh进行远程登录,这就需要用户在本地安装ssh客户端软件,同时还要用户记住目标集群的地址、用户名和密码,便利性显得不足。Jupyter是一个利用浏览器来对计算机进行访问的工具。通过使用Jupyter,可以直接使用浏览器在网页上对计算机进行各种操作,包括文件阅读和编辑,终端操作,以及包括R,python在内的多种语言的交互式编程。Jupyter的这一功能使得我们可以将其用于Linux容器的访问中,但它仅适合单一Linux容器的场合,并不能同时访问一个Linux容器集群中的所有容器;同时,当Linux容器没有全局IP地址时,无法直接访问该容器的Jupyter界面;最后,在多用户的情况下,还有不同用户之间能互相访问同一容器的问题。技术实现要素:本发明针对上述问题,实现了一种多用户环境下利用浏览器访问Linux容器集群的方法和装置,使用户能够通过浏览器访问Linux容器集群,同时保证在多用户环境下的安全可靠性。本发明采用的技术方案如下:一种多用户环境下利用浏览器访问Linux容器集群的方法,包括以下步骤:1)在Linux容器集群上部署Master节点和若干Worker节点,其中Master节点用于进行集中管理,Worker节点是Linux容器的载体;2)在创建Linux容器集群时,Master节点为Linux容器集群分配一个子网,并从该子网内部为Linux容器分配IP地址(这样同一个容器集群内的容器会处于同一子网内);3)Master节点处理用户的创建Linux容器集群的请求,并将其分发到Worker节点,由Worker节点创建Linux容器;4)对创建的Linux容器进行Jupyter相关参数的配置,并启动Jupyter,通过http代理(配置于服务器端)将对Linux容器集群访问的URL绑定到Linux容器的Jupyter运行端口上;5)当用户访问Linux容器集群时,由Master节点对用户信息进行认证,认证成功则进入对应的Jupyter页面,从而实现对Linux容器集群的访问。进一步地,在Linux容器所在的宿主机上构建虚拟网桥,并在各虚拟网桥之间搭建GRE(GenericRoutingEncapsulation,通用路由封装)隧道,使得分布于不同宿主机上的Linux容器之间能互相连通,并利用iptables(Linux内核集成的IP信息包过滤系统)做NAT(NetworkAddressTranslation,网络地址转换)映射使得Linux容器能与外部网络通信。进一步地,Master节点使用伙伴算法为Linux容器集群分配一个子网,随后从该子网的IP地址段中随机选择IP地址并分配给Linux容器。进一步地,使用VLAN(VirtualLocalAreaNetwork,虚拟局域网)技术防止Linux容器数量过多时造成的广播风暴。进一步地,对同一个Linux容器集群内的Linux容器之间进行host(主机)信息登记,并进行互相之间的ssh(SecureShell,安全外壳协议)免认证登陆。进一步地,通过浏览器的cookie存储用户信息,当用户点击访问Linux容器集群的按钮时,会将存储于浏览器cookie中的用户信息发送到服务器端,在服务器端进行用户信息认证,验证成功,即可进入所启动的Jupyter页面内。在进入的Jupyter页面内,用户可以进入网页版终端进行操作,并可以免认证地登陆进集群内的其他Linux容器内,从而轻松地开发和部署分布式应用。一种多用户环境下利用浏览器访问Linux容器集群的装置,包括部署在Linux容器集群上的Master节点、若干Worker节点和http代理工具;所述Master节点用于进行集中管理,处理用户的创建Linux容器集群的请求,并将其分发到Worker节点;所述Worker节点是Linux容器的载体,用于处理Master发来的对Linux容器的操作请求;在创建Linux容器集群时,Master节点为Linux容器集群分配一个子网,并从该子网内部为Linux容器分配IP地址;所述http代理工具用于将对Linux容器集群访问的URL绑定到Linux容器的Jupyter运行端口上,以实现用户对Linux容器集群的访问。采用本发明的方案,用户可以点击网页上的创建Linux容器集群按钮,选择相关参数,如内存限额,磁盘限额等之后,在服务器端为用户创建好Linux容器集群。采用本发明的方案,用户可以对已存在的Linux容器集群进行扩张,通过点击网页上的对应按钮,可以新建Linux容器,并将其与原先的集群通过网络进行连接。采用本发明的方案,用户可以对已存在的Linux容器集群进行收缩,通过点击网页上的对应按钮,可以删除一个集群内的某个Linux容器。本发明的有益效果如下:本发明能够使用户通过浏览器访问Linux容器集群,同时保证在多用户环境下的安全可靠性。采用本发明的方法,用户可以点击网页上的相应按钮,在服务器端实现Linux容器集群的创建、扩张或收缩。用户可以使用Jupyter,在网页上进行应用开发和部署,同时,基于底层的Linux容器集群,用户还可以方便快捷地进行分布式应用的开发和部署。附图说明图1为本发明装置的架构图。图2是本发明装置的网络结构图。图3为本发明创建和访问一个容器集群的流程图。图4和图5是Linux容器集群子网分配所使用的的伙伴算法的流程图。具体实施方式下面通过具体实施例和附图,对本发明做进一步说明。本发明实现了一个通过浏览器创建和访问Linux容器集群的装置,图1为本发明装置的架构图,该装置部署在一个集群上,是一个Master-Worker模式的系统。其中Master节点(主节点,或可称作管理节点)进行集中的管理,用于处理用户通过点击网页按钮发来的URL请求,并将其解析,然后分发到Worker节点(工作节点)上,Worker节点是Linux容器的载体,并处理Master发来的对Linux容器的操作请求。本发明同时还提供了web界面,方便用户操作。下面详细解释具体的实施方式。在本发明中,使用了http代理工具configure-http-proxy来实现对URL的解析,初始时没有Linux容器集群,代理工具默认将所有http请求发送到Master节点的服务器上,如图1所示。图2是本装置的网络结构图。本装置使用openvSwitch工具在每个宿主机上构建一个虚拟网桥,并在这些网桥之间搭建GRE隧道,使得它们之间能直接互通,并使用iptables做NAT映射,使得Linux容器收发的网络包能经由宿主机的网卡进行传递,使得Linux容器能与外部网络通信。图3为本发明创建和访问一个容器集群的流程图。当用户点击网页上的创建集群按钮时,一个创建请求的URL被发送到Master节点上,Master会使用伙伴算法(如图4、图5所示)为该集群分配一个子网,随后从该子网的IP地址段中随机选择一个IP地址分配给第一个Linux容器,同时为该集群分配一个VLANID。然后Master会选择一个Worker节点,将创建Linux容器的请求发送给它。Worker节点收到请求后,会根据容器被分配到的IP地址和构建出来的虚拟网桥信息,以及用户创建时填写的参数生成配置文件,然后调用Linux容器的命令,以该配置文件为基础创建Linux容器。然后在宿主机网桥上对连接该IP地址的端口标记上该集群的VLANID。然后在该Linux容器内以用户和集群的信息为参数,启动Jupyter,并设置Jupyter访问的认证URL。在Worker的工作处理完成后,Master会将该容器的Jupyter运行端口与一个指定格式的URL绑定,这个URL对每个集群是唯一的且互不相同,该过程通过调用configure-http-proxy的API实现。在此之后,所有对该URL的访问都会定向到该容器的Jupyter的运行端口上。用户可以通过点击网页上的访问集群按钮对该集群的Jupyter页面进行访问,此时会将存储于浏览器cookie上的用户信息作为参数一并传递过去,该按钮会访问前面提到的指定URL,这个请求会被发送到Jupyter实例上,随后Jupyter会调用认证URL,认证URL会被发送到Master节点上,由Master节点对用户信息进行认证,认证成功,则会进入对应的Jupyter页面。当用户点击网页上的扩张集群按钮时,Master会从该集群的子网中随机选择一个IP地址分配出来(如图4所示),然后选择一个Worker节点,将创建Linux容器的请求发送给它,Worker节点收到请求,会根据容器被分配到的IP地址和虚拟网桥信息,以及用户创建时填写的参数生成配置文件,然后调用Linux容器的命令,以该配置文件为基础创建Linux容器。然后在宿主机网桥上对连接该IP地址的端口标记上该集群的VLANID。然后在该集群原有的其它Linux容器和这个新建的Linux容器之间分别做ssh的免认证登陆,并更新host文件的信息。当用户点击网页上的收缩集群按钮时,Master会根据要被删除的Linux容器的信息找到其所在的Worker节点,然后对Worker节点发送删除请求,对应的Worker节点会调用命令删除该Linux容器,在这之后,Master会把被删除的容器的IP地址释放到待分配地址池中,如图5所示。当用户点击网页上的删除集群按钮时,Master会读取该集群内所有Linux容器所在的Worker节点位置,分别对这些Worker节点发送删除请求,在所有Linux容器都被删除之后,Master会释放该集群被分配的子网的IP地址区间。以上实施例仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求书所述为准。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1