Biztalk应用都是企业级应用,对可用性要求比较高,所以,biztalk的高可用部署是十分重要和必要的。本文提供了biztalk 2009在Windows 2008 R2环境中的高可用部署详细指南,部署环境为biztalk 2009企业版,Windows 2008 R2企业版和sql server 2008企业版,biztalk和sql server都为双击cluster部署。本文分为两部分,相对独立,分别针对biztalk的AP(active-passive)主从模式和AA(active-active)主主模式,AP模式,群集的所有biztalk主机同时只能运行在一台biztalk服务器上,AA模式,群集的各个biztalk主机可以运行在运行同时在不同的biztalk服务器上。
这是第二部分:AA模式
3.1. 安装Microsoft iSCSI Initiator
4、 安装Application Server Role(MSDTC)
6、 验证Windows Server 2008 Cluster
7、 建立Windows Server 2008 Cluster
五、 在sql2008 cluster上安装ESSO主密钥cluster
7、 验证Windows Server 2008 Cluster
13.1. 新建两个empty service or application
13.2. 配置第一个biztalk host cluster
13.3. 配置第二个biztalk host cluster
安装第一台vmware虚机,2003 R2系统作为域控,机器名2003DC。
服务器网卡要设置为静态IP: 192.168.1.106。
DNS设置自身:127.0.0.1
在服务器管理中添加AD role,设置新kent.local。
打开服务器管理向导,点击域控制器,下一步。
选择新域的控制器(第一台与控制器)。
键入DNS名,如果与控制器只是提供内网服务建议后缀为local,避免与外网DNS服务器冲突。
选择目录。
如果是第一台域控制器,建议安装DNS,避免以后出现莫名其妙的问题。
安装完成重启后就成域控制器了。
后面有两个sql服务器和两台biztalk服务器要加入到这个域,先建立一个域用户bizadmin(以后这个bizadmin用户作为biztalk的服务账户),也用这个账户建立cluster,建立cluster的账户需要在域控服务器上具有建立服务器对象的权限,所以把这个账户加入到域管理组中。
这步虚拟一个iSCSI的网络共享存储的硬件设备,本应由单独一台虚拟机安装,但是内存有限,不能运行太多的虚机,此处放在2003DC域控虚拟机上安装。
在windows 2003上安装虚拟iSCSI存储服务需要先安装Microsoft iSCSI Initiator(文件Initiator-2.08-build3825-x86fre.exe),可以到微软下载网站下载。
使用starwind 5.30,运行界面:
连接starwind服务器后(需要登录,用户名root,密码starwind),连接后点击右面的configuration标签:
虚拟iSCSI存储是为cluster的服务器设置的共享存储,这里需要为SQL cluster和biztalk cluster分配共享存储,规划磁盘和容量如下:
SQL cluster使用的共享磁盘:
SQLQuorum512:仲裁磁盘,分配512M
SQLMSDTC540:MSDTC使用磁盘,分配540M
SQLData:数据库文件存储磁盘,分配2G
Biztalk cluster使用的共享磁盘:
BizQuorum512:仲裁磁盘,分配512M
BizMSDTC540:MSDTC使用磁盘,分配540M
在Targets上点击右键,选Add Target新建一个磁盘:
下一步,选择存储类型,选择硬盘:
选择使用虚拟硬盘:
选择镜像文件:
选择建立新虚拟磁盘:
指定虚拟磁盘镜像文件的路径和大小:
指定相关选项,注意第三个选项“Allow multiple concurrent iSCSI connections(clustering)”一定要选上:
后面的基本都是下一步的执行下去,仲裁盘就建好了。
另外几个虚拟磁盘按照上面的步骤一一建立:
1
|
|
2003DC
|
192.168.1.106
|
域控
|
2
|
biztalk
|
心跳线
|
192.168.2.102 |
|
3
|
Biztalk-1
|
192.168.1.102
|
biztalk节点1
|
|
4
|
Biztalk-2
|
192.168.1.103
|
biztalk节点2
|
|
5
|
BizWinCluster
|
192.168.1.50
|
Windows cluster
|
|
6
|
BizWinClusteDtc
|
192.168.1.51
|
MSDTC cluster
|
|
7
|
BizCluster1
|
192.168.1.52
|
biztalk cluster
|
|
8
|
biztalk host
|
|
biztalk 主机
|
|
9
|
BizCluster1
|
192.168.1.53
|
biztalk cluster
|
|
10
|
biztalk host
|
|
biztalk 主机
|
|
11
|
sql server
|
心跳线
|
192.168.2.104 |
|
12
|
SQL2008-1
|
192.168.1.104
|
SQL Server节点1
|
|
13
|
SQL2008-2
|
192.168.1.105
|
SQL Server节点2
|
|
14
|
SQL2K8Cluster
|
192.168.1.42
|
SQL server cluster
|
|
15
|
SQLWinClusteDtc
|
192.168.1.41
|
MSDTC cluster
|
|
16
|
SQLWinCluster
|
192.168.1.40
|
Windows cluster
|
|
17
|
SQLESSOCluster
|
192.168.1.43
|
ESSO cluster
|
第一台sql的虚机安装win2008 R2企业版,机器名SQL2008-1,设置静态IP,跟域控同一网段,DNS指向域控的IP。
操作系统安装好后,修改机器名,加入到kent.local域。
把域用户bizadmin都加入到本机的管理组,以后的操作以域用户bizadmin登陆。
同样第二台sql虚拟机叫SQL2008-2,分配IP:192.168.1.105.
每个sql cluster的node都必须有两个网卡,一个是对外的共有网卡,一个是连接另一个node的心跳线的私有网卡,这个私有网卡设置为跟共有网卡不同网段的地址,只有两个私有网卡之间能连接即可。
两台sql机器的私有IP分别设置为:192.168.2.104和192.168.2.105
在第一台sql server上运行iSCSI Initiator:
在iSCSI Initiator 属性页, 点击Discovery 标签,然后点击Discover Portal:
指定starwind安装的机器,就会连接上这个共享磁盘服务器。
回到iSCSI Initiator 属性页,点击Targets标签:
这里会列出iStorageServer服务器上已经建立的共享磁盘,选择sql cluster使用的三个磁盘,点击Connect按钮:
选择“Add this connection to the list of Favorite Targets”,这样服务器每次启动都会自动连接共享磁盘。
每个磁盘都连接后,在磁盘的Status栏都会显示Connected状态。
一旦共享磁盘被挂接后,可以在磁盘管理中初始化这些磁盘,先将此磁盘联机:
然后初始化此磁盘:
最后要给磁盘分配盘符,在磁盘上点击右键,选New Simple Volume:
所有挂接到cluster的磁盘,在各个node的盘符必须保持一致,所以这里把这三个共享磁盘分配为X、Y、Z盘符,这样不会跟各个node的本地磁盘冲突:
跟第一台sql server一样,先使用iSCSI Initiator连接到sql cluster将要使用的三个磁盘:SQLQuorum512,SQLMSDTC540,SQLData
在计算机管理中,把这三个盘连线,并分别分配跟sql server一样的盘符。
这时,在两台sql server里都能同时连接到这三个磁盘,在两台服务器的资源管理器中能同时看到X,Y,Z磁盘。
在两台sql虚拟机上分别执行。
在Role Management中安装和配置Application server,在Role Services中要选上Incoming Remote Transactions 和 Outgoing Remote Transactions,MSDTC要使用它们:
在两台sql虚拟机上分别执行。
在Server Manager选择 Features,点击Add Features:
在两台sql虚拟机中的其中一台验证Cluster,在Failover Cluster Management,点击Validate a Configuration连接:
在Select Servers or a Cluster对话框,加入你需要加入为cluster的node:
在Testing Options页面,选择Run all tests:
点击下一步,开始进行验证,要求所有的测试都通过,如果哪个测试没有通过,一定要找出原因,修改好后重新验证,直到所有验证通过,才能进行下一步。
在Failover Cluster Management,点击Create a Cluster。
注意:
在加入到node的机器的公用网卡的NetBIOS要设置为enabled,私有网卡的NetBIOS设置为disabled。所有网卡的IPv6都关闭。
选择要加入到cluster的node:
或者在测试完成后:
点击“Create the cluster now using the validated nodes…”开始配置cluster
在Access Point for Administering the Cluster对话框,输入用于管理Cluster的主机名和IP地址。
这里设置主机名:SQLWinCluster
配置向导开始配置群集,正常的话,群集配置成功:
Cluster安装成功后,可以测试一下群集是否可以工作了。
可以到域控服务器上查看AD中,多了个叫SQLWinCluster的机器,这是windows cluster对外的机器名。
在DNS服务器上,多了一条A记录,可以看到SQLWinCluster的IP为192.168.1.40。
Ping SQLWinCluster或者192.168.1.40可以ping通。
在拥有用户共享存储的节点机上,打开Failover Cluster Management,右击Server and Applications,选择Configure a Service or Application。
开始运行高可用向导:
选择Distributed Transaction Coordinator (DTC),下一步:
这里设置群集后的MSDTC的机器名和IP。下一步:
这里选择MSDTC使用的存储区,这里分配前面设置的SQLMSDTC540的那个共享磁盘。下一步:
MSDTC的群集配置成功。同样会在AD和DNS中增加机器和A记录。
配置 MSDTC为 Incoming Caller Authentication Required
在cluster管理器中,右键右击MSDTC.,选择管理MSDTC
在 Clustered DTCs, 右击 clustered DTC resource, 点击Properties:
点击Security标签:
点击允许Network DTC Access,为了对biztalk提供事务支持,网络DTC访问必须允许
在Transaction Manager Communication下选择:
· Allow Inbound
· Allow Outbound
· Incoming Caller Authentication Required
MSDTC的事务模式必须将Transaction Manager Communication设置为No Authentication Required or Incoming Caller Authentication Required,Required or Incoming Caller Authentication Required是建议的设置,因为它更安全。
将MSDTC群集切换到第一台sql server
安装SQL2008 cluster必须是连同sql 2008 SP1一起安装的,所以要制作SP1跟原始sql 2008一起安装的集成版本。
如何制作SQL2008 with SP1,参见:http://blogs.msdn.com/petersad/archive/2009/02/25/sql-server-2008-creating-a-merged-slisptream-drop.aspx
注意:
在vmware中一定要把vmware tools删除后安装sql server cluster,否则在配置实例阶段时会报如下错误:
The given network name is unusable because there was a failure trying to determine if the network name is valid for use by the clustered SQL instance due to the following error: 'The network address is invalid.'
安装好sql server cluster后再把vmware tools安装回去。
运行setup,选择New SQL Server failover cluster installation:
继续:
下一步,选择功能:
下面是实例配置:
下面选择cluster可用的资源,这里只有一个盘可用,就是前面设置的data的那个盘:
Cluster Network Configuration配置中,配置sql cluster对外的网络地址,去掉DHCP选项,设置静态IP地址:
下一步:
在Server Configuration,选择启动服务的账户,这里都是用bizadmin这个账户:
下一步:
下一步:
开始安装,安装完成:
安装完成后,就拥有了一个sql的cluster,可以在群集管理器的”服务和应用”中看到这个群集:
所有的已经cluster的资源保留在第一台sql server服务器上,在第二个sql server服务器开始安装sql server:
下一步,指定要加入群集的sql server instance:
在第一台sql server节点机上,运行biztalk安装,组件只选Enterprise Single Sign-On Administration Module 和 Enterprise Single Sign-On Master Secret Server,别的一概不选。
以管理员身份运行命令窗口,导航至C:\Program Files\Common Files\Enterprise Single Sign-On,运行以下命令把SSO server指向本机:
Ssomanage –serverall sql2008-1
同样在第二台sql server节点机上,运行biztalk安装,组件只选Enterprise Single Sign-On Administration Module 和 Enterprise Single Sign-On Master Secret Server,别的一概不选。
以管理员身份运行命令窗口,导航至C:\Program Files\Common Files\Enterprise Single Sign-On,运行以下命令把SSO server指向本机:
Ssomanage –serverall sql2008-2
在kent域中建立SSO Administrators 和 SSO Affiliate Administrators 全局组(一定要是全局组,否则会出现这样的错误Error: Failed to add the user 'DOMAIN1\INSTALL_USER to the domain group 'DOMAIN2\SSO_ADMINISTRATORS_GROUP'. To add members to domain groups you must have sufficient permissions in the domain (SSO)),将bizadmin用户加入到这两个组。
在第一台biztalk server上运行biztalk配置程序。
选择定制配置。
数据库服务器指向群集的SQL server的服务器名SQL2K8CLUSTER。默认账户是kent\bizadmin。
在配置SSO中,选新建SSO,SSO Administrator(s) role和SSO Affiliate Administrator(s) role分别为前面建好的SSO Administrators 和 SSO Affiliate Administrators的全局域组。
配置成功后,打开SSO Administration,查看SSO的配置,可以看到主密钥服务器是sql2008-1:
在第二台biztalk服务器上,上运行biztalk配置程序。
选择定制配置。
选择加入到已有SSO系统:
配置成功后,打开SSO Administration,查看SSO的配置,可以看到主密钥服务器也是sql2008-1 :
在第一台sql server服务器上,重启SSO服务:
停止和启动SSO服务,以管理员身份打开命令窗口,执行如下命令:
net stop entsso
和
net start entsso
新建一个xml文件,内容如下:
<sso>
<globalInfo>
<secretServer> SQLESSOCluster </secretServer>
</globalInfo>
</sso>
其中SQLESSOCluster为要包含ESSO cluster资源的cluster组的名字。
在命令行方式下,切换到如下目录:
<drive>:\Program Files\Common Files\Enterprise Single Sign-On.
执行如下命令:
ssomanage -updatedb XMLFile
其中XMLFile为上面新建的xml名。
这时看SSO数据库中的主密钥服务器名被修改为SQLESSOCluster:
在第一台sql server上,打开cluster管理器,config a services and applications,然后选择“Generic Service”,在服务列表中选择Enterprise Single Sign-On Service:
设置客户端访问点:
ESSO cluster安装完成。
将SQLESSOCluster群集服务迁移到第二台服务器。
在已群集的Enterprise Single Sign-On service上点击右键,选择“Take this service or application offline”,最后在Enterprise Single Sign-On service上点击右键,选择“Bring this service or application online”,这个动作一定要做,否则后面恢复主密钥可能会不成功。
在第一台sql server服务器的C:\Program Files\Common Files\Enterprise Single Sign-On目录拷贝主密钥备份文件到第二台sql server服务器的C:\Program Files\Common Files\Enterprise Single Sign-On目录下。
在第二台sql server服务器中在C:\Program Files\Common Files\Enterprise Single Sign-On打开命令行窗口,执行如下命令:
ssoconfig -restoresecret RestoreFile
其中RestoreFile是前面刚拷贝过来的主密钥备份文件。
恢复主密钥时会提示密码,这个密码就是biztalk配置ESSO时设置的备份ESSO主密钥的密码。
主密钥保存在注册表的HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ENTSSO\SSOSS
操作系统win2008 R2企业版,命名Biztalk-1和Biztalk-2,IP:192.168.1.102 ;192.168.1.103。分别加入域,以后都已bizadmin域用户登录。
两台机器分别增加心跳线的网卡,IP分别为192.168.2.102 ;192.168.2.103
参考前面“节点机连接共享磁盘”两台服务器分别连接为biztalk准备的二个磁盘,分别设置盘符为:
Z:BizQuorum512:仲裁磁盘,分配512M
Y:BizMSDTC540:MSDTC使用磁盘,分配540M
两台服务器都安装MSDTC和群集管理器
参考“安装Application Server Role(MSDTC)”和“添加Failover Cluster Feature”
在两个biztalk node分别安装File Services Role。
在server manager中添加Role
不要选择任何的磁盘:
如果这两个biztalk服务器上需要使用IIS,则在Application Role中要增加IIS support:
同前面的验证过程。
在Access Point for Administering the Cluster对话框,输入用于管理Cluster的主机名和IP地址。
这里设置主机名:BizWinCluster
设置IP为:192.168.1.50
参考“新建MSDTC Cluster”:
配置 MSDTC为 Incoming Caller Authentication Required
参考“配置MSDTC Cluster”
在两台biztalk 服务器上分别安装biztalk 2009,安装时保证Enterprise Single Sign-On Administration Module 和 Enterprise Single Sign-On Master Secret Server被选择,安装完成后不要配置biztalk。
在第一台biztalk server上运行biztalk配置程序。
选择定制配置,选择加入已有的SSO系统,就是加入在sql cluster中建立的ESSO cluster:
应用配置,别的功能此时先不配置。
配置成功后,打开SSO Administration,查看SSO的配置,可以看到主密钥服务器是SQLESSOCluster:
在第二台biztalk服务器上,建立SSO cluster,过程跟第一台biztalk服务器完全一样。
将MSDTC服务迁移到第一个biztalk server。
启动biztalk配置。
配置Group:
在biztalk配置中,ESSO前面已经配置过。
选择新建一个Biztalk Group
在Data stores中:
三个数据库的Server Name指向群集的sql server名SQL2K8CLUSTER。
在Biztalk Administrator Roles中,需要指定具有Biztalk Administrator和Biztalk Operators权限的域组。
先在域控中新加两个全局组:
Biztalk Server Administrators
Biztalk Server Operators
把bizadmin域用户加入到这两个组。
配置Biztalk Runtime:
Windows Service中:
两个账户都设置为bizadmin域用户。
Windows Groups中:
先在域控中新加两个全局组:
Biztalk Application Users
Biztalk Isolated Host Users
把bizadmin域用户加入到这两个组。
将MSDTC服务迁移到第二个biztalk server。
启动biztalk配置。
配置Group:
选择加入一个已存在的Biztalk Group。
Data stores中填入群集的sql server名SQL2K8CLUSTER。
配置Biztalk Runtime:
配置同第一台的配置。
为了测试biztalk active-active群集(就是一个biztalk host可以运行在节点机1上,另一个biztalk host可以同时运行在节点机2上),需要在biztalk中再新建一个Host,使biztalk中有两个可用的host,以便测试biztalk cluster的AA模式。
l 新建biztalk host
在任意一台节点机上新建一个名为TestHost的host:
l 在两个节点机上分别新建相应的host instance
两个host instance都建好后,在biztalk的host instance中可以看到每个节点机都有两个In-Process的host instance,分别是BizTalkServerApplication和TestHost:
新建两个empty service or application,用于容纳两个不同的biztalk host,如果有更多的biztalk host需要cluster,则可以建立多个empty service or application。
在cluster manager中,右键点击services and applications,选择more actions选择create empty service or application,把新建的empty service or application改名为BizCluster1。
给BizCluster1增加客户访问点:
在BizCluster1上点击右键,Add a resource,选择client access point:
分配一个IP:
再以同样过程建一个名为BizCluster2的empty service or application。
在任意个节点机上,在biztalk管理控制台,展开Platform Settings,在Hosts下会看到所有的host。
选择你要cluster的BizTalkServerApplication Host,点击右键选择BizCluster1(这个Host你要在两个节点机上都建有instance)。
在Cluster resource group的下拉列表中选择前面为biztalk群集准备的群集组BizCluster1
在群集管理界面在BizCluster1下就能看到刚才cluster的BizTalkServerApplication主机:
右键点击BTSSvc$BizTalkServerApplication,查看属性,看Policies标签:
注意两个参数:
Period for restarts(mm:ss),这个参数表示在这段时间内对这个群集的资源如果失败了要进行重新启动的尝试,尝试的次数由参数Maximum restarts in the specified period指定。默认Period for restarts(mm:ss)参数为15:00,Maximum restarts in the specified period参数为1,表示一旦这个群集的资源失败后,在15分钟内就重试一次,重试一次后还是失败就把这个资源设为失败状态,或者根据后续的设置将资源转移到另一个节点。
考虑到biztalk使用的sql数据库也是群集的,一旦sql cluster手工或者自动进行迁移,迁移过程一般1分钟左右甚至更长,这段时间内,biztalk服务和biztalk节点上的SSO服务将会联系不到biztalk的数据库和SSO的数据库,biztalk服务将会失败,往往一次重试数据库还未迁移完成,所以需要把Maximum restarts in the specified period参数设置大一些,重试次数多一些,以保证数据库迁移完成后,biztalk服务cluster能联系上数据库,这里设为20
跟前面一样,在任意个节点机上,在biztalk管理控制台,展开Platform Settings,在Hosts下会看到所有的host。
选择你要cluster的TestHost主机,点击右键选择BizCluster2(这个Host你要在两个节点机上都建有instance)。
在Cluster resource group的下拉列表中选择前面为biztalk群集准备的群集组BizCluster2。
BizCluster2的Maximum restarts in the specified period参数也设为20
在群集管理器中,可以看到包含BizTalkServerApplication host的BizCluster1群集运行在节点机Biztalk-2上,包含TestHost host的BizCluster2群集运行在节点机Biztalk-1上: