邮件系统双机冷备 2008-03-24 11:17
本文介绍了邮件服务器利用rsync实现冷备份,达到数据安全的方法,还有windows下通过xmanager来远程桌面控制Linux的方法,并具体介绍了xdm和xmanager的配置和使用方法,希望给大家带来一定的帮助
最近单位里邮件服务器更换,想把旧的联想服务器做为邮件系统冷备份,启用新的hp服务器做为邮件主服务器。经过一段时间的实际工作,安装完毕,现整理如下。操作系统是redhat el3版,如果不知道自己的版本号,可在图形界面下新开一个终端,在命令行输入 cat /proc/version,查看版本号。邮件服务器对硬件要求并不是很高一般服务器都可以达到,具体标准如下:
用户量 产品类型 CPU最小要求 内存 硬盘
5000以下 亿邮邮件网关 PIII 1GHz 512M 18G
1万~5万 亿邮邮件网关 Xeon 2.0Gx2 1G 72G
5万以上 亿邮邮件网关 Xeon 2.0Gx2 2G 72Gx3(RAID 5)
单位的服务器有两块73G硬盘,在安装系统之前做了RAID0+1,所以只可用一块硬盘,安装Redhat EL3系统,在分区时,考虑到应用软件和操作系统应当分开,以备操作系统损坏后,应用软件和重要数据不会丢失,具体分配如下:
/分区: 存放系统命令和用户数据等(建议大小:1G) 实际分配7G
/home分区:存放Linux的应用程序(建议大小:3G ) 实际分配60G
SWAP分区: 用于实现虚拟内存(建议大小:256M) 实际分配1280M
在防火墙上开ssh2的22端口,nat转换到旧服务器上,联系厂家远程安装,厂家通过22端口登录到旧服,把旧服的数据和应用软件,通过内网的新服22端口,拷贝安装到新邮件服务器。接下来,就是最关键的部分,如何实现两台邮件服务器的冷备份。
邮件服务器利用rsync实现冷备份
先说要求:新服做为主服务器,旧服做为备份服务器。每天上班前7点钟备份一次。故障发生时,新服不可用,把防火墙nat转换到旧服,以保证正常使用。
具体实施:采用rsync
一、特性简介
rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了 ——remote sync。它的特性如下:
1、可以镜像保存整个目录树和文件系统。
2、可以很容易做到保持原来文件的权限、时间、软硬链接等等。
3、无须特殊权限即可安装。
4、优化的流程,文件传输效率高。
5、可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接。
6、支持匿名传输。
二、使用方法
rsync的使用方法很简单,我就举自己使用的例子来说明吧。
1、系统环境
rsync支持大多数的类unix系统,无论是Linux、Solaris还是BSD上都经过了良好的测试。系统环境为:
server: FreeBSD 4.3 ip: 192.168.168.52
client: Linux AS 3 ip: 192.168.168.137
rsync 版本 2.4.6(可以从http://rsync.samba.org/rsync/获得最新版本)
2、配置server端的/etc/rsyncd.conf文件
bash-2.03# cat /etc/rsyncd.conf
uid = nobody 用户ID号
gid = nobody 组ID号
use chroot = no 不使用chroot
max connections = 20 最大连接数为20
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log 日志记录文件
[eyou] 这里是认证的模块名,在client端需要指定
path = /home/inburst/python/ 需要做镜像的目录
comment = BACKUP CLIENT IS SOLARIS 一段说明文件
ignore errors 可以忽略一些无关的IO错误
read only = yes 只读
list = no 不允许列文件
auth users = eyouuser 认证的用户名,如果没有这行,则表明是匿名
secrets file = /etc/eyou.pas 认证文件名存放密码
[web]
path = /usr/local/apache/htdocs/
comment = inburst.org web server
3、在server端生成一个密码文件/etc/eyou.pas
bash-2.03# cat /etc/eyou.pas
eyou:password
出于安全目的,文件的属性必需是只有属主可读。
4、在server端将rsync以守护进程形式启动
bash-2.03# rsync --daemon
如果要在启动时把服务起来,有几种不同的方法,比如:
a、加入inetd.conf
编辑/etc/services,加入rsync 873/tcp,指定rsync的服务端口是873
编加/etc/inetd.conf,加入rsync stream tcp nowait root /bin/rsync rsync --daemon
b、加入rc.local
在各种操作系统中,rc文件存放位置不尽相同,可以修改使系统启动时rsync --daemon加载进去。
5、从client端进行测试
下面这个命令行中-vzrtopg里的v是verbose,z是压缩,r是recursive,topg都是保持文件原有属性如属主、时间的参数。--progress是指显示出详细的进度情况,--delete是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致。
-v, --verbose 详细模式输出
-q, --quiet 精简输出模式
-c, --checksum 打开校验开关,强制对文件传输进行校验
-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
-r, --recursive 对子目录以递归模式处理
-R, --relative 使用相对路径信息
后面的eyouuser@ip中,eyouuser是指定密码文件中的用户名,之后的::eyou这一eyou是模块名,也就是在/etc/rsyncd.conf中自定义的名称。最后的/data是备份到本地的目录名。在这里面,还可以用-e ssh的参数建立起加密的连接。可以用--password-file=/password/path/file来指定密码文件,这样就可以在脚本中使用而无需交互式地输入验证密码了,这里需要注意的是这份密码文件权限属性要设得只有属主可读。
bash-2.03# rsync -vzrtopg --progress --delete eyouuser@192.168.168.52::eyou /data/eyou
Password:
receiving file list ... done
./
1
785 (100%)
1.py
4086 (100%)
2.py
10680 (100%)
a
0 (100%)
ip
3956 (100%)
./
wrote 190 bytes read 5499 bytes 758.53 bytes/sec
total size is 19507 speedup is 3.43
在上面的例子中是以交互式地输入验证密码, 现在我们还可以用-e ssh的参数建立起加密的连接。可以用--password-file=/etc/eyou.pas来指定密码文件
首先我们要建立密码文件,/etc/eyou.pas
[root@mail root]# more /etc/eyou.pas
password
出于安全目的,文件的属性必需是只有属主可读。
bash-2.03# rsync -vzrtopgl --progress --delete eyouuser@192.168.168.52::eyou /data/eyou --password-file=/etc/eyou.pas
我们还可以将迁移放在后台去运行并把产生的日志输入了文件, >/var/log/a.log;整条完整的命令如下.
nohup rsync –vzrtopgl –progress –delete eyouuser@192.168.168.52::eyou /data/eyou –password-file=/etc/eyou.pas >>/var/log/eyou.log &
6、创建更新脚本
如果有比较复杂的工作,利用一些常见的脚本语言可以有帮助。比如:
bash-2.03# cat /data/rsync.sh
#!/bin/sh
DATE=`date +%w`
nohup rsync -vzrtopgl --progress --delete inburst@192.168.168.52::inburst /home/quack/backup/$DATE --password-file=/etc/rsync.pas >>/var/log/eyou$DATE.log &
7、修改/etc/crontab做好定时迁移.
比如:
bash-2.03# crontab –e
#5 1,13 * * * /var/emdg/sbin/keepup2date -c /var/emdg/etc/kavconfig.conf
#5 0 15,30 * * /var/emdg/sbin/virusupdate
#0 3 * * * /var/emdg/sbin/checkave.sh
#0 3 * * * /var/emdg/sbin/up/update_rules.sh
#0 8,9,10,11,12,13,14,15,16,17,18 * * * /var/emdg/sbin/notify_mail.org
0 1 * * * /data/rsync.sh
加入0 1 * * * /data/rsync.sh; 意思为每天凌晨1点开始同步数据.
Crontab的基本格式如下.
基本格式 :
* * * * * command
分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
因为邮件服务器是redhat,而操作员的电脑系统是windows2003,所以为了方便操作,我们还要从windows2003远程管理redhat,具体实现如下:
redhat服务器端,更改以下配置,
第一步,我们在Linux系统下,修改/etc/X11/xdm/Xaccess文件,找到下面的语句:# * #any host can get a login window
去掉最前面的#号,成为
第二步,我们修改/etc/X11/gdm/gdm.conf文件,找到下面的语句:
将其中的Enable=false 改为Enable=true 或 Enable=1。
同时我们要确保存在下面的语句,因为177端口是我们要配置的xdmcp服务的监听端口,我们在后面配置xmanager将看到。
第三步,我们要修改/etc/inittab文件,将下面的语句
改为如下,如果原来就是id:5:initdefault:就不用更改。
同时,找到如下图文字所在的地方,
将它修改为x:5:respawn:/usr/bin/gdm,即如下图所示,
第四步,我们修改/etc/X11/xdm/xdm-config的最后一行,在displayManager.requestPort:0前面加上一个!号,结果如下
第五步,我们修改确保/etc/X11/xdm/Xservers的属性为444,/etc/X11/xdm/Xsetup_0的属性为755,在RedHat 9.0中,我们可以看到这两个文件默认的属性就是444和775,因此不用修改。
最后,如果我们的Linux机器配置有防火墙,为防止防火墙将通过177端口(即xdmcp服务)的数据过虑,我们必须加上如下的规则:
iptables -A INPUT -p udp -s 0/0 -d 0/0 --dport 177 -j ACCEPT
接下来下载xmanager2.0,它是一个简单易用的高性能的运行在Windows平台上的 X Server 软件。安装后,点击Xbrowser ,在address下输入邮件服务器的内网ip地址,就可以实现过程桌面,输入你的root密码,就可以软件自在的操作啦,很爽吧。