Puppet自动化集群管理基础知识

发布者:上海IT外包来源:http://www.lanmon.net点击数:1342

作为一个开源集群管理框架,Puppet具有许多功能,如易于使用,快速部署和广泛的应用程序。它已累计超过250个用户,包括阿里巴巴,新浪,甲骨文等大公司。作者将引导您完成木偶技术及其简单应用。
背景介绍
在传统的服务器群集管理中,需要相应地配置每个附加服务器。如果服务器数量很少,可以逐个配置。但在当前的生产环境中,服务器数量是数万个。传统的集群管理解决方案既费时又费力,而且无法快速有效地适应生产环境的需求。目前,公司有超过30,000台Web服务器。如何快速部署它们成为公司内部亟待解决的问题。主要需求包括:
突然有一天,某个计算机房的DNS出现了问题,我需要更改DNS。
基于模板的业务很快就会启动。
Apache配置需要修改机器人文件的配置。
快速安装软件模块。
如果修改配置,则需要重新启动相应的服务。
有一天我们在一台机器上进行了测试以修改配置,有一天我们测试了另一台机器并修改了一个配置,累积得越多。
如何快速解决由上述情况引起的生产环境故障问题,我们对自动化集群管理工具傀儡进行了调查,从软件包,配置文件和服务三种资源入手,以及自动化管理设计服务器集群。
木偶
1.什么是木偶?
Puppet是一个跨平台的C/S架构集中配置管理系统,可用于管理Linux,Windows,Unix,Mac等上的用户,软件包,文件,服务和cron任务,并可以正确处理资源。在依赖关系之间。它是使用ruby语言开发的,但是用户不需要理解ruby语言,因为它只依赖于后缀为pp的文件。在构建puppet框架之后,只剩下模块的开发,模块开发是描述性的。语言和基本逻辑控制语句简单易懂,是管理和部署大规模集群系统的理想选择。2.木偶架构
Puppet使用C/S架构,分为puppet server(master)和puppet client(agent)。主服务器是管理所有节点的配置和管理中心。系统管理员需要编写与主节点上每个节点对应的pp文件来描述不同节点的资源集合和目标状态。每个代理程序定期查询主服务器以获取其自己的配置,并将结果作为报告提供给主服务器。
木偶
Puppet使用ssl身份验证。在客户端和主服务器之间的第一次通信认证通过后,证书将存储在主服务器上。当只有一个主机时,这不会导致问题。但是,在我们的设计中,为了确保高可用性和高并发性,master是一个集群。主群集的前端是负载平衡的。当同一客户端多次与主站通信时,无法保证连接相同的主站。保证获得证书。为此,puppet正式建议设置一个单独的CA认证服务器,以实现证书的统一集中管理。因此,在大规模集群管理系统中,公共木偶架构如上所示,并且公司也使用该架构来构建集群管理系统。
3. Puppet工作流程
Puppet既可以独立运行,也可以运行C/S架构,但在大多数情况下,它基于C/S架构。交互过程如下图所示。
木偶
代理通过ssl为主服务器建立身份验证。
建立身份验证后,puppet调用代理的facter来检测主机的一些内置变量,例如主机名,系统版本号,IP地址和有效负载。代理通过ssl加密将此信息发送给主服务器。
主机收到主机信息请求后,根据域名或IP地址将其发送到本机清单或ENC,查询节点配置信息。
在解析过程中,首先执行语法检查。如果存在语法错误,则会停止并返回错误消息,否则它将继续解析并生成目录。
Puppet客户端代理应用服务器生成的目录。
Puppet客户端代理在目录上执行代码验证和执行并记录结果。
代理商信息以报告的形式报告给主人。
这个过程结束了。
4. Puppet安装和配置
基于公司内部现有的DNS域名解析和LVS负载均衡服务,围绕整个集群管理系统的puppet架构图,在centos环境中,puppet的安装和配置方法如下:(1)硕士
目前,四个主人用于管理大约15,000台服务器。如果增加主机的压力,则容量将扩大。配置步骤如下:
1)安装与puppet相关的包,包括puppet-server,Apache,mod_ssl,mod_passenger。
木偶
安装上面的软件包时,系统会自动安装facter软件包和一些ruby依赖项。
2)编辑/etc/puppet/puppet.conf配置文件。
木偶
3)在CA服务器上复制证书,主要是将CA服务器上的ssl目录打包并将其放在主服务器上的ssl目录中。
4)初始化主服务器并生成必要的文件。
木偶
5)创建/etc/httpd/conf.d/puppet.conf配置文件。
木偶
6)为虚拟主机创建DocumentRoot。
木偶
7)开始傀儡。
木偶
2. CA.
主服务器和代理程序的身份验证机制位于单独的CA服务器上,便于管理和扩展主群集。配置步骤如下:
1)安装与puppet相关的包,包括puppet-server,Apache,mod_ssl,mod_passenger。
木偶
2)编辑/etc/puppet/puppet.conf配置文件。
3)创建/etc/puppet/autosign.conf配置文件。如果内容为“*”,则表示可以访问所有主机。
木偶
4)启动puppet master,初始化,生成密钥和自我认证。
木偶
5)为主服务器生成证书。
6)创建/etc/httpd/conf.d/puppet.conf配置文件。文件设置指的是主配置。
7)为虚拟主机创建DocumentRoot,请参阅主服务器的配置。
8)启动puppet并参考主配置。
3.代理人
Puppet客户端安装比较简单,配置步骤如下:
1)安装与木偶相关的包,包括addops-puppet,addops-puppet-agent-extra(公司包内)。第一个包是yum源包,第二个包是puppet扩展包,它依赖于puppet包并自动修改配置文件中三个变量ca_server,server和node_name_value的值。2)测试运行:puppet agent --test,默认同步环境是生产,可以手动添加环境参数,如--environment=staging,可以更改为临时环境。
5.木偶配置解释
puppet的主配置文件puppet.conf位于/etc/puppet /(社区版)目录中,该目录主要包含三个命名空间:main,master和agent,描述如下:
1)主要的通用配置选项
Confdir:配置文件存储目录,默认位于/etc/puppet中。
Vardir:动态数据存储目录,默认为/var/lib/puppet。
Logdir:存储日志的目录。默认值为/var/log/log。
Rundir:PID存储目录,默认为/var/run/puppet。
Statedir:状态存储目录,默认为$ vardir/state。
Ssldir:存储SSL证书的目录。默认值为$ vardir/ssl。
跟踪:发生错误时显示跟踪信息。默认值为false。
Filetimeout:检测配置文件状态变化的时间段,以秒为单位,默认为15秒。
Syslogfacility:指定syslog函数的级别。默认值为守护程序级别。
Manifdir:系统的启动文件存储目录。默认值为/etc/puppet/manifests。
Basemodulepath:存储模块的目录。默认值为/etc/puppet/modules,可以指定多个。
Pluginsync:当有自定义facter变量时,您需要将值指定为true。
Ca_server:身份验证服务器的名称。
2)主服务器配置选项
用户:后台进程执行的用户。
组:由后台进程执行的组。
Certname:执行ssl身份验证时变量的名称。默认值是主机名。
Node_name_value:节点的名称。默认值是主机名。
Mainfest:mainfest站点文件的名称。默认值为site.pp.
Bindaddress:绑定到后台进程的NIC地址接口。
Masterport:后台进程执行的端口。默认值为8140。
Ca:当身份验证服务器位于单独的服务器上时,您需要将该值指定为false。
3)代理客户端配置选项
类文件:显示从服务器加载的类列表。Localconfig:本地缓存配置目录。
Runinterval:客户端的检测持续时间。默认值为30分钟。
侦听:侦听器进程用于侦听服务器提供的同步信息。
报告:当值为true时,报告将发送给主服务器。
Node_name_value:节点的名称。默认值是主机名。
证书名称:身份验证名称。默认值是主机名。
服务器:主服务器的身份验证名称,即certname变量的值。
6. Puppet资源简介
资源是木偶系统的核心。抽象是足够彻底的。类似的资源被抽象为资源类型,例如包资源,文件资源,服务资源和exec资源。资源属性从其实现中被剥离,并且仅描述资源的状态而不是其特定的实现过程,以实现资源同步。
(1)资源定义
资源定义将值分配给资源类型的属性,也称为资源类型的实例化。资源的定义在pp文件中完成,其目录结构通常如下:
木偶
Files文件夹用于存储包的配置文件。 manifeststs文件夹用于存储资源的实例,即类文件,模板用于存储模板。
定义的资源语法如下:
木偶
Type是资源的类型,例如包资源包,文件资源文件等,title是字符串,在同一类型中必须是唯一的,每个属性用“,”分隔。通过将类和条件控制语句与资源定义相结合,可以实现资源的模块化,并且可以实现容易重用的效果。
(2)共同资源
根据公司内部运维组的需要,puppet主要应用于四个方面:包,配置文件,服务和执行。本文主要介绍前两种资源。此外,我们可以使用“Puppet describe resource name”命令查看资源的详细描述。
1)包装
木偶
Package资源的描述如上图所示。下面我们将介绍包资源的主要属性:
名称:包的名称,可以省略。如果省略,将继承title的值。
确保:指定包的状态,安装,卸载或升级。当需要卸载时,它被指定为“缺席”;当需要最新版本时,它被指定为“最新”;当需要某个版本时,它被指定为版本号。
来源:指定包的来源。如果本地yum存储库已包含该包,则可以不指定它。Provider:表示安装方法。
用例如下:
木偶
其中,package_name和package_ensure是传入的参数值,通过以参数的形式为属性赋值,可以大大提高模块的可重用性。
2)配置文件文件
文件资源的描述如上图所示。我们将介绍文件资源的主要属性:
确保:文件的状态,值不存在,存在,文件,目录和链接。
路径:文件路径,即未指定时的标题值。 “确保=>
缺席“共享。
所有者:文件的所有者。
组:文件组。
模式:文件的权限。
来源:文件的来源。
用例如下:
此处不描述服务和exec资源。您可以使用上述命令查看资源的详细描述以及如何使用它们。从上述情况可以看出,使用puppet描述语言,结合常用的逻辑控制语句,可以快速开发不同资源的类模块。
IT外包
>
400-635-8089
立即
咨询
电话咨询
服务热线
400-635-8089
微信咨询
微信咨询
微信咨询
公众号
公众号
公众号
返回顶部