当前位置: 首页 > 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) …...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口&#xff08;适配服务端返回 Token&#xff09; export const login async (code, avatar) > {const res await http…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件&#xff0c;用于在原生应用中加载 HTML 页面&#xff1a; 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

管理学院权限管理系统开发总结

文章目录 &#x1f393; 管理学院权限管理系统开发总结 - 现代化Web应用实践之路&#x1f4dd; 项目概述&#x1f3d7;️ 技术架构设计后端技术栈前端技术栈 &#x1f4a1; 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 &#x1f5c4;️ 数据库设…...

基于Springboot+Vue的办公管理系统

角色&#xff1a; 管理员、员工 技术&#xff1a; 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能&#xff1a; 该办公管理系统是一个综合性的企业内部管理平台&#xff0c;旨在提升企业运营效率和员工管理水…...

C# 表达式和运算符(求值顺序)

求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如&#xff0c;已知表达式3*52&#xff0c;依照子表达式的求值顺序&#xff0c;有两种可能的结果&#xff0c;如图9-3所示。 如果乘法先执行&#xff0c;结果是17。如果5…...

Unity UGUI Button事件流程

场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...

鸿蒙HarmonyOS 5军旗小游戏实现指南

1. 项目概述 本军旗小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;采用DevEco Studio实现&#xff0c;包含完整的游戏逻辑和UI界面。 2. 项目结构 /src/main/java/com/example/militarychess/├── MainAbilitySlice.java // 主界面├── GameView.java // 游戏核…...

C#最佳实践:为何优先使用as或is而非强制转换

C#最佳实践&#xff1a;为何优先使用as或is而非强制转换 在 C# 的编程世界里&#xff0c;类型转换是我们经常会遇到的操作。就像在现实生活中&#xff0c;我们可能需要把不同形状的物品重新整理归类一样&#xff0c;在代码里&#xff0c;我们也常常需要将一个数据类型转换为另…...

深入浅出JavaScript中的ArrayBuffer:二进制数据的“瑞士军刀”

深入浅出JavaScript中的ArrayBuffer&#xff1a;二进制数据的“瑞士军刀” 在JavaScript中&#xff0c;我们经常需要处理文本、数组、对象等数据类型。但当我们需要处理文件上传、图像处理、网络通信等场景时&#xff0c;单纯依赖字符串或数组就显得力不从心了。这时&#xff…...

Android Framework预装traceroute执行文件到system/bin下

文章目录 Android SDK中寻找traceroute代码内置traceroute到SDK中traceroute参数说明-I 参数&#xff08;使用 ICMP Echo 请求&#xff09;-T 参数&#xff08;使用 TCP SYN 包&#xff09; 相关文章 Android SDK中寻找traceroute代码 设备使用的是Android 11&#xff0c;在/s…...