RG-SAM 应用群集RGAC配置指南

发布于:2021-10-14 10:42:24

RG-SAM 应用群集 RGAC 配置指南
第一章 RGAC 的基本原理概述
1.1 总述
随着信息化建设的发展,人们对网络服务器的处理能力、高可用性提出了更高的要求。 网络负*胶獠坏梢杂行У亟饩龅シ衿鞯男阅芟拗疲 而且可以实现故障的快速转移, 保 证服务的高可用性以及灵活的扩展性。RGAC(即:RG Application Cluster——锐捷应用群 集,下同)方案很好地应用了这一技术,由多台服务器以对称的方式组成一个服务器集合, 每台服务器都具有等价的地位, 都可以单独对外提供服务而无须其他服务器的辅助。 通过某 种负载均衡技术, 将外部发送来的请求均匀分配到对*峁怪械哪骋惶ǚ衿魃希 而接收到 请求的服务器独立地回应客户的请求。 这种技术可以用最少的投资获得接*于大型主机的性 能。 同时,RGAC 方案整合了数据库的事务复制功能,并针对 SAM 系统提供的服务,自主 进行了研发,达到多台服务器之间的信息同步,在客户的眼里,SAM 系统只有一个,但它 所提供的服务,较之单台,更加快捷,也更加稳定!

1.2 技术介绍
NLB
Windows server 系统(Windows 2000 高级服务器版本、Windows server 2003 所有版本) 中提供了 NLB(即:Network Load Balancing——网络负载均衡,下同)功能。 NLB 技术包含两大特点:负载均衡和故障转移。 负载均衡: NLB 能将传入的请求传播到多达 32 台服务器上,即最多可以使用 32 台服务器构成一 个集群,共同分担对外的网络请求服务。该技术保证即使是在负载很重的情况下,服务器也 能做出快速响应。 网络负载均衡对外只需提供一个 IP 地址, 即集群 IP, 客户端使用这个 IP 即可访问集群。 所有的服务器上使用相同的规则, 来决定并发的流量被分配到哪一台上进行处理, 从而很大 程度上提高了服务器的处理能力。 故障转移: NLB 第二个强大的特性是故障转移。集群内每台服务器靠定时发送心跳信息来估定其 它服务器的状态。当有一台或几台服务器不可用时,服务不会中断,能够迅速在剩余的服务 器中重新指派服务器接管过来,从而对用户是一直可用的,这个过程叫做“聚合” 。这项特 性能够保障服务被不间断地提供。

信息同步
RGAC 方案提供了信息同步功能。 举个例子,RGAC 中有两台 SAM 服务器 A、B,各对应数据库 C、D。一个用户发起添 加 500 个用户的请求,这个请求被 NLB 分配到服务器 A 进行处理,数据库 C 的用户表中也 随之增加这 500 个用户。但对于请求被分配到服务器 B 处理的用户来说,服务器 B 上并没 有这新增的 500 个用户,那么,用户得到的信息就不一致了。不同的用户,不同的操作,得 到的结果可能不同,RGAC 方案的各台服务器对外就不是一个整体了。 RGAC 方案中, 通过 SQL SERVER 数据库事务复制和内存同步来解决信息同步的问题。 在上面的例子中,数据库 C 在增加了用户信息后,会把这一变化同步到数据库 D 上,对于 请求被分配到服务器 B 处理的用户来说, 服务器 B 上也有新增用户的信息。 这样所有的 SAM 服务器的信息就是同步一致的。

第二章 RGAC 配置指南
2.1 搭建网络*
首先,请按照如下网络*耍罱ㄏ低车耐*耍屑傅阒档米⒁猓 1) 因为自助服务需要公开给自助用户使用,因此为了系统安全,建议将自助服务器与 管理端服务器通过 VLAN 隔离,但配置其 IP 可以与应用群集中的服务器 A、B 通 信,自助服务器所在 VLAN 其他主机不能访问到服务器 A、B。 2) 由于应用群集采用了 Windows NLB 提供网络流量的负载均衡,一个 Windows NLB 所在的 VLAN 内数据报文是广播形式, 为了避免广播报文的扩散, 需要将连接 NLB 各服务器的交换机上联口连接在核心交换机的路由口上。 3) 如果使用下图的*耍蚩赡芑岢鱿秩现げ簧系奈侍猓Ω帽苊庹庋苯恿拥耐 扑。

如果确实需要使用上图的直连*耍换换Ω檬褂 S3760/S5760 或者软件版本 为 RGNOS 10.X 的二层交换机。 4) 在双 NLB 应用中,需要保证服务器 A1/A2 和 B1/B2 在不同的 VLAN 中,但都能够

正常的进行 IP 报文的通信。

单 NLB 的应用群集

注意:其中 A 为应用群集的数据复制主服务器, B 为应用群集的任务调度主服务器, C 为自助服务器; 双 NLB 的应用群集

注意:其中 A1 为应用群集的数据复制主服务器, A2 为应用群集的任务调度主服务器, B1 为 NLB B 的主机 1; B2 为 NLB B 的主机 2; C 为自助服务器;

2.2 安装 RG-SAM V3.0 企业版
按照《RG-SAM 安全计费管理系统安装手册》 ,在各个服务器*沧 RG-SAM V3.0 企 业版,注意管理系统和自助服务系统分别安装; 注意:安装 RG-SAM V3.0,首先需要安装好 Windows Server 2003 Enterprise Edition SP2 以及 SQLServer2005 Enterprise Edition SP2。

2.3 配置 NLB
为实现负载均衡,需要配置 NLB。下面以单 NLB 的应用群集为例介绍 NLB 的配置, 果是双 NLB,则根据双 NLB 的应用群集的*送迹直鸫罱礁觥

