自动化运维工具Puppet + MCollective环境搭建手册V1.0_第1页
自动化运维工具Puppet + MCollective环境搭建手册V1.0_第2页
自动化运维工具Puppet + MCollective环境搭建手册V1.0_第3页
自动化运维工具Puppet + MCollective环境搭建手册V1.0_第4页
自动化运维工具Puppet + MCollective环境搭建手册V1.0_第5页
已阅读5页,还剩53页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

自动化运维工具

Puppet+MCollective

环境搭建手册

V1.0

IT管理效劳部

2021.10.10

编号日期描述版本作者审核

12021.10.10创立文档1.0鞠向明

目录

一、Puppet介绍6

1.为什么要开发puppet6

2.作为工具的puppet7

3.稳定性7

4.puppet的细节和原理8

5.底层支撑工具Providers8

6.彳修改系统酉己置9

7.资源之间的关系9

8.exec资源9

9.puppet语言9

10.语言的其他特性14

11.puppet语言高级特性16

12.语言教程18

13.典型的puppet使用方法18

14.总结18

二、安装puppet19

1.更新yum源19

2.配置主机名19

3.安装puppet效劳端20

1)安装软件包20

2)验证安装包20

3)修改主机配置文件20

4)配置文件效劳21

5)启动puppet-server效劳21

4.安装Puppet客户端21

1)安装软件包21

2)配置主机名21

3)酉己置puppet客户立需22

4)启动客户端后台进程22

5.测试连接22

6.节点管理23

三、Puppet参考文档23

四、MCollective介绍24

1.简介24

2.MCollective特点24

五、安装MCollective25

1.server端安装25

1)安装软件包25

2)酉己置activemq26

3)酉己置mcollective26

4)启动27

2.client安装配置:27

1)安装软件包27

2)配置客户端27

3)启动客户端28

3.查看连接情况28

4.其他使用命令28

六、Rsync安装29

1.Rsync介绍29

2.安装rsync29

3.配置rsync29

1)设定/etc/rsyncd.conf30

2)设定/etc/rsyncd.secrets密码文件31

3)设定rsyncd.motd文件32

4.rsyncd.conf配置文件详解32

1)全局定义33

2)模块定义34

5.启动rsync效劳器36

6.防火墙设置37

7.通过rsync客户端来同步数据37

8.一些实例39

9.FAQ43

七、一键安装client脚本47

一、Puppet介绍

以下介绍来自:〃puppet.wikidot/

关于puppet各资源及其用法,请参考上述网址。

1.为什么要开发pufjpet

系统管理员都喜欢自己写点小工具来让自己的工作完成的更快或者更好,

不管是在大企业管理大量的效劳器还是只管理两三台机器.但是很少人会把他

们的工具发布出来.也就是是说极少有工具能被重用,或者说很多工具就只能在

所在的组织内部有用.拷贝给别的组织,他们也用不上.也就是说,每个系统管理

员,在一个新的公司渚B会另起炉灶开发一套基于ssh,for循环的"系统"来帮助自

己完成系统管理任务.

开发puppet是为了让系统管理员社区可以相互交流和共享成熟的工具,防

止重复的劳动.通过以下两个特性来实现这一目标:

1.提供一个简洁的但是强大的框架来完成系统管理任务

2.系统管理任务可以描述成puppet语言,因此可以相互分享代码,就像分享

其他语言的代码一样,比方python,c等

因此,作为系统管理员的你可以更快的完成工作,因为你可以用puppet来处

理所有的管理细节.甚至你还可以下载其他管理员的puppet代码来让你的工作

完成的更快.

2.作为工具的p叩pet

puppet是一个配置管理工具,典型的,puppet是一个C/S结构,当然,这

里的C可以有很多,因此,也可以说是一个星型结构.所有的puppet客户端同一

个效劳器端的puppet通讯.每个puppet客户端每半小时(可以设置)连接一次

效劳器端,下载最新的配置文件,并且严格按照配置文件来配置效劳器.配置完

成以后,puppet客户端可以反应给效劳器端一个消息.如果出错,也会给效劳器

端反应一个消息.

3.稳定性

puppet与其他手工操作工具有一个最大的区别就是puppet的配置具有稳

定性,因此你可以屡次执行puppet,一旦你更新了你的配置文件,puppet就会

根据配置文件来更改你的机器配置,通常每30分钟检查一次.puppet会让你的

系统状态同配置文件所要求的状态保持一致.比方你配置文件里面要求ssh效

劳必须开启.假设不小心ssh效劳被关闭了,那么下一次执行puppet的时

候,puppet会发现这个异常,然后会开启ssh效劳.以使系统状态和配置文件

保持一致.puppet就象一个魔术师,会让你的混乱的系统收敛到puppet配置文

件所想要的状态.

可以使用puppet管理效劳器的整个生命周期,从初始化到退役.不同于传统

的例如sun的Jumpstart或者redhat的Kickstart,puppet可以常年让效劳

