puppet环境搭建手册_第1页
puppet环境搭建手册_第2页
puppet环境搭建手册_第3页
puppet环境搭建手册_第4页
puppet环境搭建手册_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

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

文档简介

puppet环境搭建手册

Puppet+MCollective

环境搭建手册

V1.0

IT管理服务部

2014.10.10

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

12014.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.语言的其他特性13

11.puppet语言高级特性15

12.语言教程16

13.典型的puppet使用方法16

14.总结17

二、安装puppet17

1.更新yum源17

2.配置主机名17

3.安装puppet月员务端18

1)安装软件包18

2)瞬正安装包18

3)修改主机配置文件18

4)配置文件服务19

5)启动puppet-server服务19

4.安装Puppet客户端19

1)安装软件包19

2)配置主机名19

3)酉己置puppet客户端20

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

5.测试连接20

6.节点富里21

三、Puppet参考文档21

四、MCollective介绍21

1.简介21

2.MCollective特点22

五、安装MCollective23

1.server端安装23

1)安装软件包23

2)酉己置activemq23

3)酉己置mcollective24

4)启动24

2.client安装酉己置:25

1)安装软件包25

2)配置客户端25

3)启动客户端25

3.查看连接情况26

4.其他使用命令26

六、Rsync安装26

1.Rsync介绍26

2.安装rsync27

3.酉己置rsync27

1)^^/etc/rsyncd.conf28

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

3)设定rsyncd.motd文件30

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

1)全局定义30

2)模块定义32

5.启动rsync服务器33

6.防火蛭置34

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

8.一些实例36

9.FAQ41

七、一键安装client脚本44

一、Puppet介绍

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

1.为什么要开发puppet

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

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

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

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

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

自己完成系统管理任务.

开发puppet是为了让系统管理员社区能够相互交流与共享成熟的工具,避

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

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

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

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

因此,作为系统管理员的你能够更快的完成工作,由于你能够用puppet来处

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

完成的更快.

2.作为工具的puppet

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{'Vetc/hosts":

owner=root,

group=root,

mode=644

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

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

文件属于那个用户与组,与文件的权限.

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

file{

"/etc/sudoers":

owner="root",

group="root",

mode=644;

"/usr/sbin/sudo":

owner="root”,

group="root",

mode=4111

避免重复配置

puppet的编译器会避免在不一致的代码段里面管理同一个资源,假如在不一致

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

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

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

类class

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

下面的代码.

classsudo{

package{sudo:ensure=installed}

file{

'Vetc/sudoers1':

owner="root",

group="root",

mode=644;

'7usr/sbin/sudon:

owner="root11,

group="root",

mode=4111

)

)

你在别的代码段includesudo这个类,就会把sud。这个软件包(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服务.看看下面的例子

上面的代码安装好ssh包,并开启ssh服务,由于在不一致的操作系统上面,ssh的配置文件名

字不一样,因此还能够通过推断操作系统的类型来指定资源的title(标题).那么操作系统的

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

FacterVariablesfacter变量

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

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

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

ip地址等等.facter把收集到值发送个puppet服务器端,服务器端就能够根据不一致的条件来

对不一致的机器生成不一致的puppet配置文件.最重要的一个就是服务器的主机名.

selectors选择器

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

然后把相应的值赋值给资源,比如上面的例子,Soperalingsystem如何是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]]这个语句表示,假如package"ssh"或者者文件"

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

10.语言的其他特性

真相

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

但是假如你用弓I号把true与false引起来,他们会被当做字符串,比如你想赋值

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

变量

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

$myvar=value

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

更多的条件语句

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

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

specifications):

caseSoperatingsystem{

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

default:{file{,7other/file°:ensure=>present}}

)

与选择器(selectors)配合,case语句能够进行case-insensitive匹配。

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

if$should{

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

}else{

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

)

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

数组

puppet非常有限的支持数组这种类型,你能够创建数组,同时给他们赋值,但是

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

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

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

函数

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

notice("Thisisalogmessage")

11.puppet语言高级特性

定义

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

definitions能够把多个资源包装成一个资源,或者者把一个资源包装成一个模

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

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

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

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

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

$file="/etc/sites-available/Sname.conf1

#Thetemplatefillsinthedocroot,ip,andname,

