当前位置: 首页 > 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应该被绑回到主机上了

相关文章:

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

一. 介绍作为服务器,需要提供一定的24X7的安全保证,这样可以防止关键节点的宕机引起系统的全面崩溃。利用OpenSource开源软件,完成系统的高可靠双机热备方案。基于linux的 HA软件可靠稳定,比使用商业版本的HA软件降低成…...

【Tomcat】Apache官方结束Tomcat 8.5分支版本技术支持

根据 Apache 官方发布的声明,Apache官方将于2024年3月31日后正式结束对于Tomcat 8.5这个分支版本的技术支持,包括以下几点: 1)不太可能继续为 8.5 分支发布新的版本; 2)仅影响 8.5 分支的漏洞将不会被解决&…...

Go 源码之读写锁 sync.RWMutex

Go 源码之读写锁 sync.RWMutex 文章目录 Go 源码之读写锁 sync.RWMutex一、简介二、源码(一)RWMutex数据结构(二)Lock(三)Unlock(四)TryRLock(五)Rlock(六)RUnlock三、常见问题1. 什么是CAS,什么是原子操作2. 写操作是如何阻止写操作的3. 写操作是如何阻止读操作的…...

大数据实验统计-1、Hadoop安装及使用;2、HDFS编程实践;3、HBase编程实践;4、MapReduce编程实践

大数据实验统计 1、Hadoop安装及使用; 一.实验内容 Hadoop安装使用: 1)在PC机上以伪分布式模式安装Hadoop; 2)访问Web界面查看Hadoop信息。 二.实验目的 1、熟悉Hadoop的安装流程。 2、…...

PyTorch搭建Informer实现长序列时间序列预测

