发明内容
本发明解决的技术问题在于提供分布式***的快速配置方法;解决目前过于依赖手工配置,耗时比较长,配置效率低,容易出错,以及组件配置可复用性低的问题。
本发明解决上述技术问题的技术方案是:
所述的方法由配置控制器、网络配置模块、配置清理模块和组件配置模块实现;***配置启动之后,配置控制器启动,读取用户输入的计算节点的网络信息和节点类型信息以及节点的配置项等配置信息,生成配置列表;然后控制器通过调用配置清理模块,将环境上的原有组件的配置全部清空,对环境进行初始化;然后配置控制器根据网络控制信息,启动网络控制模块,进行网络配置和启动;配置控制器接收到网络配置成功的反馈之后,控制器通过组件配置模块进行配置,配置成功之后反馈配置信息。
由配置清理模块检查原有的组件配置,如果原来存在组件的话,先停止原有组件的服务,同时把原有组件的配置全部清空;然后向配置管理器返回处理的结果。
所述的网络配置模块执行操作***本地的命令完成主机名、IP地址、DNS和网络类型的配置;然后向配置管理器返回处理的结果。
所述的组件配置模块包括组件配置文件模块、组件选项配置模块和组件服务配置模块;其中组件选项配置模块结合组件配置文件模块、组件配置信息完成所有配置选项的配置;组件服务配置模块负责组件服务的服务注册、初始化、日志重定向。
所述生成的组件配置列表信息包括节点配置类型,节点名称,节点ip信息,共享存储信息,节点虚拟化类型,节点虚拟机远程访问类型和节点存储类型。
所述配置清理模块需要清理的信息包括节点相关的服务,节点的相关配置,备份节点的数据,定时任务和域名。
所述组件配置模块的组件选项配置模块包括管理节点和实现端以及服务端在同一节点的全选模式,管理端和服务端的管理端模式,实现端和服务端的实现端模式。
本发明方案的有益效果如下:
1、本发明方法实现的配置程序只需要在配置前一次性传入网络和组件的配置信息,然后就可以在没有任何人工干预的情况下完成一个复杂的分布式***的配置,是一种自动化的配置框架;
2、本发明的方法具有很高的复用性,分布式***新增加模块的配置只需要少量的开发即可以支持自动化的配置,可以减少分布式***开发者在***配置方面开发的工作量。
具体实施方式
如图所示,本发明方法按照如下步骤实现。
(1)配置控制器读取用户输入的节点关于网络、组件等配置的信息,生成组件配置列表,本发明使用shell脚本描述:
控制器通过执行控制器脚本config.sh,例如下边例子:
./config.sh all gcloud44150 20.251.44.150 255.255.255.0 20.251.44.254 8.8.8.820.251.44.150 300 20.251.44.150 20.251.44.150 kvm vnc qcow2 SYSTEM″
将参数传递给控制器,并且生成配置列表。
export GCLOUD_NODETYPE=$1
export GCLOUD_HOSTNAME=$2
export GCLOUD_IPADDR=$3
export GCLOUD_NETMASK=$4
export GCLOUD_GATEWAY=$5
export GCLOUD_DNS1=$6
export GCLOUD_NFSIP=$7
export GCLOUD_LVSIZE=$8
export GCLOUD_MGIP=$9
export GCLOUD_NODEIP=${10}
#set kvm or xen,default is kvm
export GCLOUD_HYPERVISOR=${11}
#set vnc or spice,default is vnc
export REMOTE_TYPE=${12}
#set lvm or qcow2,default is lvm
export VOL_TYPE=${13}
#set SYSTEM or SYSTEM-VLAN,default is SYSTEM
export GCLOUD_NETTYPE=${14}
execfile=config-after-install_standard #控制器目录
execfiledir=/root/config-after-install_standard #控制器位置
execfiledir_sh=/root/config-after-install_standard/sh
argesfile=${execfiledir}/getarges.txt #配置清单列表
#argesfile=/backup/config-after-install_standard/getarges.txt
echo″″>$argesfile
echo″gcloud_nodetype=$GCLOUD_NODETYPE″>>$argesfile
echo″GCLOUD_HOSTNAME=$GCLOUD_HOSTNAME″>>$argesfile
echo″GCLOUD_IPADDR=$GCLOUD_IPADDR″>>$argesfile
echo″GCLOUD_NETMASK=$GCLOUD_NETMASK″>>$argesfile
echo″GCLOUD_GATEWAY=$GCLOUD_GATEWAY″>>$argesfile
echo″GCLOUD_DNS1=$GCLOUD_DNS1″>>$argesfile
echo″GCLOUD_NFSIP=$GCLOUD_NFSIP″>>$argesfile
echo″GCLOUD_LVSIZE=$GCLOUD_LVSIZE″>>$argesfile
echo″GCLOUD_MGIP=$GCLOUD_MGIP″>>$argesfile
echo″GCLOUD_NODEIP=$GCLOUD_NODEIP″>>$argesfile
echo″GCLOUD_HYPERVISOR=$GCLOUD_HYPERVISOR″>>$argesfile
echo″REMOTE_TYPE=$REMOTE_TYPE″>>$argesfile
echo″VOL_TYPE=$VOL_TYPE″>>$argesfile
echo″GCLOUD_NETTYPE=$GCLOUD_NETTYPE″>>$argesfile
else
echo″you should install${execfile}first″
exit${RETVAL}
fi
(2)调用配置清理模块,如果原来存在组件的话,先停止原有组件的服务,同时把原有组件的配置全部清空,并且清理共享存储,备份节点的数据,清理定时任务和域名;然后向配置管理器返回处理的结果:
配置清理模块代码如下:
(3)控制器控制器调用网络控制模块,进行节点的基础网络的配置,其中配置的信息包括:节点服务器的名称;网络ip地址;检测内外网通信。
网络控制模块为gcloud-base.sh模块代码内容如下:
(4)配置管理器根据读取的组件配置信息,调用组件配置模块完成列表中组件的配置,组件配置模块分为三类,在三类当中同时执行组件配置文件配置,以及组建服务配置和组件定时任务配置:
组件配置模块代码如下:
类型一:配置管理端,实现端,服务端在同一个节点
类型二:管理端在一个节点
类型三:实现端单独在一个节点
(5)完成所有的配置,并且反馈配置信息。
通过输出的日志文件查看出现的问题,和反馈的配置信息。