2.3.1 主群集管理器的配置
主群集管理器不仅能管理自身服务器,也能管理其他服务器。 运行中输入“nlbmgr” ,或者单击“开始” ,?“所有程序”?“管理工具”?“网络负 *胶夤芾砥鳌 。

1.

2.

新建一个集群,点击“集群”?“新建(N)”

配置群集参数 IP,子网掩码,完整 Internet 名称,图示配置,集群 IP:192.168.54.229, 子网掩码:255.255.255.0 ,完整 Internet 名称(F):cluster.star.com。 说明:网络地址不需要我们输入,会根据群集 ip 地址自动生成一个 MAC 地址。具体这些群 集各个参数的含义可以参照微软官方文档: http://www.microsoft.com/technet/prodtechnol/windowsserver2003/zh-chs/library/ServerHelp/fa6 ef832-1aa7-472f-b492-0dd3c60bd46d.mspx?mfr=true 3.

4.

输入集群的附加 IP 地址,可以添加也可以不添加,如果添加则访问群集的 IP 又增加了 一个,也就是访问附加 IP 地址与访问刚才的 IP 地址都是在访问群集。

5.

注:一般 NLB 的配置请保持默认配置,不需要修改。 编辑群集中的端口规则,单击“编辑”

6.

注:一般 NLB 的配置请保持默认配置,不需要修改。 其中端口规则也可以参考微软官方文档: http://www.microsoft.com/technet/prodtechnol/windowsserver2003/zh-chs/library/ServerHel p/fa6ef832-1aa7-472f-b492-0dd3c60bd46d.mspx?mfr=true

7.

点击“下一步”

8.

创建 NLB 中的服务器:输入该服务器 IP 地址 ?“连接(O)” ,也就是本机 IP 地址。此 处需要注意:系统 Administrator 用户的密码不能为空,若没有设置 Administrator 密 码,会跳出“用户权限”的窗口提示输入密码,但输入密码后会出现“0x800706d5” 错误代码。

群集 IP 为空的情况不管 9. 如果连接成功则点击“对配置一个新的群集可用的接口”中对应的 IP 地址,然后点击 “下一步”

10. 确认配置主机参数,优先级默认为 1,以后的服务器系统会默*创涡蚺帕校突Ф朔 问按照优先级顺序访问服务器。确认完毕点击“完成” ;

11. 设置 NLB 对 HTTP 以及 HTTPS 不进行负载均衡。 本步骤的配置是在假设 SAM 服务管理器配置的 HTTP 以及 HTTPS 的端口都为默 认值(HTTP 的端口默认值为 8080,HTTPS 为 8443)的情况下进行。如果 HTTP 以及 HTTPS 端口配置不是默认值,请参考本步骤相应配置。 打开群集属性对话框, 添加三条端口规则, 端口范围分别设为 0~8079, 8081~8442, 8444~65535,其它配置均保持默认值,单击确定。

配置以后,要求管理员只能使用群集 IP 来访问 web 管理端,不要用私有 IP 访问 web 管理端。 12. 由于服务器在单播模式单块网卡情况下, 服务器之间不能进行相互通信, Windows 2003 SP1 以*姹 解决了这一问题。点击“开始”?“运行”?输入“regedit”后运行;

13. 找出注册表子项: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\WLBS\Parameters\Interfac e\{GUID},{ GUID } 占位符代表特定 NLB 实例的 GUID。 14. 右击“新建”?“DWORD(D)”

15. “数值名称”中输入“UnicastInterHostcommSupport”“数值数据”输入 1,“基数”为 , 十六进制。

16. 完毕后如下:

17. 点击“开始”?“运行”?输入“cmd”后运行;

18. 输入“nlb reload”后运行;

19. 结果显示:

2.3.2 添加群集服务器
20. NLB 中需要再添加一台服务器进群集中,在群集管理器上运行网络负*胶夤芾砥鳎 点击“群集”?“添加主机” :

21. 在“主机”中输入地址:192.168.54.227,连接成功后点击“对配置群集可用的接口” , 之后点击“下一步” ;

22. 确认该服务器的主机参数,确认完毕点击“完成” 。

23. 在该台服务器上(也就是 192.168.54.227)本机上运行步骤 11 至 18, 这样该台服务器才能 与另外的服务器通信。

2.3.3 注意事项
1. 2. 配置 NLB 时,选用网卡只能是 Intel 或 3com 的,不支持其他如 tp_link 等网卡; Windows 2003 SP1 以*姹局薪饩隽 NLB 单播模式下,服务器单块网卡不能通信,具 体步骤: a) 单击“开始” ,键入 regedit 并运行 。 b) 找到并单击以下注册表子项: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\WLBS\Parameters\Int erface\{GUID}。 注意:{ GUID } 占位符代表特定 NLB 实例的 GUID。 本单元 中可用于 ClusterIPAddress 子项标识不同 NLB 群集。 c) 在 编辑菜单, 单击“新建” ,单击, “DWord”值,然后添加以下数值数据。 值名 称“UnicastInterHostCommSupport ” 值 1 注意 如果 UnicastInterHostCommSupport 注册表项设置为任何非零值, InterHost 单播通信支 持将启用。 d) 退出注册表编辑器。 e) 打开命令提示符, 然后键入以下命令: “NLB RELOAD”运行。 如果不需要服务器之间通信也是可以的,开始步骤从 1 至 10,之后不能在该服务器上 添加另外一台群集服务器了, 就在登录另外一台服务器上, “网络负*胶夤芾砥鳌 打开 , 右击“连接到现存的” 。

3.

然后在输入建立群集服务器的 IP 地址

这样也就是群集管理器只能管理自身服务器,不能管理其他服务器。

