当我们在企业中都会需要建立自己的邮件系统,建好以后,安全性成了管理员必须考虑的问题,本篇博文志在解决这个问题。
我们需要实现的效果就是服务器为一主一备,当master宕机后,slave自动接管,继续为用户提供服务。
本文以开源团队开发的EMOS微型邮件系统为例:
首先上图:
大概解释下:
1.用keepalived来做健康检查,再用脚本的形式来检测我们需要的服务器状态,一旦宕机,备机自动接管vip
2.用rsync来做数据同步,大概可以5分钟一次,本来想用rsync+inotify做实时同步的,但考虑到数据变动频率较大,容易丢失数据,故只采用rsync来做。
具体部署:
第一部分:高可用keepalived
1.首先安装keepalived并配置:
#wget #tar -zxf keepalived-1.2.2.tar.gz #cd keepalived #./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.18-308.8.2.el5-x86_64/ #make && make install2.贴出配置文件并有相应注释:
! Configuration File for keepalived global_defs { notification_email { test@sina.com #设置邮件报警地址,可以设置多个,每行一个 } notification_email_from root@localhost #设置邮件的发送地址 smtp_server 127.0.0.1 #邮件发送的服务器ip smtp_connect_timeout 30 #设置连接smtp server的超时时间 router_id Mail1 #表示运行keepalived服务器的一个标示,发邮件时显示在邮件主题中的信息 } vrrp_instance VI_1 { #定义vrrp实例 state MASTER #类型为主服务器 interface eth0 #指定HA检测网络的端口 virtual_router_id 50 #虚拟路由表示,这个表示是一个数字,同一个vrrp实例使用唯一的标示 priority 100 #定义优先级,数字越大,优先级越大,在同一个vrrp里,MASTER的优先级必须高于SLAVE advert_int 1 #设定MASTER和SLAVE服务器之间的健康检查的时间间隔,单位是秒 authentication { auth_type PASS #设定验证类型,主要有PASS和AH两种 auth_pass 1111 #设置密码,在同一个vrrp里,MASTER和SLAVE必须使用相同的密码才能正常通信 } virtual_ipaddress { 192.168.1.100 #设置虚拟ip(VIP) } } virtual_server 192.168.1.100 80 { #虚拟服务器地址(VIP)、端口 delay_loop 6 #健康检查的间隔时间(秒),每隔 6 秒查询 realserver状态 lb_algo rr #lvs 调度算法,这里使用轮询 lb_kind DR #lvs 负载均衡机制,这里使用直连路由 persistence_timeout 60 #同一 IP 的连接 60 秒内被分配到同一台 realserver protocol TCP #用 TCP 协议检查 realserver 状态 real_server 192.168.1.1 80 { #第一个web节点的地址以及端口 weight 1 #节点的权重 TCP_CHECK { #健康检查的方式 connect_port 80 #检查的目标端口 connect_timeout 3 #故障重试秒数(即连接超时) nb_get_retry 3 #重试延迟(即重试次数) delay_before_retry 4 #重试间隔(秒) } } real_server 192.168.1.2 80 { #同上! weight 1 TCP_CHECK { connect_port 80 connect_timeout 3 nb_get_retry 3 delay_before_retry 4 } } }