当前位置: 首页 > news >正文

Linux+HA高可用24X7的安全保证

一. 介绍
作为服务器,需要提供一定的24X7的安全保证,这样可以防止关键节点的宕机引起系统的全面崩溃。利用OpenSource开源软件,完成系统的高可靠双机热备方案。
基于linux的 HA软件可靠稳定,比使用商业版本的HA软件降低成本约9成左右。
用 lvs 和 DRBD 实现了一个真实环境下的双机热容错集群。这里的关键技术是如何实现ip代换, mon/heartbeat检测, 文件同步。同样这一方法稍加改动就可以实现oracle热备份、ldap热备份等。

二. 方案描述
将真实服务地址绑定到一个虚拟网卡(eth0:1)上通过检测程序(heartbeat)来将主机或是备份主机的虚拟网卡(eth0:1)激活。从而实现热备份。使用网络硬盘RAID来同步文件。检测程序通过内网进行监控。


F
2 工作模式
a) 正常状态:


b) 备份激活:


c) 主机就绪:


d) 切换回正常模式:
需要手动停止备份服务器的服务,系统会自动切换回正常模式
三. 软硬件需求
两台双网卡主机完全安装 redhat6.2
主机IP 10.0.0.126 备份主机IP 10.0.0.250
实际服务即浮动IP 202.9.201.61
邮件系统:
系统Mail2.0
HA软件:
ftp://ha.redhat.com/pub/ha/piranha-docs-0.4.17-2.i386.rpm
ftp://ha.redhat.com/pub/ha/piranha-gui-0.4.17-2.i386.rpm
ftp://ha.redhat.com/pub/ha/piranha-0.4.17-2.i386.rpm
ftp://ha.redhat.com/pub/ha/ipvsadm-1.11-4.i386.rpm
http://www.complang.tuwien.ac.at/reisner/drbd/download/drbd-0.5.8.1.tar.gz
安装软件:
rpm –Uvh ipvsadm* piranha*两台主机都要装
金笛邮件系统安装
DRBD 安装
Tar zvxf tar -zvxf drbd-0.5.8.1.tar.gz
cd drbd
make
make install
有如下相关文件
/usr/sbin/drbdsetup
/lib/modules/2.2.18pre11-va2.1/block/drbd.o
/etc/ha.d/resource.d
/etc/rc.d/init.d/drbd
/sbin/insmod drbd进行测试
应返回”Using /lib/modules/2.2.18pre11-va2.1/block/drbd.o”
四. 设置
编辑/etc/lvs.cf文件
#Example of /etc/lvs.cf
#还需要smtpd popd这两个启动脚本
service = fos # 采用fos模式
primary = 10.0.0.126 # 主ip地址(qmail)
backup = 10.0.0.250 # 备份主机ip地址(Backup)
backup_active = 1 # 激活备份
heartbeat = 1 # 激活Heartbeat
heartbeat_port = 1050 # Heartbeat端口
keepalive = 2 # heartbeat间隔 单位秒
deadtime = 10 # 判定死机间隔
rsh_command = ssh # 文件同步方案 选ssh
#failovermail服务
failover pop {
active = 1 # 激活监听服务
address = 202.93.204.68 eth0:1 #
port = 110 #pop 端口
send = "n" #pop 连接特征串
expect = "+OK" #pop 反馈特征串
timeout = 10
start_cmd = "/etc/rc.d/init.d/popd start" #pop 启动命令
stop_cmd = "/etc/rc.d/init.d/popd stop" #pop关闭命令
}
failover smtp {
active = 1 #激活监听服务
address = 202.93.204.68 eth0:1 #
port = 25 #smtp端口
send = "n" #smtp 连接特征串
expect ="220" #smtp 反馈特征串
timeout = 10
start_cmd = "/etc/rc.d/init.d/smtpd start" # smtp启动命令
stop_cmd = "/etc/rc.d/init.d/smtpd stop" # smtp关闭命令
}
failover mirror {
active = 1
timeout = 10
start_cmd = "/etc/ha.d/resource.d/datadisk start" # DRBD启动命令
stop_cmd = "/etc/ha.d/resource.d/datadisk stop" # DRBD 关闭命令
}
同步LVS文件
scp /etc/lvs.cf 10.0.0.112:/etc/lvs.cf
编辑/etc/fstab加入 (两台都要加)
/dev/nb0 /var/qmail ext2 noauto 0 0 #FOS RAID
如下
/dev/sda1 /boot ext2 defaults 1 1
/dev/sda2 / ext2 defaults 1 1
/dev/nb0 /var/qmail ext2 noauto 0 0 #FOS RAID
/dev/sda4 swap swap defaults 0 0
/dev/cdrom /mnt/cdrom iso9660 noauto,owner,ro 0 0
/dev/fd0 /mnt/floppy auto noauto,owner 0 0
none /proc proc defaults 0 0
none /dev/pts devpts gid=5,mode=620 0 0
编辑/etc/drbd.conf
resource drbd0 {
protocol=B
fsck-cmd=fsck.ext2 -p -y
on thost1 {
device=/dev/nb0
disk=/dev/hda7
address=10.0.0.126
port=7789
}
on thost2 {
device=/dev/nb0
disk=/dev/hda7
address=10.0.0.250
port=7789
}
}
检查两台主机drbd是否载入
#/sbin/lsmod
Module Size Used by
drbd 37792 0 (unused)
3c59x 20880 1 (autoclean)
如果drbd没有载入用如下命令载入
/sbin/insmod /lib/modules/2.2.18pre11-va2.1/block/drbd.o
在备份主机上挂接镜像盘
/usr/sbin/drbdsetup /dev/nb0 disk /dev/sda2
/usr/sbin/drbdsetup /dev/nb0 net 10.0.0.250 10.0.0.126 B
在主机上挂接镜像盘
/usr/sbin/drbdsetup /dev/nb0 disk /dev/sda2
/usr/sbin/drbdsetup /dev/nb0 net 10.0.0.126 10.0.0.250 B
/usr/sbin/drbdsetup /dev/nb0 primary
两台主机安装文件卷
/sbin/mkfs -b 4096 /dev/nb0
mount /dev/nb0 /var/qmail
启动
启动主机的drbd
/etc/rc.d/init.d/brdb start
启动备份主机的drbd
将金笛邮件系统 安装到 /home/webmail
启动主机的邮件系统 startup.sh
启动主机的pulse
/etc/rc.d/init.d/pulse start
启动备份主机的drbd
访问主机的smtp pop服务 查看是否正常(这点很重要)
然后才能启动备份主机的 pules
以上顺序不能弄错
测试
连接qmail测试是否正常工作
使用ifconfig 查看虚拟网卡是否工作
停止 主机的邮件系统服务
shutdown.sh
连接smtp pop 测试是否正常工作
使用 ifconfig 查看备份主机的网卡是否工作
正常的话应该将202.93.204.68绑定到这台主机上了
然后在停止备份主机的qmail服务 202.93.204.68应该被绑回到主机上了

