SaltStack运维工具在云数据库自动化部署与管理系统中的应用研究
2018-12-28邹国平新余学院数学与计算机学院江西新余338000
邹国平(新余学院数学与计算机学院 江西 新余 338000)
1 SaltStack运维工具
SaltStack本身是一种开源的基础架构集中化管理平台,相比其它商业产品,其部署及配置稍显杂。Saltstack是基于python开发的一套C/S架构配置管理工具,SaltStack使用SSL证书签方的方式进行认证管理,而底层使用ZeroMQ消息队列pub/sub方式通信。SaltStack具备配置管理、远程执行、监控等功能。通过部署 SaltStack环境,运维人员可以在成千上万台服务器上做到批量执行命令,根据不同的业务特性进行配置集中化管理、分发文件、采集系统数据及软件包的安装与管理等。SaltStack具有以下特性,帮助企业IT更好的实现系统批量管理:部署简单、管理方便;支持大部分的操作系统,如 Unix/Linux/Windows环境;架构上使用C/S管理模式,易于扩展;配置简单、功能覆盖广;主控端(Master)与被控端(Minion)基于证书认证,确保安全可靠的通信;支持API及自定义Python模块,轻松实现功能扩展;
SaltStack采用C/S结构来对云环境内的服务器操作管理及配置管理。SaltStack客户端(Minion)在启动时,会自动生成一套密钥,包含私钥和公钥。之后将公钥发送给服务器端,服务器端验证并接受公钥,以此来建立可靠且加密的通信连接。同时通过消息队列ZeroMQ在客户端与服务端之间建立消息发布连接。
2 基于SaltStack的云数据库系统总体架构
SaltStack的所有被管理客户端节点都是通过密钥进行加密通信,使用端口为4506。客户端与服务器端的内容传输,是通过消息队列完成,使用端口为4505。Master可以发送任何指令让Minion执行,salt有很多可执行模块,比如说CMD模块,在安装minion的时候已经自带了,它们通常位于python库中,locate salt|grep/usr/可以看到salt自带的所有东西。
Salt命令,将 cmd.run ls 命令从 salt.client.LocalClient.cmd_cli发布到 Master,获取一个Jodid,根据 jobid获取命令执行结果。Master接收到命令后,将要执行的命令发送给客户端 minion。Minion从消息总线上接收到要处理的命令,交给 minion._handle_aes处理。Minion._handle_aes发起一个本地线程调用 cmdmod执行ls命令。线程执行完 ls后,调用Minion._return_pub方法,将执行结果通过消息总线返回给master。
Master接收到客户端返回的结果,调用master.handle_aes方法将结果写的文件中 Salt.client.LocalClient.cmd_cli通过轮询获取 Job执行结果,将结果输出到终端。
3 基于SaltStack的云数据库系统实现
3.1依赖组件的安装。首先下载并安装epel源,执行以下指令,将epel.repo 存储到/etc/yum.repos.d 目录下。wget– o/etc/yum.repos.d/epel.repohttp://mirrors.aliyun.com/repo/epel-6.repo 并通过 Yum list命令来校验安装源是否生效。
3.2Master角色的安装。配置好yum源之后,只需要输入正确的命令,就可以在自动安装SaltStack的同时,将依赖包安装好。安装完成后,输入chkconfig salt-master on将master服务加入到开机启动项,这样每次系统启动,都会自动加载master服务。输入service salt-master start启动master服务。之后通过netstat–antp查询服务状态,显示安装生效。
3.3Minion角色的安装。安装完成后,输入 chkconfig salt-minion on,将minion服务加入到开机启动项,这样每次系统启动,都会自动加载minion服务。输入service salt-minion start,启动minion服务。
3.4Master端配置。SaltStack-Master是 SaltStack组件的核心服务,负责发布指令及配置文件的分发与管理,及客户端的管理功能。Master要想正常提供服务,需要接受客户端的证书认证请求。输入salt-key–l来查询客户端证书状态,再输入salt-key–A接受客户端认证。
3.5SaltStack测试。通过两个测试案例,可以验证 SaltStack是否运行正常,是否可以完成预定的功能。我们可以通过 salt'*'test.ping来测试客户端是否在线,并被master管理,如果返回True,则说明客户端已经被master管理,并处于在线状态。
4 结语
总之,使用自动化运维工具 SaltStack来部署云数据库,实现了云计算平台的集中管理和服务,能够提高数据运维团队的工作效果,同时降低了数据库服务器运维成本,值得技术推广。