2.4 配置数据库复制
为了实现各个 SAM 服务器之间的信息同步,需要配置 SQL SERVER 数据库复制。 下面,下面以单 NLB 的应用群集为例,来演示应用群集中需要的数据库复制功能的配 置过程。实际部署过程中根据 IP 的不同进行略微的调整即可。双 NLB 的应用群集的数据库 复制配置方法与下文大体是一致的。 在配置之前,先介绍一下 SQL SERVER 数据库复制的一些基本概念: 发布/分发服务器:是数据复制主服务器,一切配置操作都可以在此服务器上完成。 订阅服务器:除了发布/分发服务器外,其他所有需要做数据库复制的服务器都需要设 置为订阅服务器。

2.4.1 *怂得
单 NLB 的应用群集

注意:其中 A 为应用群集的数据复制主服务器,IP 假设为 192.168.54.233 B 为应用群集的任务调度主服务器,IP 假设为 192.168.54.82 C 为自助服务器;

2.4.2 基础配置
基础配置是指在单 NLB 的两台服务器上均要做的配置。 如果是双 NLB 的*耍蛐 要在双 NLB 的四台服务器上均做此配置。 1. 分别在两台数据库服务器上创建 SAM 所需要使用的数据库(在安装 SAM 的时候,默 认的数据库名称为 SAMDB, 且会自动的创建, 以下假设各 NLB 服务器的上的 SAM 所 使用的数据库名称均为 SAMDB) 。 2. 分别启动四台机器上的 SQL Server Management Studio 并登陆进去; sam3.0 安装目录 用 下的 initdb.sql 脚本分别初始化 2 台机器上的 SAMDB 数据库 (此操作将清空 SAMDB 中的所有数据)

启用 SQLServer2003 的远程/网络事务 安装步骤如下: 1. 单击“开始” ,指向“控制面板” ,然后单击“添加/删除程序” 。 2. 单击“添加/删除 Windows 组件” 。 3. 选择“应用程序服务器” ,然后单击“详细信息” 。 4. 选择“启用网络 DTC 访问” ,然后单击“确定” 。 5. 单击“下一步” 。 6. 单击“完成” 。 7. 停止分布式事务协调器服务(Distributed Transaction Coordinator) ,然后重新予以启动。 可以在“开始\运行”中敲入 cmd 命令并执行: net stop msdtc net start msdtc 如图:

8. 停止参与分布式事务的任何资源管理器服务(如 Microsoft SQL Server 或 Microsoft

Message Queue Server) ,然后重新予以启动。 打开 DTC 1、首先检查两台机器(192.168.54.233 和 192.168.54.82)的 msdtc 是否都已经打开了。如是 不是,那就全都打开。2、按如下步骤做设置: a.点击“开始”按钮,指向管理工具,选择“组件服务” 。 b.展开“组件服务”树,然后展开“我的电脑” 。 c.右键单击“我的电脑” ,然后选择“属性” 。 d.在 MSDTC 选项卡中,点“安全配置”按钮, e.确保选中了下列选项: “网络 DTC 访问”与“XA 事务” ;另外, “DTC 登录帐户”一 定要设置为“NT Authority\NetworkService” 。 f. 事务管理通信器选择“不要求进行验证” (如图)

3、单击“确定” 。这样将会提示您“MS DTC 将会停止并重新启动。所有的依赖服务将

被停止。请按‘是’继续” 。单击“是”继续。 4、单击“确定”关闭“我的电脑”属性窗口。
最后强调,请分别设置 NLB 各个服务器,不要只设置一台。

2.4.3 新建发布
假设 192.168.54.233 这台 NLB 节点上的数据库服务器为发布服务器。 1. 在发布服务器上新建一个“发布”如图:

2.

出现新建发布向导,点击“下一步” 。

3.

选择分发服务器,如下图,点击“下一步” 。

4.

指定快照文件夹,如下图,点击“下一步” 。

5.

发布数据库,如下图,点击“下一步” 。

6.

选择发布类型,如下图,点击“下一步” 。

7.

选择要发布的项目,如下图,点击“下一步” 。

注意: 1、 标记为 的,都不勾选; 2、 请将如下表不勾选:(共 17 张表) ACCT_FLOW_ACCOUNT_AGGR ACCT_FLOW_AGGR ACCT_FLOW_FEE_AGGR ACCT_FLOW_TEMP, ACCT_FLOW_TRAFFIC_AGGR ACCT_FLOW_USER_AGGR AGGR_RECORD BILL_ACCOUNT_AGGR BILL_AGGR BILL_CREATE_RECORD BILL_USER_AGGR CACHE_INFO CHARGE_TEMP、 NTDFLOW_TEMP、 RADIUS_ACCT_TEMP。 JMS_MESSAGES JMS_TRANSACTIONS 特别注意 JMS 开头的两张表如果已经存在则不勾选(如果开始初始化之后就设置,则 JMS 开头的两张表应该是看不到的,则不作处理即可) 8. 点击“设置所有表项目的属性” ,如下图,点击“下一步” 。

9.

进行下图设置,点击“确定” 。

10. 完成上面设置,如下图,点击“下一步” 。

11. 如下图,点击“下一步” 。

12. 如下图,点击“下一步” 。

13. 设置快照代理,如下图,点击“下一步” 。

14. 在“快照代理”后点击“安全设置 E” ,如下图,点击“下一步” 。

15. 进行如下设置,如下图,点击“确定” 。

16. 勾选“使用快照代理的安全设置” ,点击后面的“安全设置” ,如下图,点击“下一步” 。

17. 进行如下图设置,点击“确定” 。

18. 如下图,点击“下一步” 。

19. 注意:发布名称请用英文,不能使用中文;

20. 完成后点击下图的关闭按钮,如下图:

2.4.4 新建订阅
对于单 NLB 的情况,一台做为分发/发布服务器,另一台就是订阅服务器,所以只需要 新建一个订阅即可;对于双 NLB 的情况,一台做为分发/发布服务器,另三台都是订阅服务 器,所以要按下文所示的方法新建 3 个订阅,每个订阅分别连接到另三台的数据库服务器。 1. 新建订阅和发布可以在同一台机器上设置,不用分别到另外的 NLB 节点的数据库服务 器上设置。如下图:

2.

出现新建订阅向导,如下图,点击“下一步” 。

3.

选择发布服务器,如下图,点击“下一步” 。

4.

设置分发代理位置,如下图,点击“下一步” 。

5.

点击“添加 SQL Server 订阅服务器”

6.

输入订阅服务器的名称(本配置说明中的 192.168.54.82 这台机器的数据库服务器是订 阅服务器,它的数据库服务器的名称为 SAM3-SERVER2,如下图所示) 。

7.

选择刚才添加的订阅服务器,如下图,点击“下一步” 。

8.

设置分发代理安全性,如下图:

9.

按下图进行设置,点击“确定” 。

10. 完成设置后,如下图,点击“下一步” 。

11. 同步计划,如下图,点击“下一步” 。

12. 设置可更新订阅,如下图,点击“下一步” 。

13. 设置用于可更新订阅的登录名,如下图,点击“下一步” 。

14. 初始化订阅,如下图,点击“下一步” 。

15. 如下图,点击“下一步” 。

16. 点击“完成” ,结束订阅设置。

17. 如果成功,则可看到类似下图的界面

2.4.5 重要提示:
1、每次重新初始化数据库后,都需要重新进行数据库复制的配置。 2、数据库复制配制完成后,数据库需要一定时间做一些初始化工作,在这期间的数据更新 操作不能立即同步;当数据库复制初始化结束后,在初始化期间在发布服务器上做的更新 操作可以同步到订阅服务器上,初始化期间在订阅服务器上做的更新操作不能同步到发布 服务器上。 3、请保障此期间发布和分发服务器的运行正常,网络链接畅通; 4、配置完成后请参考 3.3.1 确认数据库复制工作正常;并且确认复制同步已经完成同步之 后再运行 SAM,也就是 SAM 运行必须在数据库复制初始化完成之后进行,如果发现复制 状态不正确,请重新配置,或者参考 3.3.2 进行排除。 5、部署实施 NLB 之后,正常情况下 web 管理员必须在 1 号主机上进行管理操作,如果 1 号机宕机则必须在 2 号机上进行管理操作,如果 2 号机也宕机了则必须在 3 号机上进行管 理操作,以次类推,如果主机宕机之后恢复,则需要保证在恢复完全完成之前不作管理操 作,否则可能发生数据不一致导致数据记录冲突的问题。 6、在数据库复制运行过程中,不得任意修改数据库表结构(建表,删表,修改表结构等操 作) ,否则可能导致数据库表或者存储过程丢失。

2.5 应用群集在 RG-SAM 上的相关配置
在配置好 NLB 和数据库复制后,需要在 RG-SAM 上进行相关的配置, RGAC 才能正 确工作。 必须配置一个主服务器,且主服务器只能配置一个。主服务器设置在发布服务器上, 对数据库复制的性能更好。

2.5.1 应用集群配置
配置步骤: 1、在 NLB 各个节点上,双击下图所示的图标,以打开的 RG-SAM 的服务管理器

2、在服务管理器上选择“配置”——“应用集群配置”菜单

3、按下图的示例在主 NLB 节点上配置。

注意:整个 NLB 中仅能设置一台服务器为调度主服务器。所以对于其它的 NLB 节点, 本配置中的“设置本服务器为主服务器”选项不要勾选。 推荐将数据库复制的发布服务器配置为主服务器。

2.5.2 时间同步配置
由于各 NLB 节点上的时间可能并不一致, RG-SAM 系统在许多方面依赖于准确一致 而 的时间。所以,为了让 RG-SAM 更好地工作,建议配置时间同步。 配置步骤: 1、选择“时间同步配置”菜单

2、设置某台 NLB 节点为时间同步服务器

设置完成后点击“保存”按钮。 此时,请退出 SAM 服务管理器(注意:退出服务管理器不会影响到 SAM 的运行) :

然后再次启动服务管理器,这时时间同步服务器就配置好了。注意:以后每次修改时间 同步服务器的配置后,都要*舴窆芾砥饕员闶剐薷纳А 3、 其它 NLB 节点设为时间同步的客户端, 且时间服务器地址填刚才设的那台时间同步服务 器的 IP 地址。

设置完成后,点击“立刻同步” ,以便立刻同步时间,然后再点击“保存” 。 至此,基本的 RGAC 方案已经配置成功。为了更好的运行,请参看下面的注意事项。

第三章 注意事项
3.1 数据库内存限制
为了让 RGAC 环境下的 SAM 服务器长期稳定的运行,请对各个 NLB 节点所使用的数

据库作内存限制。 步骤如下: 1. 在对象资源管理器中,右键单击服务器并选择“属性” 。

2. 3.

单击“内存”节点。 在“服务器内存选项”下,在“最小服务器内存”和“最大服务器内存”中输入所 需的内存量。如下图所示:

注意,服务器物理内存最小必须 2G,上图“最大服务器内存”设置为 1000MB。

3.2 WEB 管理端访问 IP 须知
要求管理员只能使用群集 IP 来访问 web 管理端,不要用私有 IP 访问 web 管理端。