器保持最新状态.只要一开始就正确的配置他们,然后再也不用去管他们.通常

puppet用户只需要给机器安装好puppet并让他们运行,然后剩余的工作都由

puppet来完成.

4.puppet的细节和原理

puppet的目的是让你只集中于你要管理的目标,而忽略实现的细节,例如命

令名,参数或者文件格式.puppet把系统里面的用户,软件包,效劳看作是"资源",

puppet的作用就是管理这些资源以及资源之间的相互联系.

5.底层支撑工具Providers

puppet有很多的资源类型,例如文件,用户,软件包,效劳,不同的操作系统

上对资源的管理命令是不一样的,例如debian下面用apt-get安装软件,redhat

下面用yum安装软件.

因此puppet对同一资源的管理可以有多个实现,配置资源的时候,可以明

确的指定用什么provider.例如在redhat上配置一个package资源的时候,

可以指定provide是yum.

6.修改系统配置

puppet通过管理资源的方式来管理系统,例如管理某个软件是否要安装,

是安装最新的还是安装了就行.管理某个效劳是否开启,管理某个文件的属性,

内容等等.所有的资源都有对应的几个属性可以设置.通过设置属性的方式来

管理资源.有一种特殊的属性可以用在所有的资源上面,这种属性叫做

metaparams(元参数或者元属性).

7.资源之间的关系

支持资源之间的关系配置是puppet的关键特性之一.一个资源的变更可以对另一个资

源产生一个动作.例如/etc/apache.conf这个资源有改动,可以让/etc/init.d/apache这个资源

reload一下.

假设一个资源依赖另一个资源,那么puppet会优先配置被依赖的资源,因此如果你的配置

文件没有准备好,对应的效劳是不会先启动的.

8.exec资源

有时候,没有适宜的资源来管理效劳器上的配置,为了处理这个情况,puppet提供一个叫

做exec的资源类型.利用这个资源,你可以执行外部命令.例如你可以用svnadmin命令来创

立—svn库.

9.puppet语言

资源

puppet的全部就是管理资源,因此puppet语言的焦点就是处理这些资源,下面

是一个根本的管理单个资源的例子.