目录 I. 前言II. InformerIII. 代码3.1 输入编码3.1.1 Token Embedding3.1.2 Positional Embedding3.1.3 Temporal Embedding 3.2 Encoder与Decoder IV. 实验 I. 前言 前面已经写了很多关于时间序列预测的文章: 深入理解PyTorch中LSTM的输入和输出(从i…...

firefox切换本地服务和全球服务的方法

方法1:“设置”>“同步">“切换全球/本地服务器” https://jingyan.baidu.com/article/1974b2898523bbb5b1f774e2.html 方法2:地址栏输入about:config,搜索首选项名称里输入identity.fxaccounts.autoconfig.uri,填入…...

Windows下用CMake编译PugiXML及配置测试

作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 PugiXML是什么? PugiXML 是一个用于解析和操作 XML 文档的 C 库。它提供了简单易用的接口,能够高效地加载…...

python-基础篇-字符串、列表、元祖、字典-列表

文章目录 2.3.2列表2.3.2.1列表介绍2.3.2.1.1列表的格式2.3.2.1.2打印列表 2.3.2.2列表的增删改查2.3.2.2.1列表的遍历2.3.2.2.1.1使用for循环2.3.2.2.1.2使用while循环 2.3.2.2.2添加元素("增"append, extend, insert)2.3.2.2.2.1append 2.3.2.2.2.2extend2.3.2.2.2…...

Qt控件样式设置其一(常见方法及优缺点)

如果你对Qt有基本的了解,应该知道它的一大优点是跨平台,可以在不同的系统中编译运行。但在我看来,Qt还有另外一个优点,就是制作界面比较方便和灵活,能够实现主流静态效果的桌面应用。(如果需要实现比较灵动…...

软件测试(测试用例详解)(三)

1. 测试用例的概念 测试用例(Test Case)是为了实施测试而向被测试的系统提供的一组集合。 测试环境操作步骤测试数据预取结果 测试用例的评价标准: 用例表达清楚,无二义性。。用例可操作性强。用例的输入与输出明确。一条用例只有…...

最优算法100例之33-字符串/数字的排列组合问题

专栏主页:计算机专业基础知识总结(适用于期末复习考研刷题求职面试)系列文章https://blog.csdn.net/seeker1994/category_12585732.html 题目描述 字符串/数字的排列组合问题 void dfs(int deep){if(deep == n){//输出}for(int i = 0; i < n; i++){if(flag[i] == 0){d[d…...

Java面试题:请解释Java中的多线程编程?

Java中的多线程编程允许 concurrently 执行多个线程&#xff0c;从而可以同时执行多个任务&#xff0c;提高程序的效率和响应性。在Java中&#xff0c;线程可以通过以下两种主要方式来实现&#xff1a; 继承 Thread 类实现 Runnable 接口 继承 Thread 类 class MyThread ext…...

acwing算法提高之图论--最小生成树的扩展应用

目录 1 介绍2 训练 1 介绍 本专题用来记录使用最小生成树算法&#xff08;prim或kruskal&#xff09;解决的扩展题目。 2 训练 题目1&#xff1a;1146新的开始 C代码如下&#xff0c; #include <iostream> #include <cstring> #include <algorithm>usin…...

政安晨:【Keras机器学习实践要点】(十七)—— 利用 EfficientNet 通过微调进行图像分类

政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: TensorFlow与Keras机器学习实战 希望政安晨的博客能够对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff01; 本文目标&#xff1a; 使用 EfficientNet 和在图…...

wordpress全站开发指南-面向开发者及深度用户(全中文实操)--php函数

php函数 wordpress会封装一部分函数&#xff0c;比如bloginfo该函数的作用是直接调用你设置的你的网站的名称 示例 This is our amazing custom theme <?php echo 22; function myfirstfunction(){ echo 33; echo "<p>Hello ,this is my first function</…...

Linux 设备驱动管理之内核对象(Kernel Object)机制

Linux 设备驱动管理之内核对象(Kernel Object)机制 Linux内核是一个复杂的系统&#xff0c;它通过一系列的机制和结构体来管理和表示系统中的资源。其中一个关键的概念是“内核对象”&#xff08;Kernel Object&#xff0c;简称kobject&#xff09;。本文将深入探讨kobject机制…...

【C语言】关键字选择题

前言 题目一&#xff1a; 题目二&#xff1a; 题目三&#xff1a; 题目四&#xff1a; 题目五&#xff1a; 题目六&#xff1a; 前言 关于C语言关键字相关的选择题 题目一&#xff1a; 用在switch语言中的关键字不包含哪个&#xff1f;( ) A .continue B .break C .defa…...

营销中的归因人工智能

Attribution AI in marketing 归因人工智能作为智能服务的一部分&#xff0c;是一种多渠道算法归因服务&#xff0c;根据特定结果计算客户互动的影响和增量影响。有了归因人工智能&#xff0c;营销人员可以通过了解每个客户互动对客户旅程每个阶段的影响来衡量和优化营销和广告…...

ChatGPT 的核心 GPT 模型:探究其生成式预训练变换架构的革新与应用潜力

GPT&#xff08;Generative Pre-trained Transformer&#xff09;模型是一种深度学习模型&#xff0c;由OpenAI于2018年首次提出&#xff0c;并在随后的几年中不断迭代发展&#xff0c;包括GPT-2、GPT-3以及最新的GPT-4。GPT模型在自然语言处理&#xff08;NLP&#xff09;领域…...

Python | Leetcode Python题解之第10题正则表达式匹配

题目&#xff1a; 题解&#xff1a; class Solution:def isMatch(self, s: str, p: str) -> bool:m, n len(s), len(p)dp [False] * (n1)# 初始化dp[0] Truefor j in range(1, n1):if p[j-1] *:dp[j] dp[j-2]# 状态更新for i in range(1, m1):dp2 [False] * (n1) …...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比

在机器学习的回归分析中&#xff0c;损失函数的选择对模型性能具有决定性影响。均方误差&#xff08;MSE&#xff09;作为经典的损失函数&#xff0c;在处理干净数据时表现优异&#xff0c;但在面对包含异常值的噪声数据时&#xff0c;其对大误差的二次惩罚机制往往导致模型参数…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP

编辑-虚拟网络编辑器-更改设置 选择桥接模式&#xff0c;然后找到相应的网卡&#xff08;可以查看自己本机的网络连接&#xff09; windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置&#xff0c;选择刚才配置的桥接模式 静态ip设置&#xff1a; 我用的ubuntu24桌…...

力扣热题100 k个一组反转链表题解

题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...

Razor编程中@Html的方法使用大全

文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...

在 Spring Boot 中使用 JSP

jsp&#xff1f; 好多年没用了。重新整一下 还费了点时间&#xff0c;记录一下。 项目结构&#xff1a; pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...