posts - 122,  comments - 25,  trackbacks - 0
现有需求如下:需对若干服务器做相同的环境配置,且配置工作相当复杂,若人工一台一台的处理比较耗时且容易出错。我们可以考虑先完成一台服务器的配置工作,确认配置无误后,再通过脚本,将相应的配置工作同步到其他所有的服务器中。设有已完成配置的服务器:A (192.168.0.2) 和 待配置的服务器B ~ Z(192.168.0.101 ~ 126)。

实现上述需求,关键有两点:1). 通过ssh信任登录,避免每次同步时要求输入密码;2). 通过rsync命令实现服务器之间文件的同步。具体实现细节如下:

1. 完成单向Trusted SSH Authorized
首先在A产生public/private dsa key pair:
……………………………………………………………………………………………………
[root@kplan-test3 .ssh]# ssh-keygen -d
Generating public/private dsa key pair.
Enter file in which to save the key (
/root/.ssh/id_dsa):
Enter passphrase (empty 
for no passphrase):
Enter same passphrase again
:
Your identification has been saved in 
/root/.ssh/id_dsa.
Your public key has been saved in 
/root/.ssh/id_dsa.pub.
The key fingerprint is
:
f3
:47:3b:b0:2a:50:f8:77:7e:ca:29:85:e8:d9:05:9b root@kplan-test3
[root
@kplan-test3 .ssh]#
……………………………………………………………………………………………………

完成上述命令后,会在系统/root/.ssh目录生成两个文件:id_dsa与id_dsa.pub。现在复制id_dsa.pub到B服务器,并更名为 authorized_keys2
……………………………………………………………………………………………………
[root
@kplan-test3 .ssh]# scp id_dsa.pub 192.168.0.101:/root/.ssh/authorized_keys2
root@192.168.0.101's password:
id_dsa.pub 100% |*****************************************************| 612 00:00
[root@kplan-test3 .ssh]#
……………………………………………………………………………………………………

如果上述步骤顺利完成的话,现在您可以执行”ssh 192.168.0.101”,无需输入登录密码,即可登录到B服务器了。

2.使用rsync 做Remote sync﹕
rsync特性简介: rsync是unix-like系统下的数据镜像备份工具,从命名上就可以看出来了remote sync。它的特性如下:
1、可以镜像保存整个目录树和文件系统。
2、可以很容易做到保持原来文件的权限、时间等等。
3、无须特殊权限即可安装。
4、优化的流程,文件传输效率高。
5、可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接。
6、支持匿名传输。

参数意义如下﹕
-a, --archive
It is a quick way of saying you want recursion and want to preserve almost everything.
-v, --verbose
This option increases the amount of information you are given during the transfer.
-l, --links
When symlinks are encountered, recreate the symlink on the destination.
-R, --relative
Use relative paths. 保留相对路径...才不会让子目录跟 parent 挤在同一层...
--delete
是指如果Server端删除了一文件,那客户端也相应把这一文件删除,保持真正的一致。
-e ssh
建立起加密的连接。
3、同步脚本
创建脚本,实现自动配置工作。
……………………………………………………………………………………………………
[root
@kplan-test3 backup]# vi install_env.sh
#!/bin/bash

WEBSERVER='kplan-test1 kplan-test2 kplan-test3'
echo 
"auto install envirment … ------------------------"
for webserver in $WEBSERVER
do
    echo 
"install server:$webserver's envirment."
    echo 
'transport file : /etc/profile & /etc/hosts'
    rsync 
---------e ssh --delete /etc/profile root@$webserver:/etc/profile
    rsync 
---------e ssh --delete /etc/hosts root@$webserver:/etc/hosts

    echo 
'run shell command : /home/init_env.sh'
    ssh 
--o StrictHostKeyChecking=no root@$webserver "/home/init_env.sh"
    ssh 
--o StrictHostKeyChecking=no  root@$webserver "rm -f /home/init_env.sh"
    echo 
" $webserver is end  ------------------------- "
done
sleep 1
clear
……………………………………………………………………………………………………

4、其他
如果你想用来做自动备份,则在crontab中加入备份脚本即可。如在每天0时0分做备份(设/root目录下已有完成备份的脚本 backup.sh):
……………………………………………………………………………………………………
[root
@kplan-test3 backup]# crontab -e
0 0 * * * /root/backup.sh
……………………………………………………………………………………………………



posted on 2008-10-15 16:50 josson 阅读(532) 评论(0)  编辑  收藏 所属分类: Linux

只有注册用户登录后才能发表评论。


网站导航:
 
<2008年10月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

常用链接

留言簿(3)

随笔分类

随笔档案

收藏夹

搜索

  •  

最新评论

阅读排行榜

评论排行榜