file{'7etc/hostsn:

owner=root,

group=root,

mode=644

上面的列子给出了定义一个资源所需要的所有组件,类型,名字和属性.定义了一

个file资源,资源的title(标题)是"/etc/hosts",资源的属性里面设置了该

文件属于那个用户和组,以及文件的权限.

也可以在一个大括号里面定义多个资源,通过分号来区分.

file{

'7etc/sudoersH:

owner="root”,

group="root",

mode=644;

'7usr/sbin/sudoH:

owner="root",

group="root",

mode=4111

防止重复配置

puppet的编译器会防止在不同的代码段里面管理同一个资源,如果在不同的代

码段对同一个资源进行配置,执行puppet的时候你会得到一个语法错误.

puppet探测这种冲突的情况是通过判断资源类型和资源的title(标题);如果

两个资源有相同的资源类型和title;那么就认为这两个资源是表示同一个资源.

类class

下面讨论如何组合各种资源,把多个相关的资源定义在一起,组成一个类.例如

下面的代码.

classsudo{

package{sudo:ensure=installed}

file{

"/etc/sudoers":

owner="root",

group="root”,

mode=644;

'7usr/sbin/sudo":

owner="root”,

group="root",

mode=4111

)

)

你在别的代码段includesudo这个类,就会把sudo这个软件包(package那

里定义)安装好,以及两个配置文件设置好.

Inheritance继承

puppet支持有限制的类的继承,但是它只有一个唯一的作用就是:子类里面

的属性可以覆盖父类里面的属性.下面是一个勉强正确的例子.

classbase{

file{"/my/file”:content=template("base,erb")}

}

classsubinheritsbase{

#overridethecontent

File["/my/file”]{content=template("other,erb")}

注意,在子类里面的资源类型的定义是用的大写的File;表示对这个资源重新定义,如果用小

写的file;就会引起前面说的资源的重复配置的情况彳导到一个语法错误.

一个复杂的真实的例子

生活总是不容易阿,真实环境中,一个包经常关联到几个效劳,同时又关联到不同

的配置文件.几乎所有的类unix系统里面都有ssh效劳.通常,你不只是想安装

ssh包,而且你还想启动ssh效劳.看看下面的例子

classssh{

package{ssh:ensure=installed}

file{sshd_config:

name=$operatingsystem?{

Darwin="/etc/sshd_config",

Solaris=7opt/csw/etc/ssh/sshd_config",

default=7etc/ssh/sshd_config"

),

source="puppet://server.domain/files/ssh/sshd_config"

)

service{ssh:

name=$operatingsystem?{

Solaris=openssh,

default=ssh

),

ensure=running,

subscribe=[Package[ssh],File[sshd_config]]

上面的代码安装好ssh包,并开启ssh效劳,因为在不同的操作系统上面,ssh的配置文件名字

不一样,所以还可以通过判断操作系统的类型来指定资源的title(标题).那么操作系统的类

型是怎么判断的呢?下面就会解释这个问题.

FacterVariablesfacter变量

在上面的ssh代码里面,我们引入了一些新的东西,首先是$operatingsystem这个变量,这个

变量被引用,在puppet分析代码的时候,会把从facter传送过来的对应的值赋值给这个变量.

你可以单独手工执行facter这个命令,这个命令会打印出它所收集到的关于主机的信息,例如

ip地址等等.facter把收集到值发送个puppet效劳器端,效劳器端就可以根据不同的条件来对

不同的机器生成不同的puppet配置文件.最重要的一个就是效劳器的主机名.

selectors选择器

另一个新东西就是?{...}这个语法,通过对?前面的变量与括号里面的选择项进行比照,

然后把相应的值赋值给资源,例如上面的例子,Soperatingsystem如何是Solaris,那么ssh这个

资源的name属性就是“openssh”;如果不匹配.就赋值成defualt的指,匹配将区分大小写.

titlevsname(标题和名字)

如果你足够细心,你会发现我们资源指定了第2个名字,例如上面的service资源ssh.

注意,冒号前面的名字叫做title(标题),标题的作用让作者标识不同的资源,是写给人以及

puppet语法分析器看的.因此配置资源相互关系的时候,也是用资源的title.name是指定这个

资源的具体路径,是写给计算机看的.通常,name会默认和title的值一样.因此,你可以省略

name.只有情况特殊的时候才设置name属性.

资源之间的关系

最后,我们来分析所有资源直接的关系,配置文件,包,效劳.最后一行的File[sshd_config]语法

指定了一个资源参考,注意这里是用的资源的title,这样你就不用指定资源的全路径.

subscribe=[Package[ssh],File[sshd_config]]这个语句表示,如果packagensshH或者文件”

sshd_config"有修改,servicessh需要重启.

10.语言的其他特性

真相

几乎所有的东西和符号在puppet里面都被看作是字符串,包括数字和布尔值.

但是如果你用引号把true和false引起来,他们会被当做字符串,例如你想赋值

给某个资性"yes"的字符串.

变量

我们已经看过什么是变量了,当然,你还可以直接给他赋值,例如

$myvar=value

puppet不允许你在同一个类里面对一个变量进行两次赋值.

更多的条件语句

我们已经在前面介绍过了选择器〔selectors〕,在为变量选择特定的值的时候非常有用,

Puppet同时也支持条件语句,使得你能根据不同的条件导入不同的资源定义〔resource

specifications]:

case$operatingsystem{

Darwin:{file{*7some/file":ensure=>present}}

default:{file{"/other/file":ensure=>present}}

)

与选择器(selectors]配合,case语句可以进行case-insensitive匹配。

这里还有一个简单的if/else结构:

if$should{

file{"/some/file'*:ensure=>present}

}else{

file{"/other/file":ensure=>present}

)

另外,Puppet从版本0.24.6开始支持比拟运算符。

数组

puppet非常有限的支持数组这种类型,你可以创立数组,并且给他们赋值,但是

你不能删除它们.数组用的最多的情况就是上面ssh例子里面,资源依赖哪种情

况.或者是一次管理多个相同类型的资源.例如:

user{[bin,adm]:ensure=present}

函数

puppet支持简单的函数语法,例如

notice(nThisisalogmessage**)

puppet提供一些有用的函数,例如template利用erb模板来生成文件内容,这

样就可以根据不同主机的情况,生成不同的配置文件.例如配置squid的内存缓

存大小,可以利用facter返回的内存值做一个简单的数学计算,然后写入到

squid的配置文件,就是通过template来完成的.另外一个函数include可以

读入另外的puppet配置文件或者类.这样可以把puppet的文件分割的更有规

津具体的文档参考puppet的函数文档[点这里]

11.pu叩et语言高级特性

定义

puppet里面有一个非常有用的语法结构,叫做"definitions",通过

definitions可以把多个资源包装成一个资源,或者把一个资源包装成一个模型,

便于使用.例如,在debian里面管理一个apache虚拟机非常简单,把一个虚拟主

机的配置文件放到/etc/sites-available/里面,然后做一个符号链接到

/etc/sites-enabled目录.你可以为你每个虚拟主机复制同样的配置代码,但是

如果你使用下面的代码就会更好和更简单.

definevirtual_host($docroot,$ip,$order=500,$ensure="enabled"){

$file='7etc/sites-available/$name.conf

#Thetemplatefillsinthedocroot,ip,andname,

file{$file:

content=>template(Hvirtual_host.erb"),

notify=>Service[apache]

)

file{'Vetc/sites-enabled/Sorder-Sname.conf1:

ensure=>$ensure?{

enabled=>$file,

disabled=>absent

)

}

)

然后,你就可以使用这个定义来管理一个apache虚拟主机,如下面代码所示

virtual_host{"丫eductivclabs":

order=>100,

ip=>”00”,

docroot=>"/var/www/reductivelabs/htdocs"

)

你可以在其他地方重用这个定义,另一个定义的用法就是包装一组exec资源,

让使用者更加清晰思路.例如下面的代码实现了一个svn库的创立的定义.

#Createanewsubversionrepository.

definesvnrepo($path){

exec{ncreate-svn-$nameH:

command=>*7usr/bin/svnadmincreate$path/$nameH,

creates=>n$path/$nameH#onlyrunifthisfiledoesnotexist

)

)

然后,你可以在其他地方用下面的代码来创立一个svn库

svnrepo{puppet:path=>,7var/lib/svnn}

nodes节点

最后一个关于puppet语言的语法是节点定义(nodedefinition),节点定

义很象类定义,也支持继承特性.当一个节点(puppet客户端)连接到puppet效

劳器端,puppet解析器会查找这个节点的node代码片断,然后利用这个代码片

断来生成该客户端的配置代码.puppet里面主机名来标明一个主机,因此主机名

在puppet里面相当重要.如果puppet找不到匹配该主机名的node定义,就

会用默认的节点定义来配置该主机.在node里面使用主机名,需要用单引号把

主机名括起来.

node'example'{

includepublickey_auth

}

在上面的代码中,如果example这个主机连接至Upuppet效劳

器,puppet效劳器就会按照上面的代码来配置example这个机器.

12.语言教程

详细的puppet语言教程,参考程uppet教程]

13.典型的p叩pet使用方法

puppet既可以在单机上使用,也可以以c/s结构使用.在大规模使用puppet

的情况下,通常使用c/s结构.在这种结构中puppet客户端只是指运行puppet

的效劳器,puppet效劳器端是只运行puppetmaster的效劳器.

puppet客户端首先会连接到puppet效劳器端,并且通过facter工具把客

户端的配置信息发送给效劳器端.效劳器端通过分析客户端的主机名,通过

node定义,找到该主机的配置代码,然后编译配置代码,把编译好的配置代码发

回客户端.客户端执行代码完成配置.并且把代码执行情况反应给puppet效劳

器端.

14.总结

以上列举了许多非常有用的用法,但所有的这些只是Puppet功能的一个大

概介绍。这里有一份全面的[文档],里面附带了许多例子:为了让你能过更加深

入的了解Puppet。我们会一直维护这个文档,所以如果你有什么具体的要求,

请通过「puppetlabs]与我们联系。

二、安装puppet

Puppet是一款开源的工具,使用自有的puppet描述语言,可管理配置文件、用户、

cron任务、软件包、系统效劳等,实现自动化部署。

安装环境:Redhat5.5

安装方式:yum

1.更新yum源

rpm-ivh"://yum.uuDDetlabs/el/5/Droducts/i386/cuDDetlabs-releasD-5-Lnoarch.rDrrr

rpm-ivh"://yum.DUDDetJabs/el/5/uroducts/x8664/DUDDetlabs-release-5-Lnoarch.rDrrr

rpm-ivh"://yum.DUDDetJabs/el/6/Droducts/i386/DUDDetldbs-reledse-6-Lnodrch.rDm”

rpm-ivh"://yum.DUDuetJabs/el/5/products/x8664/DUDDetlabs-release-5-Lnoarch.rDm”

2.配置主机名

puppet的客户端和效劳器是通过ssl链接的,在效劳器有一个自签名的根证书,在安

装软件的时候自动生成。

注意:

要在安装软件以前先设置主机名,因为生成证书的时候,要把主机名写入证书。

我们把puppet效劳器的主机名和域名定为:puppetserver.itaom

vi/etc/hosts

1puppetserver.itaom

3.安装p叩pet效劳端

i)安装软件包

yuminstallmysql-server

yum-yinstallpuppet-serverpuppet

使用yum安装会自动解决依赖关系,安装ruby环境。

2)验证安装包

[root@puppetserver〜]#rpm-qalgrepmysql-server

mysql-server-5.0.95-5.el5_9

[root@puppetserver〜]#rpm-qalgreppuppet-server

puppet-server-3.6.2-l.el5

[root@puppetserver~]#rpm-qalgreppuppet

puppet-3.6.2-l.el5

puppetlabs-release-5-1

puppet-server-3.6.2-1.el5

3)修改主机配置文件

进入目录/etc/puppet/manifests

编辑主机配置文件

Visite.pp

import"nodes/*.ppH

新建节点文件夹:mkdirnodes/

在nodes下面新建一个默认节点文件default_node.pp,新建一个file资源供测试。

内容如下

node/.*\.itaom$/

file{

"/tmp/test_puppet_Ol.log":

content=>

"hello

thisismyfirstmanifestfile

mode=>0644;

)

4)配置文件效劳

vi/etc/puppet/fileserver.conf

[MyFileService]文件效劳名

path/opt/MyFileService文件效劳的目录设定

allow*权限设定

5)启动puppet-server效劳

[root@puppetservermanifests]#servicepuppetmasterstart

Startingpuppetmaster:[OK

[root@puppetservermanifests]#servicepuppetmasterstatus

puppet(pid14516)isrunning...

4.安装P叩pet客户端

i)安装软件包

yuminstallpuppet

2)配置主机名

vi/etc/hosts

1puppetserver.itaom

3)配置puppet客户端

修改配置文件/etc/puppet/puppet.conf:

server=puppetserver.itaom

certname=nodeOl.itaom认证名称

runinterval=1800同步间隔秒数

4)启动客户端后台进程

