-
Notifications
You must be signed in to change notification settings - Fork 0
ClusterDesign
李志强 edited this page May 22, 2017
·
5 revisions
- NPL集群是一个为每个NPL用户提供云计算的应用。它由许多台计算机组成的集群发挥作用,因此我们需要有一个管理者去管理整个集群的硬件和NPL应用进程,它就是NPL Cluster Manager。
- 在一个NPL集群中,往往有许多台计算机,每台计算机都可以承担用户的计算任务,因此每台计算机都可以作为一个计算节点。
- 考虑到有许多的任务需要分配到多台计算机上,于是集群控制器就显得十分必要。因此在集群中必须要有一个控制节点,它作为整个集群的调度者,并且是集群初始化的条件。
- 基于以上的假设,提出以下网络结构,集群中的每台计算机都是互联的,并且每台计算机都作为计算节点,同时也作为控制节点,每一个控制节点都有控制台,用于查看集群中每台计算机资源的消耗情况和进程的运行情况。
- 每个节点有一个节点列表(NodeList),用于节点之间的相互通信。可以通过修改节点列表往集群中增加节点。
-
每个计算节点都必须安装NPLRuntime
git clone https://github.com/LiXizhi/NPLRuntime.git git submodule init git submodule update ./build_linux.sh
-
每个节点同时作为计算节点和控制节点,同时开启一个NodeServer(即NetServer)和一个NodeClient(即NetClient)
-
NodeServer的作用,当控制节点向自身节点请求资源和日志信息时,用于返回自身节点的计算资源和日志信息;并且返回用户请求执行的指令结果; NodeServer.lua
HostName = "node1", IP = " ", NodeList = {}, CPU = 0, Memory = 0, Disk = 0, Network = 0, ProcessList = {}, LogList = {}, local function activate() NPL.StartNetServer("127.0.0.1", "60001"); local worker = NPL.CreateRuntimeState(rts_name, 0); worker:Start(); if(msg and msg == ... ) return ... end end NPL.this(activate)
-
NodeClient的作用,作为控制节点向NodeList中所有节点请求其资源和日志信息 NodeClient.lua
local function activate() NPL.StartNetServer("0", "0"); NPL.AddNPLRuntimeAddress({host="127.0.0.1", port="60001", nid="simpleserver"}) local res = NPL.activate(string.format("(%s)%s:...", msg.rts_name, msg.nid or msg.tid), {TestCase = "TP", rts_name = msg.rts_name, data=msg.data}) end NPL.this(activate)