file{$file:

content=>template(nvirtual_host.erb"),

notify=>Service[apache]

)

file{"/etc/sites-enabled/Sorder-Sname.conf1:

ensure=>Sensure?{

enabled=>$file,

disabled=>absent

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

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

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

#Createanewsubversionrepository.

definesvnrepo($path){

exec{ncreate-svn-$nameH:

command=>'Vusr/bin/svnadmincreate$path/$name",

creates=>"$path/$name"#onlyrunifthisfiledoesnotexist

)

)

然后,你能够在其他地方用下面的代码来创建一个svn库

svnrepo{puppet:path=>"/var/lib/sYn',)

nodes节点

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

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

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

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

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

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

主机名括起来.

12.语言教程

13.典型的puppet使用方法

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

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

的服务器,puppet服务器端是只运行puppetmaster的服务器.

puppet客户端首先会连接到puppet服务器端,同时通过facter工具把客

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

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

回客户端.客户端执行代码完成配置.同时把代码执行情况反馈给puppet服务

器端.

14.总结

二、安装puppet

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

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

安装环境:Redhat5.5

安装方式:yum

1.更新yum源

2.配置主机名

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

装软件的时候自动生成。

注意:

要在安装软件往常先设置主机名,由于生成证书的时候,要把主机名写入证书。

vi/etc/hosts

3.安装puppet服务端

i)安装软件包

yuminstallmysql-server

yum-yinstallpuppet-serverpuppet

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

2)验证安装包

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

mysql-server-5.0.95-5.e15_9

[root@puppetserver〜拼rpm-qalgreppuppet-server

puppet-server-3.6.2-1.el5

[root@puppetserver~]#rpm-qalgreppuppet

puppet-3.6.2-l.el5

puppetlabs-release-5-1

puppet-server-3.6.2-l.e!5

3)修改主机配置文件

进入目Wetc/puppet/manifests

编辑主机配置文件

Visite.pp

import"nodes/*.pp”

新建节点文件夹:mkdirnodes/

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

内容如下

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:fOK]

[root@puppetservermanifests]#servicepuppetmasterstatus

puppet(pid14516)isrunning...

4.安装Pu叩et客户端

1)安装软件包

yuminstallpuppet

2)配置主机名

vi/etc/hosts

3)配置puppet客户端

4多改酉己置文彳牛/etc/puppet/puppet.conf:

runinterval=1800同步间隔秒数

4)启动客户端后台进程

servicepuppetstart

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

5.测试连接

每个客户端的证书要通过根证书签名才能与服务器连接。

因此首先要在客户端执行下面的命令来请求服务器签名证书。

Puppetagent-test

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

puppetcertlist—all

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

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

自此能够通信。

再次执行

Puppetagent—test

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

查看/tmpZtest_puppet_01.log即可验证。

6.节点管理

puppet如何区分不一致的客户端,同时给不一致的服务端分配manifest呢?

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

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

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

三、Puppet参考文档

英文

四、MCollective介绍

1.简介

MCollective是一个构建服务器编排(ServerOrchestration)与并行工作执行系统的框架。

首先,MCollective是一种针对服务器集群进行可编程操纵的系统管懂得决方案。在这

一点上,它的功能类似:Func,Fabric与Capistranoo

其次,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)安装软件包

首先要确保源在,没有的话请安装,如下(

puppetyumredhat6xcentos6):

yuminstallmcollective-*-y

yuminstallactivemqactivemq-info-provider-y

2)酉已置activemq

vi/etc/activemq/activemq.xml

找至!Jauthenticationuser修改用户名与密码:默认是:admin,secret

找到transportConnector修改其中的

name=',stomp+nio"uri=wstomp+nio://:61637&

gt;为name="stomp"uri="stomp://:61637>

3)酉己置mcollective

vi/etc/mcollective/server.cfg

plugin.stomp.host=localhost##mcollectiveserverIP0

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安装配置:

1)安装软件包

yuminstallmcollective-*-y

2)配置客户端

vi/etc/mco11ective/server.cfg

指向的

plugin.stomp.host=04##mcoolectiveIPO

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

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

vi/etc/mcollective/client.cfg

##指向的

plugin.stomp.host=04mcoolectiveIPO

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显示全面信息

创建文件:mcorpcfilemgrtouchfile=/tmp/test.txt

删除文件:mcorpcfilemgr-vremovefile=/tmp/test.txt

查看文件状态:mcorpcfilemgrstatusfile=/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=192,168.1.171

#uid=nobody

#gid=nobody

uid=root

gid=root

usechroot=yes

readonly=yes

#limitaccesstoprivateLANs

hostsallow=192,168.1.0//

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)iS^/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服务器登录时,我们所看到的ftp……。当然这在全局定

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

的内容为:

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

Welcometousethersyncservices!

20022009

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

4.rsyncd.conf配置文件详解

1)全局定义

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

rsyncd.conf文件;

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

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

address=71注:指定服务器IP地址

uid=nobody

gid=nobdoy

注服务器端传输文件时,要发哪个用户与用户组来执行,默认是nobody。假如用nobody