servicepuppetstart

这样puppetclient会在后台执行,每到默认1800秒会主动与server同步一次。

5.测试连接

每个客户端的证书要经过根证书签名才能和效劳器连接。

所以首先要在客户端执行下面的命令来请求效劳器签名证书。

Puppetagent—test

登录到效劳器端,执行下面的命令查看是否有客户端的证书请求:

puppetcertlist—all

如果看到了客户端的证书请求,用下面的命令对所有证书请求签名:

puppetcert-signpuppet_client(客户端主机名)#这条命令加客户端主机名就能签字,

自此可以通信。

再次执行

Puppetagent—test

就会从server端得到manifest文件,在客户端指定位置生产一个文件。

查看/tmp/test_puppet_Ol.log即可验证。

6.节点管理

puppet如何区分不同的客户端,并且给不同的效劳端分配manifest呢?

在/etc/puppet/manifests/nodes/目录下,每台效劳器建立一个节点文件:

[root@puppetservermanifests]#Is/etc/puppet/manifests/nodes/*.pp

/etc/puppet/manifests/nodes/default_node.pp

/etc/puppet/manifests/nodes/nodeOl.itaom.pp

/etc/puppet/manifests/nodes/kvm_server01.itaom.pp

/etc/puppet/manifests/nodes/puppetserver.itaom.pp