3.3 NTD 配合 SAM 的 NLB 联动方案配置
在 RGAC 环境中,如果网络*酥谢褂杏玫 RG-NTD 设备,则需要针对 RG-NTD 做相 应的配置才能够正确的使用 RG-NTD 的功能。如果没有用到 RG-NTD 设备,则可不用做本 小节的配置。 无论有是单 NLB 还是双 NLB,仅一台 NLB 节点会处理 NTD 发送的流量信息。为了 让每一台 NLB 节点的计算机都能查询到用户的流量信息,必须将处理 NTD 流量的 NLB 节 点 IP 地址告诉每台 NLB 节点计算机。 推荐配置 NLB 主节点为处理 NTD 流量的 NLB 节点。 具体的配置如下: 1、本文档中的 NLB 主节点的 IP 为 192.168.54.233。下面将它配置为处理 NTD 流量的 NLB 节点。 对每一台 SAM 节点进行如下配置:在 SAM 安装目录的 conf 文件夹下找到 conf.ini 文 件,另起一行加入“ACTIVE_IPFIX_SERVER=192.168.54.233” (不含双引号,等号前后不 要留空格) 。这样,所有的 SAM 节点都知道 NLB 中的 IPFIX 接受节点,在通过浏览器查询 用户的网关流量时,可以自动到这台节点上获取流量信息。 2、在 NTD 中配置与群集的连接,进入 NTD 的“系统参数配置”页面,在“系统参数 配置” 表中的 “SAM 服务器 IP” 中输入处理 NTD 流量的 NLB 节点的 IP, 这里 192.168.54.233。 将“支持应用集群”打上勾,并在“应用集群节点 IP ”中添加所有 NLB 的节点 IP。如下图。

3.4 数据库复制配置相关问题解析
3.4.1 如何确认事务复制正常
首 先 按 SQLSERVER 2005 数 据 库 配 置 说 明 配 置 完 成 , 在 任 意 一 台 服 务 器 上 面 打 开 SQLSERVER2005 的 Management Studio,然后如下图所示,右键点击“复制” ,在出来的菜 单中选择“启动复制监视器。

在打开的复制监视器中,可以看到已经配置好的发布服务器,示例中的发布服务器是 SHYFZX-163(发布服务器的数据库实例名,一般是计算机名) 。看到发布服务器中是那个 “横向的绿色箭头“初步可确认配置的数据库复制是成功的,进一步确认见下面的说明。

左键点击上面的发布服务器(例子中是[SAMDB-1668]:qq) ,可以看到如下图所示的详细运 行情况:

点击如下图所示的“警告和代理“标签页,看具体的代理运行情况:

可以看到 SAM 使用的事务复制主要用到了两个代理,分别是: 1) 2) 日志读取器代理 队列读取器代理

正常情况下,这两个代理应该如上图所示的“状态“中的”正在运行“状态。 以上确认之后就可以确认事务复制是正常的了。

3.4.2 事务复制不正常问题排查和解决
在实际的运行环境中, 有可能会出现各种事务复制突然不能正常工作的情况, 由于实际环境 会比较复杂, 所以出现的问题和现象会各不相同, 这里给出如何查找事务复制故障的一般方 法。

基本排查步骤[操作篇]
1、 数据库复*诘阒涞耐缡欠衲芄涣ā 方法:采用不同节点 ping 另外一个节点数据库实例名(一般就是计算机名)的方式进行 验证。如:

2、 数据库复*诘 SQLSERVER2005 各自的 SQLSERVER 代理是否已经启动

方法:打开 SQLSERVER2005 的 Management Studio,然后如下图可确认“SQLSERVER 代理“是否启用,下图所示是已停止的状态,需要启动该代理(右键点击代理,然后选 择启动即可)

3、 日志读取代理以及队列读取代理是否已正常启动运行。 方法: 打开复制监视器, 查看日志读取代理和队列读取代理是否正常启动运行, 如下图:

可以看到两个代理并没有正常运行,于是看原因,方法如下图右键分别点击日志读取代 理和队列读取器代理,查看各自没有运行的原因:

通过查看运行记录可确认没有运行的原因,如果碰到报 SQLSERVER 的错误号的,则可 到微软官方网站查看,地址:http://msdn2.microsoft.com/zh-cn/library/ms152467.aspx 4、 MSTDC 服务是否已正常启动运行。 方法:进入数据库复制各个节点服务器的 cmd 下面,如下图所示打命令以确认 mstdc 服 务开启

各节点服务都开启,则确认配置是否正确:

5、 确认事务复制的配置是否如预期。 方法: 在发布服务器上打开 Management Studio, 如下图在设定的事务复制发布上点右键 选择“属性“。

打开属性的界面中,可一一确认事务复制的配置是否如预期(也就是是否配错了) :

常见问题[理论篇]
当前未向订阅服务器传递数据
如果当前似乎未向订阅服务器传递数据,主要有两大原因: ? ? 由于筛选、某种代理问题或其他复制错误,当前未应用数据。 应用数据后,正在订阅服务器上将其删除。

有多种具体原因可能会导致当前未向订阅服务器传递数据: 1) 2) 3) 4) 5) 6) 7) 表已经过筛选,没有要传递到指定订阅服务器的更改。 代理未运行或由于错误导致失败。 事务性订阅初始化未使用快照,并且创建发布后发布服务器上出现了更改。 对事务发布的存储过程执行的复制会在订阅服务器上产生不同的结果。 事务性项目使用的 INSERT 存储过程中包含一个未满足的条件。 数据被用户、复*疟净蚱渌τ贸绦蛏境 数据被触发器删除,或者触发器包含 ROLLBACK 语句。

发布服务器和订阅服务器上的数据不匹配
在数据库复制正常运行的情况下如果出现以下情况, 则认为发布服务器和订阅服务器上的数 据具有非收敛性(即数据不匹配) : ? ? 订阅服务器与发布服务器上的行数不同,并且发布未经筛选。如果发布已筛选,行 数可能会有所不同。 发布服务器和订阅服务器上的一行或多行数据的内容不同。

发布服务器和订阅服务器上的数据可能由于以下具体原因具有非收敛性: 1) 2) 3) 4) 5) 订阅服务器本应被视为只读,但是其上的数据发生了更改。除非使用合并复制、具有可 更新订阅的事务性复制或对等事务性复制,否则订阅数据库应被视为只读。 在订阅服务器上使用了触发器。 触发器可以修改订阅服务器上的数据, 也可以在触发器 发出 ROLLBACK 时防止更新这些数据。 复制过程将在订阅服务器上执行脚本,但不会在发布服务器上执行脚本。 对事务发布的存储过程执行的复制会在订阅服务器上产生不同的结果。 违反约束或其他问题会导致无法在订阅服务器上插入、更新或删除行。