http://www.lryc.cn/news/332586.html

相关文章:

  • 【Tomcat】Apache官方结束Tomcat 8.5分支版本技术支持
  • Go 源码之读写锁 sync.RWMutex
  • 大数据实验统计-1、Hadoop安装及使用;2、HDFS编程实践;3、HBase编程实践;4、MapReduce编程实践
  • PyTorch搭建Informer实现长序列时间序列预测
  • firefox切换本地服务和全球服务的方法
  • Windows下用CMake编译PugiXML及配置测试
  • python-基础篇-字符串、列表、元祖、字典-列表
  • Qt控件样式设置其一(常见方法及优缺点)
  • 软件测试(测试用例详解)(三)
  • 最优算法100例之33-字符串/数字的排列组合问题
  • Java面试题:请解释Java中的多线程编程?
  • acwing算法提高之图论--最小生成树的扩展应用
  • 政安晨:【Keras机器学习实践要点】(十七)—— 利用 EfficientNet 通过微调进行图像分类
  • wordpress全站开发指南-面向开发者及深度用户(全中文实操)--php函数
  • Linux 设备驱动管理之内核对象(Kernel Object)机制
  • 【C语言】关键字选择题
  • 营销中的归因人工智能
  • ChatGPT 的核心 GPT 模型:探究其生成式预训练变换架构的革新与应用潜力
  • Python | Leetcode Python题解之第10题正则表达式匹配
  • 华大单片机新建工程步骤
  • 设计模式:桥接模式
  • 人脸识别:Arcface--loss+code
  • Linux-程序地址空间
  • adobe stock会员开通付费付款订阅充值教程/adobe stock免费白嫖一个月
  • Mysql的基本命令
  • leetcode.24. 两两交换链表中的节点
  • 后端开发框架Spring Boot快速入门
  • I2C驱动实验:验证所添加的I2C设备的设备节点
  • 160 Linux C++ 通讯架构实战14,epoll 反应堆模型
  • 根据mysql的执行顺序来写select