/etc/puppet/manifests/nodes/node000001.itaom.pp

/etc/puppet/manifests/nodes/redhat05.itaom.pp

/etc/puppet/manifests/nodes/node002.itaom.pp

/etc/puppet/manifests/nodes/redhat06.itaom.pp

/etc/puppet/manifests/nodes/node003.itaom.pp

puppet使用node资源做这件事情,node后面跟客户端的主机名。

node'nodeOl.itaom'

三、Puppet参考文档

英文

s://docs.puppetlabs/

四、MCollective介绍

1.简介

MCollective是一个构建效劳器编排(ServerOrchestration)和并行工作执行系统的框架。

首先,MCollective是一种针对效劳器集群进行可编程控制的系统管理解决方案。在这

一点上,它的功能类似:Func,Fabric和Capistrano,

其次,MCollective的设计打破基于中心存储式系统和像SSH这样的工具,不再仅

仅痴迷于SSH的For循环。它使用发布订阅中间件(PublishSubscribeMiddleware)这

样的现代化工具和通过目标数据(metadata)而不是主机名(hostnames)来实时发现网络资源

这样的现代化理念。提供了一个可扩展的而且迅速的并行执行环境。

MCollective工具为命令行界面,但它可与数千个应用实例进行通信,而且传输速度惊

人。无论部署的实例位于什么位置,通信都能以线速进行传输,使用的是一个类似多路传

送的推送信息系统。MCollective工具没有可视化用户界面,用户只能通过检索来获取需

要应用的实例。PuppetDashboard提供有这局部功能。

2.MCollective特点

•能够与小到大型效劳器集群交互

•使用播送范式(broadcastparadigm)来进行请求分发,所有效劳器会同时收到请求,而只

有与请求所附带的过滤器匹配的效劳器才会去执行这些请求。没有中心数据库来进行同步,

网络是唯一的真理

•打破了以往用主机名作为身份验证手段的复杂命名规那么。使用每台机器自身提供的丰

富的目标数据来定位它们。目标数据来自于:Puppet,Chef,Facter,Ohai或者自身提供的插

•使用命令行调用远程代理

•能够写自定义的设备报告

•大量的代理来管理包,效劳和其他来自于社区的通用组件

•允许写SimpleRPC风格的代理、客户端和使用Ruby实现WebUis

•外部可插件化(pluggable)实现本地需求

•中间件系统已有丰富的身份验证和授权模型,利用这些作为控制的第一道防线。

•重用中间件来做集群、路由和网络隔离以实现平安和可扩展安装。

五、安装MCollective

1.server端安装

1)安装软件包

首先要确保puppetyum源在,没有的话请安装,如下[redhat6scentos6]:

rpm-ivh:〃yum.puppetlabs

/el/6/products/x8664/puppetlabs-release-6-6.noarch.rpm

yuminstallmcollective-*-y