系统有性能问题
如果在复制监视器中看到性能有问题,则需要确定性能问题原因,并着手解决。复制监视器

在“性能”列中显示这些值。这些值有: 很好,好,一般,差,严重(仅适用于事务性复制) 这些值以下列方式确定: 对于事务性复制,性能质量由滞后时间阈值确定。如果不设置阈值,则不显示任何值。下表 显示了阈值与性能质量值之间的相关性。 例如, 如果将阈值设置为 60 秒而实际滞后时间为 30 秒(即滞后时间为阈值的 50%) ,则性能质量值为“好” 。 很好
0 – 34%


35 – 59%

一般
60 – 84%


85 – 99%

严重
100% +

默认的滞后时间阈值是 30 秒,可在复制监视器中查看。 复制性能受下列因素影响: ? 服务器和网络硬件 ? 数据库设计 ? 分发服务器配置 ? 发布设计和选项 ? 筛选器设计和用法 ? 订阅选项 ? 快照选项 ? 代理参数 ? 维护 如果遇到性能问题,应该考虑如下方面: 1) 如果使用的是事务复制并且在对已发布表执行批处理操作时遇到长滞后时间: 需要考虑 复制存储过程的执行以在订阅服务器上执行批处理操作。 服务器和网络 ? 设置分配给 Microsoft SQL Server 数据库引擎的最小和最大内存量。 ? 确保正确分配数据库数据文件和日志文件。 使用单独的磁盘驱动器存放复制过程中 所涉及的所有数据库的事务日志。 ? 考虑增加复制所用的服务器的内存,尤其是分发服务器的内存。 ? 使用多处理器计算机。 ? 使用快速网络。如果网络速度较慢,请指定适当的网络设置和代理参数。有关详细 信息,请参阅慢速网络导致问题。 ? 在专用服务器上配置分发服务器。 ? 为分发数据库设置适当的大小。 数据库设计

2)

3)

? ? ? ? ? 4)

遵循最佳的数据库设计方法。 考虑设置 READ_COMMITTED_SNAPSHOT 数据库选项。 慎用触发器中的应用程序逻辑。 限制使用大型对象 (LOB) 数据类型。 在应用程序设计中,最大限度地减小事务大小。

发布设计和选项 ? 仅发布所需数据。 ? 通过发布设计和应用程序行为最大限度地减少冲突。 ? 灵活地使用行筛选器。 ? 降低复制代理的详细级别,在初始测试、监视或调试期间除外。 ? 在对已发布的表进行批更新时,复制存储过程执行。 ? 将项目分布在多个发布上。 订阅选项 ? 存在大量订阅服务器时,使用请求订阅。 ? 如果订阅服务器滞后过多,请考虑重新初始化订阅。 ? 连续运行代理,而不是按计划频繁运行代理。 ? 如果在同一台发布服务器上有多个发布,使用独立代理,而不要使用共享代理(这 是 SQL Server 2005 的默认设置) 。 快照选项 ? 仅在必要时和非高峰时段运行快照代理。 ? 为发布使用单个快照文件夹。 ? 将快照文件夹放在分发服务器上未用于存储数据库或日志文件的本地驱动器中。 ? 在订阅服务器上创建订阅数据库时,考虑指定简单恢复模式或大容量日志恢复模 式。 ? 在低带宽网络的可移动媒体上使用备用快照文件夹和压缩的快照。 ? 使用快照代理、合并代理和分发代理的 -MaxBCPThreads 参数。使用分发代理和 合并代理的 -UseInprocLoader 参数。 代理参数 ? 使用日志读取器代理的 -MaxCmdsInTran 参数。 ? 使用分发代理的 -SubcriptionStreams 参数。 ? 增大日志读取器代理的 -ReadBatchSize 参数的值。 ? 增大分发代理的 -CommitBatchSize 参数的值。

5)

6)

7)

慢速网络导致问题
复制以快照和增量更改形式通过网络连接分发数据。 任何影响网络性能的问题 (如滞后时间、 吞吐量和可靠性)都会影响复制。 ? ? 如果网络连接本身有很高的延迟,应考虑对网络连接进行优化。 对于事务性复制,可以为分发代理参数 -CommitBatchSize 设置较低值。较低值可以减

少吞吐量,但可能在不可靠网络上导致较少的失败,如果导致失败,将回滚并重新应用 较少量事务。此参数可以在代理配置文件中或代理命令行上指定。

安全问题阻止了复制数据
问题 解决问题办法

复制代理使用的帐户的密码已更 为所有使用此帐户的代理更改密码。有关详细信息, 改。 请参 阅如何如何查 看和修改 复制安全设置 (SQL Server Management Studio)和 How to: View and Modify Replication Security Settings (Replication Transact-SQL Programming)。 复制代理使用的帐户不再有效, 用相应的对话框或存储过程更改帐户。有关详细信 必 须更改。 息,请参阅如何如何查看和修改复制安全设置 (SQL Server Management Studio)和 How to: View and Modify Replication Security Settings (Replication Transact-SQL Programming)。 复制代理权限不足, 无法连接到拓 请确保代理使用有效的登录名并且具有足够的权限。 扑中的计算机或无法在数据库中 有关详细信息,请参阅复制代理安全性模式。 执行操作。 快照代理无法写入快照文件夹。 请确保为代理授予正确的目录和共享权限。有关详细 分 发代理或合并代理无法从快照文 信息,请参阅保护快照文件夹的安全。 件夹中读取。 由于权限问题或者分发代理或合 并代理无法找到发布的 FTP 文 件夹, 快照无法使用文件传输协议 (FTP) 传输。 请确保 FTP 服务器配置正确,并且正确地指定了到 FTP 文件夹的路径。 有关详细信息, 请参阅如何通过 FTP 传 递 快 照 (SQL Server Management Studio)和 How to: Deliver a Snapshot Through FTP (Replication Transact-SQL Programming)。

