0

0

实现基于SQLServer存储账号的MDaemon群集

php中文网

php中文网

发布时间:2016-06-07 15:44:44

|

1098人浏览过

|

来源于php中文网

原创

欢迎进入Windows社区论坛,与300万技术人员互动交流 >>进入 ?本章概述 MDaemon Server(以下简称 MDaemon) 的冗余方案有多种选择,本章将以微软公司出品的 SQL Server 2005 简体中文企业版(以下简称 SQL2005)作为 MDaemon 账户存储数据库,在微软群集(MS

欢迎进入windows社区论坛,与300万技术人员互动交流 >>进入

  ?本章概述
 
  MDaemon Server(以下简称 MDaemon) 的冗余方案有多种选择,本章将以微软公司出品的 SQL Server 2005 简体中文企业版(以下简称 SQL2005)作为 MDaemon 账户存储数据库,在微软群集(MSCS)上部署 SQL2005 虚拟服务器群集,从而实现 MDaemon 的故障自动转移,达到用户所要求的高可用性。

  因为本章重点放在 MDaemon 群集的实现上,所以关于 MSCS 和 SQL2005 群集的部署请参考:
  1.Windows Server 2003 群集的创建和配置
      http://www.microsoft.com/china/technet/prodtechnol/windowsserver2003/technologies/clustering/confclus.mspx

  本次实验所使用的 MDaemon 版本是 v7.23 英文版,建议大家不论测试还是实际生产环境最好都使用英文版以避免不必要的错误故障,如果情况允许最好操作系统也选择英文版,因为在实际情况中发现英文版的 MDaemon 与中文系统存在兼容性会导致菜单显示不完整。

  ?测试环境      
  宿主:
  硬件配置:PIV2.4G / 1.5G-DDR400 / 80G-7200pm / 8139C-NIC
  操作系统:Windows XP Pro With SP2 ENU
  虚拟平台:VMware GSX 3.2.1

  NodeA:
  硬件配置:PIV2.4G / 512M / 10G+0.5G(Qdisk)+4G(Sdisk) / vlance-NIC+vmxnet-NIC
  操作系统:Windows Server 2003 EE With SP1 CHS
  网络信息:vlance-NIC:10M 全速半双工 / Heartbeat / IP192.168.236.250
                      vmxnet-NIC:1000M 全速全双工 / Public / IP192.168.199.250
  承载信息:DC+DNS+IIS+SQL2005+MSCS

  NodeB:
  硬件配置:PIV2.4G / 512M / 10G+0.5G(Qdisk)+4G(Sdisk) / vlance-NIC+vmxnet-NIC
  操作系统:Windows Server 2003 EE With SP1 CHS
  网络信息:vlance-NIC:10M 全速半双工 / Heartbeat / IP192.168.236.251
                      vmxnet-NIC:1000M 全速全双工 / Public / IP192.168.199.251
  承载信息:DC+DNS+IIS+SQL2005+MSCS

  MSCS:
  MSCS:IP192.168.199.200 / HostName:CLUSTER
  SQL2005 VirtualHost:IP192.168.199.201 /HostName:SQL2005

  ?理论概念 & 最终目标

  使用 SQL2005 作为 MDaemon 账户存储数据库并基于群集模式,以保障 MDaemon 任何一个节点服务器出现故障后仍然能够提供域和帐户的验证及管理。

  使用资源磁盘(以下简称Sdisk)来存储 MDaemon 的用户数据,以保障 MDaemon 任何一个节点服务器出现故障后,用户在通过验证后登录到 MDaemon 上取得的邮件与数据一致。

  最后通过 MSCS 的故障自动转移,实现 MDaemon 的冗余。

  为此,在 SQL2005 中创建一个用来保存 MDaemon 域和帐户信息的数据库,命名为 MDaemonUsers。然后将 MDaemon 账户存储方式配置为 ODBC 方式,并创建与 SQL2005 中 MDaemonUsers 数据库的连接,导入账户数据库查询。修改 MDaemon 默认账户模板的存储路径,在群集管理器中将 MDaemon 配置为群集中的一个“通用服务”资源。

  ?实施部署
 
  首先在获得活动资源的节点服务器上安装 MDaemon ,请记录下安装时管理员的名称和密码,完成 MDaemon 的安装后,强烈建议重新启动一次系统,确保 MDaemon 服务正常运转。之后进行以下的操作:

  1、打开数据库管理器,创建一个新的数据库,名称为:MDaemonUsers。

实现基于SQLServer存储账号的MDaemon群集

  2、打开服务管理器,找到 MDaemon 服务,将启动类型改为“手动”。

实现基于SQLServer存储账号的MDaemon群集

  3、因为 MDaemon 当前只绑定在 192.168.199.251 上,群集 IP 不在绑定范围,会导致实际中出现访问故障。为此,打开 MDaemon 管理器并点击导航栏上的“Setup”,选择“Primary domain...”。

实现基于SQLServer存储账号的MDaemon群集

  4、进入“Primary Domain”后,在“Domain”页下将“Primary domain IP”改为“127.0.1.1”,确定后退出。

实现基于SQLServer存储账号的MDaemon群集

  5、为了让 MDaemon 的用户数据都保存在 Sdisk 下,需要修改默认新用户配置。为此,点击导航栏上的“Accounts”,选择“New account defaults...”。

实现基于SQLServer存储账号的MDaemon群集

  6、在“Account Defaults”页下,将“Mail directory”改为“S:\MDaemon Users\$DOMAIN$\$MAILBOX$\”,根据需要再配置其他项,完成后确定退出。

实现基于SQLServer存储账号的MDaemon群集

  7、因为在 MDaemon 安装时创建了一个管理员,为了保证每个节点中 MDaemon 管理员的一致性,则需要将管理员的数据也迁移到 Sdisk 中。为此,点击导航栏上的“Accounts”,选择“Account manager...”。

实现基于SQLServer存储账号的MDaemon群集

  8、选中账号“Admin”,进入“Account Editor”并切换到“Mailbox”页下,将“Message directory”改为“S:\MDaemon USERS\maytide.net\admin\”,完成后确定并退出。

实现基于SQLServer存储账号的MDaemon群集

  9、现在进行 MDaemon 账户存储方式的修改,将其改为 ODBC 中的 SQL Server 存储方式。为此,点击导航栏上的“Accounts”,选择“Account database...”。

实现基于SQLServer存储账号的MDaemon群集

  10、进入“Account Database Options”后,将“Account database”页下的选择改为“Store account data in a ODBC accessible store”,并点击“Configure”开始配置。

实现基于SQLServer存储账号的MDaemon群集

  11、进入配置页面后,点击“New DSN”,开始创建数据源。

实现基于SQLServer存储账号的MDaemon群集

  12、在“选择数据源”配置中,切换到“机器数据源”,并选择“新建”。

实现基于SQLServer存储账号的MDaemon群集

  13、在“创建新数据源”配置中,选择数据源类型为“系统数据源(只用于当前机器)”,并点击“下一步”。

实现基于SQLServer存储账号的MDaemon群集

  14、选择“SQL Server”作为数据源的驱动程序,并点击“下一步”。

实现基于SQLServer存储账号的MDaemon群集

  15、至此,就完成了以 SQL Server 为连接类型的系统数据源的创建,点击“完成”。

实现基于SQLServer存储账号的MDaemon群集

  16、此时系统自动弹出连接 SQL Server 的 ODBC 数据源创建向导,根据提示填写信息。为了方便管理,我将此 ODBC 数据源命名为“MDaemonUsers”,注意服务器这项应当选择主机名为“SQL2005”的服务器,因为“SQL2005”是本次实验中的 SQL2005群集虚拟主机。

实现基于SQLServer存储账号的MDaemon群集

  17、验证与连接配置中,我是按照默认配置的。

实现基于SQLServer存储账号的MDaemon群集

  18、将默认的数据库改为 SQL2005 中名为“MDaemonUsers”的数据库,因为此数据库将用来保存 MDaemon 的域和用户信息。

Descript
Descript

一个多功能的音频和视频编辑引擎

下载

实现基于SQLServer存储账号的MDaemon群集

  19、其他选项为默认,并点击“完成”。

实现基于SQLServer存储账号的MDaemon群集

  20、弹出完成后的提示,这里可以选择“测试数据源”来进行连接测试。

实现基于SQLServer存储账号的MDaemon群集

  21、至此就在本节点服务器上建立了一个以 SQL Server 连接,名为“MDaemonUsers”的 ODBC 机器数据源。

实现基于SQLServer存储账号的MDaemon群集

  22、完成 ODBC 的配置后,回到 MDaemon 的“ODBC Selector Wizard”下,可以看到“MDaemonUsers”已经在数据源列表中,选中它后点击“下一步”。

实现基于SQLServer存储账号的MDaemon群集

  23、因为 ODBC 中的“MDaemonUsers”数据源所对应的 SQL2005 下的数据库“MDaemonUsers”中没有 MDaemon 所需要的表,所以我们运行 MDaemon 自带的脚本来创建它。为此,点击“Run a script to created the necessary tables...”。

实现基于SQLServer存储账号的MDaemon群集

  24、向导将自动定位到 SQL scritps 所在的位置,此处有多个脚本选择,因为我们使用的是 SQL Server ,所以选择名为“AccountsDB-SQLServer.sql”的脚本文件,并选择“打开”。

实现基于SQLServer存储账号的MDaemon群集

  25、此时会弹出“Tables created successfully!”的提示,如果失败请重新检查之前的步骤确保数据源创建成功。

实现基于SQLServer存储账号的MDaemon群集

  26、回到“ODBC Selector Wizard”界面,我们会看到成功创建的两个表“domains”、“userlist”,点击“完成”。

实现基于SQLServer存储账号的MDaemon群集

  27、MDaemon 开始转换数据,并给出提示。

实现基于SQLServer存储账号的MDaemon群集

  好了,可以休息一下了。因为到这里就完成了 MDaemon 以 SQL Server 为账户存储方式的建立。感觉是不是够累得,其实真的操作的时候是非常简单的要不了多长时间,基本上一路选择下来是非常的顺利。不过说真的我是够累得,写到这里已经是17:42分了,下班时间过去12分钟了,决定继续写完。

  基本上工作已经完成了一大半了,下面请关闭这台节点,切换到其他节点进行 MDaemon 的安装后配置,关于第二台节点上 MDaemon 的安装配置就不再重复了。

  不过需要提醒注意的是:第二台节点上 MDaemon 安装时的管理员名称及密码都应该与第一台上的相同,在完成安装的最后有一个选项“Start MDaemon”,最好不要勾选,因为下来我们需要手工配置这台节点上的 MDaemon 使用数据库存储账户。

  为此,打开系统管理工具程序组中的“数据源(ODBC)”参考第一个节点的数据源安装步骤为第二个节点创建与之前相同的数据源。之后,用文字编辑器打开 MDaemon 所在安装下 App 目录中的“MDaemon.ini”文件,加入以下配置:

代码
[Advanced]
UserDllType=ODBC
[USER_ODBC]
DSN=MDaemonUsers
User=
Password=

  注:DSN 是配置 MDaemon 使用服务器 ODBC 中哪个数据库源,User 和 Password 是指定数据源的访问账号和密码,同样如果 mdaemon.ini 配置文件中没有 [USER_ODBC] 配置字段则添加。

  将本节点上的 MDaemon 服务也改为“手动”方式(参考2)。运行 MDaemon ,修改默认的绑定IP(参考3~4),修改默认账号路径与第一个节点相同(参考5~6)。进入账号管理你能看到此节点上的管理员数据所在位置是在 Sdisk 上,因为第一次启动 MDaemon 前,已经手工为其配置了数据库存储账户信息,所以当第一次启动后 MDaemon 是直接从数据库中获取账户的信息。现在可以测试一下邮局是否工作正常!访问 http://IP_Address:3000 登录 WorldClient 操作测试。

  28、完成以上步骤及测试后, MDaemon 的冗余部署的准备工作算是完成了,为了实现故障自动转移,还需要将 MDaemon 配置到 MSCS 中,在开始配置之前强烈建议关闭 MDaemon 服务避免不必要的错误,因为当配置完 MDaemon 后,其监视及控制权已经转交给了 MSCS 。接下来开始为 MDaemon 配置群集,为此在当前节点上打开“群集管理器”,在 SQL Server 所在的群集组“组0”中新建一个“资源”。

实现基于SQLServer存储账号的MDaemon群集

  29、在“新建资源”中填写相关信息,这里我为资源命名为“MDaemon Server”,因为 MDaemon 本身并不支持群集,而它的群集实现纯粹是靠 DIY 出来的,所以为了能够使 MDaemon 被 MSCS 所支持,在“资源类型”中选择“通用服务”,完成后点击“下一步”。

实现基于SQLServer存储账号的MDaemon群集

  30、在“可能的所有者”中将“可用节点”中的服务器添加到“可能的所有者中”,完成后点击“下一步”。

实现基于SQLServer存储账号的MDaemon群集

  31、在“依存”关系中,请将 MDaemon 群集依赖的资源添加到“资源依存”中,完成后点击“下一步”。

实现基于SQLServer存储账号的MDaemon群集

  32、在“一般服务参数”中,“服务名”为“MDaemon”;“启动参数”为“C:\MDaemon\APP\MDAEMON.EXE”,完成后点击“下一步”。

实现基于SQLServer存储账号的MDaemon群集

  33、完成资源添加后,“MDaemon Server”便出现在“组0”中,将其联机后,系统会自动启动 MDaemon。

实现基于SQLServer存储账号的MDaemon群集

  至此,便实现了基于 SQL Server 存储账号的 MDaemon 群集,下来我们可以创建一个邮件账号进行 webmail 方式的登录来检测 MDaemon 与 SQL Server 群集连接是否正常。

实现基于SQLServer存储账号的MDaemon群集

  ?结尾
     
   MDaemon 的群集创建结束了,下来我们可以开启第一台节点进行灾难模拟,以检验此次部署实施的 MDaemon 冗余方案的效果。经过测试,当一台节点停止后,另一台节点迅速接管群集资源,并启动 MDaemon 服务。小注:当只剩下一台节点时,通过 MDaemon 自身来停止服务是无效的,经过测试关闭 MDaemon 服务后,系统会自动再次开启 MDaemon 服务,如果在此环境下作 MDaemon 的停机维护,需要通过群集管理器将 MDaemon Server 脱机。

  关于 MDaemon 的群集打算做成一个系列,而这个系列的名字就以需求为根本,名为《MDaemon Server 冗余方案系列》,在今后还将推出多种 MDaemon 的冗余方式供大家参考选择。不过,个人认为此次群集的实施方式所达到的冗余,可能只有在大环境中才能得到真正的应用。如果能够脱离微软群集(MSCS)来实现 MDaemon 的冗余就会有很大的应用市场。

  欢迎大家与我共同探讨关于 MDaemon 的冗余实现技术,同时希望大家能参与到讨论中。

  作者:gOxiA

实现基于SQLServer存储账号的MDaemon群集

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
batoto漫画官网入口与网页版访问指南
batoto漫画官网入口与网页版访问指南

本专题系统整理batoto漫画官方网站最新可用入口,涵盖最新官网地址、网页版登录页面及防走失访问方式说明,帮助用户快速找到batoto漫画官方平台,稳定在线阅读各类漫画内容。

331

2026.02.25

Steam官网正版入口与注册登录指南_新手快速进入游戏平台方法
Steam官网正版入口与注册登录指南_新手快速进入游戏平台方法

本专题系统整理Steam官网最新可用入口,涵盖网页版登录地址、新用户注册流程、账号登录方法及官方游戏商店访问说明,帮助新手玩家快速进入Steam平台,完成注册登录并管理个人游戏库。

49

2026.02.25

TypeScript全栈项目架构与接口规范设计
TypeScript全栈项目架构与接口规范设计

本专题面向全栈开发者,系统讲解基于 TypeScript 构建前后端统一技术栈的工程化实践。内容涵盖项目分层设计、接口协议规范、类型共享机制、错误码体系设计、接口自动化生成与文档维护方案。通过完整项目示例,帮助开发者构建结构清晰、类型安全、易维护的现代全栈应用架构。

33

2026.02.25

Python数据处理流水线与ETL工程实战
Python数据处理流水线与ETL工程实战

本专题聚焦 Python 在数据工程场景下的实际应用,系统讲解 ETL 流程设计、数据抽取与清洗、批处理与增量处理方案,以及数据质量校验与异常处理机制。通过构建完整的数据处理流水线案例,帮助开发者掌握数据工程中的性能优化思路与工程化规范,为后续数据分析与机器学习提供稳定可靠的数据基础。

13

2026.02.25

Java领域驱动设计(DDD)与复杂业务建模实战
Java领域驱动设计(DDD)与复杂业务建模实战

本专题围绕 Java 在复杂业务系统中的建模与架构设计展开,深入讲解领域驱动设计(DDD)的核心思想与落地实践。内容涵盖领域划分、聚合根设计、限界上下文、领域事件、贫血模型与充血模型对比,并结合实际业务案例,讲解如何在 Spring 体系中实现可演进的领域模型架构,帮助开发者应对复杂业务带来的系统演化挑战。

5

2026.02.25

Golang 生态工具与框架:扩展开发能力
Golang 生态工具与框架:扩展开发能力

《Golang 生态工具与框架》系统梳理 Go 语言在实际工程中的主流工具链与框架选型思路,涵盖 Web 框架、RPC 通信、依赖管理、测试工具、代码生成与项目结构设计等内容。通过真实项目场景解析不同工具的适用边界与组合方式,帮助开发者构建高效、可维护的 Go 工程体系,并提升团队协作与交付效率。

19

2026.02.24

Golang 性能优化专题:提升应用效率
Golang 性能优化专题:提升应用效率

《Golang 性能优化专题》聚焦 Go 应用在高并发与大规模服务中的性能问题,从 profiling、内存分配、Goroutine 调度、GC 机制到 I/O 与锁竞争逐层分析。结合真实案例讲解定位瓶颈的方法与优化策略,帮助开发者建立系统化性能调优思维,在保证代码可维护性的同时显著提升服务吞吐与稳定性。

9

2026.02.24

Golang 面试题精选:高频问题与解答
Golang 面试题精选:高频问题与解答

Golang 面试题精选》系统整理企业常见 Go 技术面试问题,覆盖语言基础、并发模型、内存与调度机制、网络编程、工程实践与性能优化等核心知识点。每道题不仅给出答案,还拆解背后的设计原理与考察思路,帮助读者建立完整知识结构,在面试与实际开发中都能更从容应对复杂问题。

7

2026.02.24

Golang 运行与部署实战:从本地到云端
Golang 运行与部署实战:从本地到云端

《Golang 运行与部署实战》围绕 Go 应用从开发完成到稳定上线的完整流程展开,系统讲解编译构建、环境配置、日志与配置管理、容器化部署以及常见运维问题处理。结合真实项目场景,拆解自动化构建与持续部署思路,帮助开发者建立可靠的发布流程,提升服务稳定性与可维护性。

5

2026.02.24

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Node.js 教程
Node.js 教程

共57课时 | 12.1万人学习

CSS3 教程
CSS3 教程

共18课时 | 6.2万人学习

Rust 教程
Rust 教程

共28课时 | 6.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号