yuminstallactivemqactivemq-info-provider-y

2)酉己置activemq

vi/etc/activemq/activemq.xml

找至Uauthenticationuser■修改用户名和密码:默认是:admin,secret

找到transportConnector修改其中的

name="stomp+nio"uri="stomp+nio://:61637&

gt;为name="stomp"uri="stomp://:6163'7>

3)配置mcollective

vi/etc/mcollective/server.cfg

plugin.stomp.host=localhost##mcollectiveserverIPO

plugin.stomp.user=mcollective##这个是activemq.xml里的用户名

plugin.stomp.password=secret##这个是activemq.xml里定义的密码

vi/etc/mcollective/client.cfg

plugin.stomp.host=localhost##mcollectiveserverIP

plugin.stomp.user=mcollective##这个是activemq.xml里的用户名

plugin.stomp.password=secret##这个是activemq.xml里定义的密码

4)启动

/etc/init.d/activemqstart

/etc/init.d/mcollectivestart

chkconfigmcollectiveon

chkconfigactivemqon

2.client安装配置:

i)安装软件包

yuminstallmcollective-*-y

2)配置客户端

vi/etc/mcollective/server.cfg

指向的

plugin.stomp.host=04##mcoolectiveIPO

plugin.stomp.user=mcollective##这个是activemq.xml里的用户名

plugin.stomp.password=secret##这个是activemq.xml里定义的密码

identity=nodeOl.itaom〔定义主机名带域名〕

vi/etc/mcollective/client.cfg

##指向

plugin.stomp.host=04mcoolective0$]IPO

plugin.stomp.user=mcollective##这个是activemq.xml里的用户名

plugin.stomp.password=secret##这个是activemq.xml里定义的密码

3)启动客户端

/etc/init.d/mcollectivestart

chkconfigmcollectiveon

3.查看连接情况

在server端执行:

mcofind或者是mcoping即可找到client

4.其他使用命令

重启syslog效劳:mcoservicesyslogrestart

安装软件:mcopackage-vinstallscreen##-v显示详细信息

仓U立文*(牛:mcorpcfilemgrtouchfile=/tmp/test.txt

册!J除文件:mcorpcfilemgr-vremovefile=/tmp/test.txt

查看文件状态:mcorpcfilemgrstatusfiIe=/etc/puppet/puppet.conf

帮助:mcohelp

六、Rsync安装

1.Rsync介绍

rsync,remotesynchronize顾名思意就知道它是一款实现远程同步功能的软件,它

在同步文件的同时,可以保持原来文件的权限、时间、软硬链接等附加信息。rsync是用

"rsync算法”提供了一个客户机和远程文件效劳器的文件同步的快速方法,而且可以通过

ssh方式来传输文件,这样其保密性也非常好,另外它还是免费的软件。

rsync包括如下的一些特性:

•能更新整个目录和树和文件系统;

•有选择性的保持符号链链、硬链接、文件属于、权限、设备以及时间等;

•对于安装来说,无任何特殊权限要求;

•对于多个文件来说,内部流水线减少文件等待的延时;

•能用rsh、ssh或直接端口做为传输入端口;

•支持匿名rsync同步文件,是理想的镜像工具;

2.安装rsync

Yuminstallrsync

Yuminstallxinetd

3.配置rsync

rsync的主要有以下三个配置文件rsyncd.conf(主配置文件)、rsyncd.secrets(密码文

件)、rsyncd.motd(rysnc效劳器信息)

效劳器配置文件(/etc/rsyncd.conf),该文件默认不存在,请创立它。

具体步骤如下:

#touch/etc/rsyncd.conf

#创立rsyncd.conf,这是rsync效劳器的配置文件。

#touch

#创立rsyncd.secrets,这是用户密码文件。

/etc/rsyncd.secrets

chmod600/etc/rsyncd/rsyncd.secrets

将rsyncd.secrets这个密码文件的文件属性设为root

拥有,且权限要设为600,否那么无法备份成功!

#touch/etc/rsyncd.motd

1)设定/etc/rsyncd.conf

rsyncd.conf是rsync效劳器主要配置文件。我们先来个简单的例如,后面在详细说明各

项作用。

比方我们要备份效劳器上的/home和/opt,在/home中我想把easylife和samba目录

排除在外;

#DistributedunderthetermsoftheGNUGeneralPublicLicensev2

#Minimalconfigurationfileforrsyncdaemon

#Seersync(l)andrsyncd.conf(5)manpagesforhelp

#Thislineisrequiredbythe/etc/init.d/rsyncdscript

pidfile=/var/run/rsyncd.pid

port=873

address=71

#uid=nobody

#gid=nobody

uid=root

gid=root

usechroot=yes

readonly=yes

#limitaccesstoprivateLANs

hostsallow=//

hostsdeny=*

maxconnections=5

motdfile=/etc/rsyncd.motd

#Thiswillgiveyouaseparatelogfile

#logfile=/var/log/rsync.log