连接到 Oracle 发布服务器时遇 有很多方面需要检查,包括确保复制使用的帐户连接 到权限问题。 到 Oracle 发布服务器,并且在分发服务器上运行 Microsoft SQL Server 的帐户具有足够的权限。有 关详细信息, 请参阅对 Oracle 发布服务器进行故障 排除。 引 发 以 下 错 误 消 息 : 用 户 请确保 distributor_admin 帐户具有有效的强密 “distributor_admin”登录失败。 码 。 复 制 过 程 将 创 建 远 程 服 务 器 repl_distributor,该服务器允许在分发服务器和 发 布 服 务 器 之 间 进 行 通 信 。 登 录 名 distributor_admin 与此远程服务器关联,并且 必须具有有效的密码。有关详细信息,请参阅保护分 发服务器的安全。 引发以下错误消息:“%s”必须是 请 确 保 为 每 个 复 制 代 理 指 定 有 效 的 Microsoft

有效的 Windows 登录名,且格 Windows 帐 户 。 有 关 详 细 信 息 , 请 参 阅 式为: '计算机\登录名' 或 '域\登 MSSQL_ENG021797。 录名'。请参阅“%s”的文档。 引发以下错误消息: 在继续操作之 请确保在创建事务性发布之前,首先创建以下代理: 前,必须通过“%s”添加“%s”代 日志读取器代理(对于所有事务性发布)和队列读取 理作业。请参阅“%s”的文档。 器代理(对于允许排队更新订阅的事务性发布)有关 详细信息,请参阅 MSSQL_ENG021798。 引发以下错误消息: 在复制工作目 请确保已为快照文件夹指定了正确的路径。如果不使 录下创建子目录失败。(%ls) 用快照初始化订阅,请确保在发布服务器上运行 SQL Server 服务的帐户具有足够的权限。 有关详细 信息,请参阅 MSSQL_ENG021330。 引发以下错误消息: 无法将用户脚 请确保已为快照文件夹指定了正确的路径。如果不使 本文件复制到分发服务器。 (%ls) 用快照初始化订阅,请确保在发布服务器上运行 SQL Server 服务的帐户具有足够的权限。 有关详细 信息,请参阅 MSSQL_ENG021331。 引发以下错误消息: 解密过程中出 这是一种常规的 SQL Server 错误,它会在使用 错。 SQL Server Management Studio 之外的工具 (如 服务管理单元)更改运行 SQL Server 的帐户时出 现。应使用下列方法之一还原为原始帐户,然后更改 为 Management Studio 中的新帐户:
?

使用 RESTORE SERVICE MASTER KEY 命令从备份中还原与原始帐户相关联的服务主 密钥。有关详细信息,请参阅 RESTORE SERVICE MASTER KEY (Transact-SQL)。

?

使用 ALTER SERVICE MASTER KEY 命 令重新生成与原始帐户相关联的服务主密钥。 有 关详细信息,请参阅 ALTER SERVICE MASTER KEY (Transact-SQL)。

?

使用服务管理单元或其他工具将帐户更改 回原始帐户。

运行大量代理导致内存问题
运行大量复制代理可能会导致没有足够的内存来完成操作。 解决办法:

在有些情况下,有可能需要在一台计算机上同时运行大量复制代理。例如,为大量发布生成 快照时,或者在分发服务器上同步大量推送订阅时。在这些情况下,非交互式桌面堆 (Microsoft Windows 中的一种内存结构)可能会内存不足。在这种情况下,首先增大服务 器的物理内存,其次在运行代理的计算机上增加非交互式桌面堆的大小。具体请查看: http://support.microsoft.com/kb/824422

3.4.3 如何删除事务复制
在实际环境或者实验环境中可能存在多个事务复制或者定阅, 有时候需要把多余的定阅或者 整个复制删除,那么需要遵循一定的步骤,下面进行了简单描述: 首先在定阅服务器上,如下图右键点击具体要删除的定阅选择“查看同步状态“。

出来的界面如下图,点击图中“停止” 。

确认停止成功:

接着在发布服务器上,对发布进行如下操作,主要是停止日志读取代理和队列读取代理:

分别如定阅服务器的停止方法把相应代理停止。 接着在定阅服务器上删除定阅,这步一定是先于发布服务器做:

最后在发布服务器上删除发布:

3.4.4 附录

日志读取代理配置参数

参数名
HistoryVerboseLevel


0 1(default)

说明
Always update a previous history message of the same status (startup, progress, success, and so on). If no previous record with the same status exists, insert a new record.

2

Insert new history records unless the record is for such things as idle messages or long-running job messages, in which case update the previous records. login_time_out_seconds : Is the number of seconds before the login times out. The default is 15 seconds. scan_threshold :Internal use only. polling_interval :Is how often, in seconds, the log is queried for replicated transactions. The default is 5 seconds query_time_out_seconds : Is the number of seconds before the query times out. The default is 1800 seconds. number_of_transactions : Is the maximum number of transactions read out of the transaction log of the publishing database per processing cycle, with a default of 500. The agent will continue to read transactions in batches until all transactions are read from the log. This parameter is not supported for Oracle Publishers.

LoginTimeOut

15(default)

LogScanThreshold PollingInterval

500000(default) 5(default)

QueryTimeOut

1800(default)

ReadBatchSize

500(default)