用户与用户组,可能遇到权限问题,有些文件从服务器上拉不下来。因此我就偷懒,为了方

便,用了rooto只是您能够在定义要同步的目录时定义的模块中指定用户来解决权限的问

题。

usechroot=yes

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

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

号链接文件,将会排除在外。也就是说,你在rsync服务器上,假如有符号链接,你在备

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

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

readonly=no

readonly

指定是否同意客户上传文件,若为yes则不同意上传;若为no同时服务器目录也具有读写

权限则同意上传.

writeonly

指定是否同意客户下载文件.若为yes则不同意下载;若为no同时服务器目录也具有读权限则

同意下载

#limitaccesstoprivateLANs

hostsallow=192,168.1.0//

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

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

maxconnections=5

注:客户端最多连接数

motdfile=/etc/rsyncd/rsyncd.motd

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

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

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

Welcometousethersyncservices!

20022009

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

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,是务必在服务器上存在的用户

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

列出来。默认是yeso假如你不想列出来,就n。;假如是no是比较安全的,至少别人

不明白你的服务器上提供了什么目录。你自己明白就行了;

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端口对应的服务名为rsynce如没有的话就自行加入。

设定/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要连接日寺,xinetd会把它

转介给rsyncd(port873)。然后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模式操作、复制目录、符号连接相当于-rlptgoD

rsync中的参数

-r是递归

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

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

-z传输时压缩;

-P传输进度;

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

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

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

-progress是指显示出全面的进度情况

--delete是指假如服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的

一致

-password-file=/password/path/file来指定密码文件,这样就能够在脚本中使用而无

需交互式地输入验证密码了,这里需要注意的是这份密码文件权限属性要设得只有属主可

读。

8.一些实例

B1、列出rsync服务器上的所提供的同步内容;

首先:我们看看rsync服务器上提供了什么可用的数据源

#rsync-list-onlyroot@::

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

Welcometousethersyncservices!

20022009

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

rhel4homeThisisRHEL4data

注:前面是rsync所提供的数据源,也就是我们在rsyncd.conf中所写的[rhel4home]模

块。而''ThisisRHEL4data〃是由[rhel4home]模块中的comment=ThisisRHEL4

data提供的;为什么没有把rhel4opt数据源列出来呢?由于我们在[rhel4opt]中已经把

list=no了。

$rsync-list-onlyroot@192,168.145.5::::「hel4home

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

Welcometousethersyncservices!

20022009

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

Password:

drwxr-xr-x40962009/03/1521:33:13.

-rw-r-r-10182009/03/0202:33:41ks.cfg

-rwxr-xr-x212882009/03/1521:33:13wgetpaste

drwxrwxr-x40962008/10/2821:04:05cvsroot

drwx40962008/11/3016:30:58easylife

drwsr-sr-x40962008/09/2022:18:05giddir

drwx40962008/09/2914:18:46quserl

drwx40962008/09/2714:38:12quser2

drwx40962008/11/1406:10:19test

drwx40962008/09/2216:50:37vbirdl

drwx40962008/09/1915:28:45vbird2

后面的root@ip中,root是指定密码文件中的用户名,之后的::rhel4home这是

rhel4home模块名

B2、rsync客户端同步数据;

#rsync-avzProot@::rhel4homerhel4home

Password:这里要输入root的密码,是服务器端rsyncd.secrets提供的。在前面的例子

中我们用的是mike,输入的密码并不回显,输好就回车。

注:这个命令的意思就是说,用root用户登录到服务器上,把rhel4home数据,同步到

本地当前目录rhel4home上。当然本地的目录是能够你自己定义的。假如当你在客户端

上当前操作的目录下没有rhel4home这个目录时,系统会自动为你创建一个;当存在

rhel4home这个目录中,你要注意它的写权限。

#rsync-avzP—deletelinuxsir@linuxsir.ora::rhel4homerhel4home

这回我们引入一个一delete选项,表示客户端上的数据要与服务器端完全一致,假如

linuxsirhome目录中有服务器上不存在的文件,则删除。最终目的是让linuxsirhome目

录上的数据完全与服务器上保持一致;用的时候要小心点,最好不要把已经有重要数所据

的目录,当做本地更新目录,否则会把你的数据全部删除;

三殳定rsyncclient

设定密码文件

#rsync

-avzP—delete-password-file=rsyncd.secretsroot@::rhel4

homerhel4home

这次我们加了一个选项-password-file=rsyncd.secrets,这是当我们以root用户登录

rsync服务器同步数据时,密码将读取rsyncd.secrets这个文件。这个文件内容只是root

用户的密码。我们要如下做;

#touchrsyn

温馨提示

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

评论

0/150

提交评论