#Thiswilllogeveryfiletransferred-upto85,000+peruser,persync

#transferlogging=yes

logformat=%t%a%m%f%b

syslogfacility=Iocal3

timeout=300

[rhel4home]

path=/home

list=yes

ignoreerrors

authusers=root

secretsfile=/etc/rsyncd.secrets

comment=ThisisRHEL4data

exclude=easylife/samba/

[rhel4opt]

path=/opt

list=no

ignoreerrors

comment=ThisisRHEL4opt

authusers=easylife

secretsfile=/etc/rsyncd/rsyncd.secrets

注:关于authusers是必须在效劳器上存在的真实的系统用户,如果你想用多个用户以,

号隔开,比方authusers=easylife,root

2)设定/etc/rsyncd.secrets密码文件

密码文件格式很简单,rsyncd.secrets的内容格式为:

用户名:密码

我们在例子中rsyncd.secrets的内容如下类似的;在文档中说,有些系统不支持长密码,

自己尝试着设置一下吧。

easylife:keer

root:mike

chownroot.rootrsyncd.secrets#修改属主

chmod600rsyncd.secrets#修改权限

注:1、将rsyncd.secrets这个密码文件的文件属性设为root拥有,且权限要设为600,否

那么无法备份成功!出于平安目的,文件的属性必需是只有属主可读。

2、这里的密码值得注意,为了平安你不能把系统用户的密码写在这里。比方你的系统用户

easylife密码是000000,为了平安你可以让rsync中的easylife为keero这和samba

的用户认证的密码原理是差不多的。

3)设定rsyncd.motd文件

它是定义rysnc效劳器信息的,也就是用户登录信息。比方让用户知道这个效劳器是谁提

供的等;类似ftp效劳器登录时,我们所看到的代p……。当然这在全局定

义变量时,并不是必须的,你可以用#号注掉,或删除;我在这里写了一个rsyncd.motd

的内容为:

++++++++++++++++++++++++++++++++++++++++++++++

Welcometousethersyncservices!

20022021

++++++++++++++++++++++++++++++++++++++++++++++

rsyncd.conf配置文件详解

1)全局定义

在rsync效劳器中,全局定义有几个比拟关健的,根据我们前面所给的配置文件

rsyncd.conf文件;

pidfile=/var/run/rsyncd.pid注:告诉进程写到/var/run/rsyncd.pid文件中;

port=873注:指定运行端口,默认是873,您可以自己指定;

address=192,168.1.171注:指定效劳器IP地址

uid=nobody

gid=nobdoy

注:效劳器端传输文件时,要发哪个用户和用户组来执行,默认是nobody。如果用nobody

用户和用户组,可能遇到权限问题,有些文件从效劳器上拉不下来。所以我就偷懒,为了方

便,用了root。不过您可以在定义要同步的目录时定义的模块中指定用户来解决权限的问

题。

usechroot=yes

注:用chroot,在传输文件之前,效劳器守护程序在将chroot到文件系统中的目录中,

这样做的好处是可能保护系统被安装漏洞侵袭的可能。缺点是需要超级用户权限。另外对符

号链接文件,将会排除在外。也就是说,你在「sync效劳器上,如果有符号链接,你在备

份效劳器上运行客户端的同步数据时,只会把符号链接名同步下来,并不会同步符号链接的

内容;这个需要自己来尝试

readonly=no

readonly

指定是否允许客户上传文件,假设为yes那么不允许上传;假设为no并且效劳器目录也具

有读写权限那么允许上传.

writeonly

指定是否允许客户下载文件.假设为yes那么不允许下载;假设为no并且效劳器目录也具有读

权限那么允许下载

#limitaccesstoprivateLANs

hostsallow=//

注:在您可以指定单个IP,也可以指定整个网段,能提高平安性。格式是ip与ip之间、

ip和网段之间、网段和网段之间要用空格隔开;

maxconnections=5

注:客户端最多连接数

motdfile=/etc/rsyncd/rsyncd.motd

注:motdfile是定义效劳器信息的,要自己写rsyncd.motd文件内容。当用户登录时

会看到这个信息。比方我写的是:

++++++++++++++++++++++++++++++++++++++++++++++

Welcometousethersyncservices!

20022021

++++++++++++++++++++++++++++++++++++++++++++++

logfile=/var/log/rsync.log

注:rsync效劳器的日志;

transferlogging=yes

注:这是传输文件的日志

logformat=%t%a%m%f%b

syslogfacility=Iocal3

timeout=300

2)模块定义

模块定义什么呢?主要是定义效劳器哪个目录要被同步。每个模块都要以[name]形式。这

个名字就是在rsync客户端看到的名字,其实有点象Samba效劳器提供的共享名。而效

劳器真正同步的数据是通过path指定的。我们可以根据自己的需要,来指定多个模块。每

个模块要指定认证用户,密码文件、但排除并不是必须的

下面是前面配置文件模块的例子:

[rhel4home]#模块它为我们提供了一个链接的名字,在本模块中链接到了/home目录;

要用[name]形式

path=/home#指定文件目录所在位置,这是必须指定的

authusers=root#认证用户是root,是必须在效劳器上存在的用户

list=yes#list意思是把rsync效劳器上提供同步数据的目录在效劳器上模块是否显示

列出来。默认是yes。如果你不想列出来,就n。;如果是n。是比拟平安的,至少别人

不知道你的效劳器上提供了哪些目录。你自己知道就行了;

ignoreerrors#忽略10错误

secretsfile=/etc/rsyncd.secrets#密码存在哪个文件

comment=linuxsirhomedata#注释可以自己定义

exclude=beinan/samba/

注:exclude是排除的意思,也就是说,要把/home目录下的easylife和samba排除在

外;easylife/和samba/目录之间有空格分开

[rhel4opt]

path=/opt

list=no

comment=optdir

authusers=beinan

secretsfile=/etc/rsyncd/rsyncd.secrets

ignoreerrors

5.启动rsync效劳器

启动rsync效劳器相当简单,有以下几种方法

A、-daemon参数方式,是让rsync以效劳器模式运行

#/usr/bin/rsync--daemon—config=/etc/rsyncd/rsyncd.conf#—config用于

指定rsyncd.conf的位置,如果在/etc下可以不写

B、xinetd方式

通过servicexinetdrestart来重启rsync效劳

修改services参加如下内容

#nano-w/etc/services

rsync873/tcp#rsync

rsync873/udp#rsync

这一步一般可以不做,通常都有这两行(我的RHEL4和GENTOO默认都有)。修改的目的

是让系统知道873端口对应的效劳名为rsynco如没有的话就自行参加。

设定/etc/xinetd.d/rsync,简单例子如下:

#default:off

#description:Thersyncserverisagoodadditiontoamftpserver,asit\

#allowscrcchecksummingetc.

servicersync

{

disable=no

socket_type=stream

wait=no

user=root

server=/usr/bin/rsync

server_args=—daemon

log_on_failure+=USERID

}

上述,主要是要翻开rsync固固daemon,一旦有rsyncclient要连接B寺,xinetd会把它

转介区合rsyncd(port873)O然后servicexinetdrestart,使上述设定生效.

6.防火墙设置

Linux防火墙是用iptables,所以我们至少在效劳器端要让你所定义的rsync效劳器端口

通过,客户端上也应该让通过。

#iptables-AINPUT-ptcp-mstate—stateNEW-mtcp—dport873-jACCEPT

#iptables-L查看一下防火墙是不是翻开了873端口

如果你不太懂防火墙的配置,可以先serviceiptablesstop将防火墙关掉。当然在生产环

境这是很危险的,做实验才可以这么做哟!

7.通过rsync客户端来同步数据

语法详解

在配置完rsync效劳器后,就可以从客户端发出rsync命令来实现各种同步的操作。rsync

有很多功能选项,下面就对介绍一下常用的选项:

rsync的命令格式可以为:

1.rsync[OPTION]...SRC[SRC]...[USER@]HOST:DEST

2.rsync[OPTION]...[USER@]HOST:SRCDEST

3.rsync[OPTION]...SRC[SRC]...DEST

4.rsync[OPTION]...[USER@]HOST::SRC[DEST]

5.rsync[OPTION]...SRC[SRC]...[USER@]HOST::DEST

6.rsync[OPTION]...rsync://[USER@]HOST[:PORT]/SRC[DEST]

rsync有六种不同的工作模式:

1.拷贝本地文件;当SRC和DES路径信息都不包含有单个冒号":"分隔符时就启动这种工

作模式。

2.使用一个远程shell程序〔如rsh、ssh]来实现将本地机器的内容拷贝到远程机器。当

DST路径地址包含单个冒号":"分隔符时启动该模式。

3.使用一个远程shell程序〔如rsh、ssh]来实现将远程机器的内容拷贝到本地机器。当

SRC地址路径包含单个冒号":"分隔符时启动该模式。

4.从远程rsync效劳器中拷贝文件到本地机。当SRC路径信息包含"::"分隔符时启动该

模式。

5.从本地机器拷贝文件到远程rsync效劳器中。当DST路径信息包含"::"分隔符时启动

该模式。

6.列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。

-a以archive模式操作、复制目录、符号连接相当于-HptgoD

rsync中的参数

-r是递归

-I是链接文件,意思是拷贝链接文件;中表示保持文件原有权限;-t保持文件原有时间;

-g保持文件原有用户组;-。保持文件原有属主;-D相当于块设备文件;

-z传输时压缩;

-P传输进度;

-V传输时的进度等信息,和-P有点关系,自己试试。可以看文档;

-essh的参数建立起加密的连接。

-u只进行更新,防止本地新文件被重写,注意两者机器的时钟的同时

-progress是指显示出详细的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论