SQL 语法: logread [-?] -Publisher server_name[\instance_name] -PublisherDB publisher_database [-Continuous] [-DefinitionFile def_path_and_file_name] [-Distributor server_name[\instance_name]] [-DistributorLogin distributor_login] [-DistributorPassword distributor_password] [-DistributorSecurityMode [0|1]] [-EncryptionLevel [0|1|2]] [-HistoryVerboseLevel [0|1|2]] [-KeepAliveMessageInterval keep_alive_message_interval_seconds]

[-LoginTimeOut login_time_out_seconds] [-LogScanThreshold scan_threshold] [-MaxCmdsInTran number_of_commands] [-MessageInterval message_interval] [-Output output_path_and_file_name] [-OutputVerboseLevel [0|1|2|3|4]] [-PacketSize packet_size] [-PollingInterval polling_interval] [-ProfileName profile_name] [-PublisherFailoverPartner server_name[\instance_name] ] [-PublisherSecurityMode [0|1]] [-PublisherLogin publisher_login] [-PublisherPassword publisher_password] [-QueryTimeOut query_time_out_seconds] [-ReadBatchSize number_of_transactions] [-ReadBatchThreshold read_batch_threshold] [-RecoverFromDataErrors] http://msdn2.microsoft.com/zh-cn/library/ms146878.aspx

快照代理配置参数

参数名
BcpBatchSize


100000(default)

说明
bcp_ batch_ size :Is the number of rows to send in a bulk copy operation. When performing a bcp in operation, the batch size is the number of rows to send to the server as one transaction, and also the number of rows that must be sent before the Distribution Agent logs a bcp progress message. When performing a bcp out operation, a fixed batch size of 1000 is used. A value logging of 0 indicates no message

HistoryVerboseLevel

0

Progress messages are written either to the console or to an output file. History records are not logged in the distribution database.

1

Always update a previous history message of the same status (startup, progress, success, and so on). If no

previous record with the same status exists, insert a new record. 2(default) Insert new history records unless the record is for such things as idle messages or long-running job messages, in which case update the previous records. 3(default) Always insert new records, unless it is for idle messages. LoginTimeOut 15(default) login_time_out_seconds : Is the

number of seconds before the login times out. The default is 15 seconds. QueryTimeOut 1800(default) query_time_out_seconds : Is the

number of seconds before the query times out. The default is 1800 seconds.

SQL 语法: snapshot [ -?] -Publisher server_name[\instance_name] -Publication publication_name [-70Subscribers] [-BcpBatchSize bcp_batch_size] [-DefinitionFile def_path_and_file_name] [-Distributor server_name[\instance_name]] [-DistributorDeadlockPriority [-1|0|1] ] [-DistributorLogin distributor_login] [-DistributorPassword distributor_password] [-DistributorSecurityMode [0|1] ] [-DynamicFilterHostName dynamic_filter_host_name] [-DynamicFilterLogin dynamic_filter_login] [-DynamicSnapshotLocation dynamic_snapshot_location] [-EncryptionLevel [0|1|2]] [-FieldDelimiter field_delimiter] [-HistoryVerboseLevel [0|1|2|3] ] [-HRBcpBlocks number_of_blocks ] [-HRBcpBlockSize block_size ] [-HRBcpDynamicBlocks ] [-KeepAliveMessageInterval keep_alive_interval] [-LoginTimeOut login_time_out_seconds] [-MaxBcpThreads number_of_threads ] [-MaxNetworkOptimization [0|1]] [-Output output_path_and_file_name] [-OutputVerboseLevel [0|1|2] ]

[-PacketSize packet_size] [-ProfileName profile_name] [-PublisherDB publisher_database] [-PublisherDeadlockPriority [-1|0|1] ] [-PublisherFailoverPartner server_name[\instance_name] ] [-PublisherLogin publisher_login] [-PublisherPassword publisher_password] [-PublisherSecurityMode [0|1] ] [-QueryTimeOut query_time_out_seconds] [-ReplicationType [1|2] ] [-RowDelimiter row_delimiter] [-StartQueueTimeout start_queue_timeout_seconds] [-UsePerArticleContentsView use_per_article_contents_view] http://msdn2.microsoft.com/zh-cn/library/ms146939.aspx

队列代理配置参数
参数名
HistoryVerboseLevel


0

说明
No history logging (not recommended).

1(default)

Always update a previous history message of the same status (startup, progress, success, and so on). If no previous record with the same status exists, insert a new record.

2

Insert new history records, including idle messages or long-running job messages.

3

Insert new history records that include additional details that may be useful for troubleshooting. polling_interval :Is relevant only for updating subscriptions that use SQL Server based queues. Specifies how often, in seconds, the SQL Server queue is polled for pending queued transactions. The value can be between 0 and 240 seconds. The default is 5 seconds. login_time_out_seconds : Is the

PollingInterval

5(default)

LoginTimeOut

15(default)

number of seconds before the login

times out. The default is 15 seconds. QueryTimeOut 1800(default) query_time_out_seconds : Is the

number of seconds before the query times out. The default is 1800 seconds.

SQL 语法: qrdrsvc [-?] [-Continuous] [-DefinitionFile definition_file] [-Distributor server_name[\instance_name]] [-DistributionDB distribution_database] [-DistributorLogin distributor_login] [-DistributorPassword distributor_password] [-DistributorSecurityMode [0|1]] [-EncryptionLevel [0|1|2]] [-HistoryVerboseLevel [0|1|2|3]] [-LoginTimeOut login_time_out_seconds] [-Output output_path_and_file_name] [-OutputVerboseLevel [0|1|2]] [-PollingInterval polling_interval] [-PublisherFailoverPartner server_name[\instance_name] ] [-ProfileName agent_profile_name] [-QueryTimeOut query_time_out_seconds] [-ResolverState [1|2|3]] http://msdn2.microsoft.com/zh-cn/library/ms147378.aspx


相关推荐

最新更新

猜你喜欢