具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例提供一种分布式存储ceph群集网络的集中管理方法,该方法通过以下步骤实现:
步骤1:客户端通过http协议发送其IP地址的json数据包到服务端;
步骤2:服务端对接收的json数据包进行解析,获得可用的该客户端的IP地址;
步骤3:所述客户端发送创建群集任务到服务端;
步骤4:所述服务端对接收的创建群集任务进行解析,获得群集提供服务的网络段;
步骤5:所述服务端根据创建群集任务确定需要连接的客户端的IP地址并且通过http协议发送指令到客户端端口的指定路由;
步骤6:所述客户端接收到指令后,根据预先设定的路由指令调用本地命令生成群集唯一的uuid,通过http协议将该uuid发送给服务端;
步骤7:所述服务端接收客户端的uuid并且存储在数据库中备用;
步骤8:所述客户端生成群集需要添加mon,osd以及管理使用的密钥文件,分别将三个密钥文件以字符串形式读取并进行base64加密,然后通过http协议将加密后的密钥文件发送到服务端;
步骤9:所述服务端分别接收三个密钥文件,并且直接存入数据库备用,群集网络创建完成。
该方法还包括:在群集网络中创建mon节点。
所述在群集网络中创建mon节点,具体通过以下步骤实现:
步骤10:所述客户端创建群集网络的mon节点,并且向服务端发送http任务;
步骤11:所述服务端接收http任务进行解析,获得需要连接的IP地址,并且在数据库中标记该ip地址为mon角色,将该ip地址以get参数的形式传递给客户端;
步骤12:所述客户端接收到服务端发来的数据,解析得到mon地址,然后请求服务端的接口,获得数据库中的密钥文件、mon角色的IP地址、提供服务的网络段以及群集uuid,所述客户端分别将所有文件写入到本地磁盘并保存,同时替换本地的配置文件模板,获得群集使用的新的配置文件并保存。
所述步骤12中,所述客户端根据mon角色的IP地址与本机地址是否一致确定,该客户端是否是mon节点,如果一致则确定该客户端是mon节点,则该客户端生成一个monmap文件。
该方法还包括:所述服务端根据列表页面对IP地址对应的客户端和/或服务服务端进行osd角色指定,具有osd角色的客户端或者服务端进行磁盘管理操作。
所述具有osd角色的客户端或者服务端进行磁盘管理操作,具体通过以下步骤实现:
步骤21:所述客户端根据IP地址添加缓存盘,发送任务给服务端,并且搜索选择的ip地址对应的客户端的硬盘情况;
步骤22:所述服务端接收到数据后,解析数据得到需要连接的客户端ip地址,连接客户端ip发送指令;
步骤23:该客户端接接收指令后,通过本地命令查询客户端所有硬盘,并且整理成json数据返回包返回给服务端,返回的json数据返回包包括硬盘名称、硬盘大小、磁盘映射文件的位置;
步骤24:所述服务端接收到json数据返回包,提示客户端选择缓存盘和数据盘,选择完成后,客户端发送选择结果到服务端;
步骤25:所述服务端得到选择的硬盘名称,记录到数据库并返回记录成功的结果。
当所述客户端选择的缓存盘为ssd硬盘后,该方法还包括以下步骤:
步骤31:所述客户端还选择选择需要的分区数量,发送给服务端选择结果;
步骤32:所述服务端接收到选择结果,通过数据库查询硬盘所属ip,连接客户端ip地址,发送分区的指令到客户端。
步骤33:所述客户端接收指令并解析,获得需要分区硬盘名称,使用dd命令先覆盖该硬盘的分区信息,然后将硬盘转化为GPT格式,再按照每个分区90GB的分成相应数量的分区,完成后返回结果给客户端;
步骤34:所述客户端接收指令后,根据分区的数量,在数据库中存储3~4条不等的分区记录,并且和缓存盘进行关联。
所述具有osd角色的客户端或者服务端进行磁盘管理操作,还具体通过以下步骤实现:
步骤41:缓存盘添加完成之后,所述客户端根据IP地址添加数据盘,发送添加数据盘的任务给服务端;
步骤42:所述服务端接收任务并解析,获得客户端ip地址、数据盘名称和缓存分区名称;将数据记录到数据库当中,并且开始挂载硬盘,所述服务端通过http协议连接客户端IP地址,发送硬盘挂载指令,将得到的参数传递给客户端;
步骤43:所述客户端接收指令并解析得到参数,先根据数据盘的名称,对数据盘进行分区信息覆盖,然后执行本地命令进行硬盘挂载,挂载结果返回给服务端;
步骤44:所述服务端得到返回的结果,根据结果判断成功与否,挂载成功后,即可进行激活操作,发送数据盘激活任务到服务端;
步骤45:所述服务端接收任务并解析,根据数据库关联信息得到客户端的ip地址,发送激活指令到客户端;
步骤46:所述客户端接收激活指令,调用本地命令执行激活操作,操作结果返回给服务端;
步骤47:所述服务端得到结果后基于返回的数据进行判断,如果成功则数据盘添加完成。
所述服务端是指管理平台所在服务器。
所述客户端是指被管理服务器。
角色:指所选择机器可提供的服务类型,有两种:osd角色,mon角色。
所述Osd角色是指提供数据存储的服务器。
所述Mon角色是指提供数据查询和监控的服务器。
所述任务指图形界面发送给服务端的操作数据。
所述指令是指服务端经过任务分解后发送给客户端的操作数据。
所述缓存盘是指数据缓存所使用的硬盘,通常情况下是一块480GB的ssd硬盘(包含但不限于SATA/PCIE接口),只存在于角色为osd的服务器。
所述数据盘是指数据存储所使用的硬盘,通常情况下是一块10GB以上硬盘(包含但不限于SATA/PCIE接口),只存在于角色为osd的服务器。
实施例1:
本发明实施例提供一种分布式存储ceph群集网络的集中管理方法,该方法通过以下步骤实现:
1)操作人员通过页面按钮,使用http协议,发送任务到服务端,发送的数据包括客户端的IP地址.路由地址为/API/AddHost
2)服务端接收前台的数据,经过go语言对json数据的解析,得到可用的客户端IP地址为x.x.x.1,记录到数据库备用
3)操作人员操作页面勾选一台客户端IP地址,并点击新增群集按钮,发送创建群集的任务到服务端.此处页面会提示输入群集服务的网络段,一般情况下为:x.x.x.0/24
4)服务端接收前台的数据,经过go语言对json数据的解析,得到群集提供服务的网络段为x.x.x.0/24,记录数据库,并返回结果:{success:0,msg:xxx},如果成功则继续执行,如果失败则返回失败信息,界面判断返回的信息内容,如果success不为0,则代表失败,提示错误信息msg:xxx,如果为0,则提示成功
5)上述执行成功后,服务端通过json解析,得到需要连接的IP地址x.x.x.1,并且通过http协议,发送指令到客户端的32107端口的指定路由.不发送任何数据,路由地址为/auto/CreateNewCluster
6)客户端接收到指令,根据预先设定的路由指令,调用本地命令生成群集唯一的uuid,这个uuid是随机生成的32位字符串(包含数字和小写字母),客户端生成群集的uuid后,通过http协议,将uuid发送给服务端的31208端口.
7)服务端接收到来自客户端的数据,存储在数据库中备用,并同时返回是否存储成功的信息给客户端,客户端得到结果:如果成功,则继续执行;如果失败,则终止,并且客户端返回失败内容以json形式{success:2,msg:xxx}给服务端,服务端经过判断返回2,则反馈给前端页面失败提示,并显示失败内容msg:xxx
8)上述执行成功客户端同时生成群集需要添加mon,osd以及管理使用的密钥文件key,需要注意的是每个群集的密钥文件都是随机生成的,不同的群集不可混用.客户端生成密钥文件后,分别将三个密钥文件以字符串形式读取并进行base64加密,然后通过http协议连接服务端的32108端口,将加密后的key的发送给服务端.
9)服务端分别接收三份数据,得到的数据不进行解析,直接存入数据库备用,并将存储成功的信息返回给客户端确认:如果成功,则继续执行,如果失败,则终止,并且客户端返回失败内容以json形式{success:2,msg:xxx}给服务端,服务端经过判断返回2,则反馈给前端页面失败提示,并显示失败内容msg:xxx
10)上述执行成功后,操作人员通过页面操作创建群集的mon节点,勾选x.x.x.1,并且向服务端发送http任务,添加mon,发送的内容/API/AddCephMon,参数为json格式数据,包含ip,也就是勾选的IP地址,及mon地址.
11)服务端接收数据经过解析,得到需要连接的IP地址,在数据库中标记这个ip地址为mon角色,连接这个客户端的32107端口,并将ip地址以get参数的形式传递给客户端
12)客户端接收到服务端发来的数据,解析得到mon地址,然后请求服务端的接口,得到存入数据库中的key文件,mon的IP地址(可以是多个),提供服务的网络段以及群集uuid,并通过写入文件的形式,分别将三个key文件写入到本地磁盘并保存,同时替换本地的配置文件模板(替换网段字段,群集uuid字段,以及mon的ip地址和主机名字段),得到群集使用的新的配置文件并保存
13)此处需要判断如果mon地址和本机地址一致,则说明本机当前应该是mon节点,程序会调用本地命令,生成一个monmap文件,供mon节点使用;如果mon地址和本机地址不一致,并且本机已经是一个mon节点,则需要重新生成monmap文件;如果mon地址和本机地址不一致,并且本机并不是mon节点,则不进行monmap文件的生成.
14)此时的群集因为已经有了一个mon节点,可以查询一些基本信息
15)以上操作完成后,操作人员在服务器列表页面对IP进行osd角色指定,进行磁盘的管理操作,如果不指定服务器的角色为osd,则无法进行以下操作(服务器可以同时为mon和osd)
16)首先添加缓存盘,操作人员在缓存盘界面点击添加,则会有弹出框提示选择客户端的ip,选择一个ip后,页面会动态发送任务给服务端,搜索选择的ip的硬盘情况
17)服务端接收到页面传输过来的数据后,解析数据得到需要连接的客户端ip,连接客户端ip发送指令,路由地址为/auto/GetDisk
18)客户端接接收指令后,会通过本地命令,查询客户端所有硬盘,并且整理成json数据返回给服务端,返回的数据包括硬盘名称,硬盘大小,磁盘映射文件的位置
19)服务端接收到返回数据,返回给前台页面,页面实时渲染,供客户选择缓存盘,和数据盘,这个缓存盘一般情况下会选择ssd硬盘,选择完缓存盘后,会发送任务给服务端,告知选择结果
20)服务端得到选择的硬盘名称,记录到数据库并返回记录成功的结果
21)以上操作完成后,操作人员继续选择已经选择为缓存盘的ssd硬盘,并且选择需要的分区数量,分区数量最大为4,最小为3,发送给服务端选择结果
22)服务端接受到选择结果,通过数据库查询硬盘所属ip,连接客户端ip,发送分区的指令到客户端,路由地址为/auto/Partedomap,参数为硬盘名称以及需要分区的数量
23)客户端接受指令,并解析,得到需要分区硬盘名称,使用dd命令先覆盖该硬盘的分区信息,然后将硬盘转化为GPT格式,再按照每个分区90GB的分成相应数量的分区,以上步骤都是调用***命令完成,完成后返回结果给客户端.
24)客户端接收指令后,根据分区的数量,在数据库中存储3~4条不等的分区记录,并且和缓存盘进行关联,并将结果返回值前台.
25)用户在得到缓存盘分区成功后,客户进行添加数据盘操作
26)用户在数据盘界面点击添加,则会提示选择IP,选择IP时,前端会通过ajax实时更新内容展示出来存储在服务端数据库里面硬盘的记录,并且该记录会排除掉已经被指定为缓存盘的硬盘和已经选择过的数据盘,选择数据盘,会提示选择使用的缓存盘分区,这个数据是也是通过页面ajax调用服务端接口,得到缓存盘的分区信息这里通过后台数据的记录排除了已经使用过的缓存盘分区.选择完成后点击确定,发送添加数据盘的任务给服务端.
27)服务端接收任务并解析,得到多个参数:客户端ip,数据盘名称,缓存分区名称.将数据记录到数据库当中,并且开始挂载硬盘,服务端通过http协议连接客户端IP,发送硬盘挂载指令,将得到的参数传递给客户端.
28)客户端接受指令并解析得到参数,先根据数据盘的名称,对数据盘进行分区信息覆盖,防止旧数据对执行结果造成影响,然后执行本地命令进行硬盘挂载.挂载结果返回给服务端
29)服务端得到返回的结果,根据结果判断成功与否,提示到前端页面供操作人员查看
30)挂载成功后,即可进行激活操作,操作人员选择数据盘,对选择激活按钮,发送数据盘激活任务到服务端
31)服务端接收任务并解析,根据数据库关联信息得到客户端的ip地址,发送激活指令到客户端
32)客户端接收激活指令,调用本地命令执行激活操作.操作结果返回给服务端
33)服务端得到结果后基于返回的数据进行判断,如果成功则一个硬盘的完整添加完成,如果失败,则查看返回的信息,操作人员进行排错处理.
34)以上步骤可以按照需求再次执行添加mon,osd角色的服务器,或添加硬盘
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。