appfabric cache里,有主要主机(leadhost)这个概念。
在一些情况下,主要主机挂了,整个cache集群就挂了。
一、使用xml配置。
如果有2台leadhost,挂一个,全挂
如果有3台leadhost,可以挂一个,挂两个全挂。
http://msdn.microsoft.com/zh-cn/library/ee790895.aspx
“例如,设想下图中显示的六服务器缓存群集。在此示例中,主要主机执行群集管理角色,并将两个缓存主机指定为主要主机。
如果群集中的任一普通缓存主机出现故障,此群集可能会一直运行。非主要主机上的数据会丢失(假定未启用高可用性),但群集的其余部分会继续提供服务并存储数据。实际上,即使未指定为主要主机的四个缓存主机全部失去,群集仍可以保持运行。
只要其中一个主要主机出现故障,整个缓存群集就会关闭,因为不再是大多数主要主机在运行。若要减少此问题,您可以选择指定其他主要主机。”
以上是ms文档中的说明
二、使用sqlserver配置
工作组不允许使用sqlserver配置,只有域才可以。
每台cache服务器上的appfabric cache服务,都得用域用户启动(如果sqlserver和cache在同一台,这台貌似可以不用)
导出配置文件,修改,导入
http://msdn.microsoft.com/zh-cn/library/ee790910.aspx
“找到并编辑 partitionStoreConnectionSettings
元素中的 leadHostManagement
属性,该元素为 advancedProperties
元素的子元素。将其设置为 true
意味着被指定为主要主机的缓存主机将执行群集管理角色。将其设置为 false
意味着存储群集配置数据库的 SQL Server 的实例将执行群集管理角色。”
“当 SQL Server 执行群集管理角色时
如果群集的 leadHostManagement
设置为 false
,则无论 leadHost
设置如何,每个缓存主机仅承担与缓存数据相关的非主要主机的普通责任。在这种情况下,用于存储群集配置设置的 SQL Server 实例还用于执行群集管理角色。
如果发生服务器故障时
在 SQL Server 执行群集管理角色时,为了使群集保持可用,一个或多个缓存主机必须能够访问 SQL Server 数据库。
例如,设想下图中显示的六服务器缓存群集。
在此示例中,SQL Server 执行群集管理角色,所有六个缓存主机可以将其资源专用于缓存客户端的数据访问。
如果群集中的任何一个缓存主机发生故障,则这些服务器上的数据都会丢失(假定未启用高可用性),但群集会继续运行。其他缓存主机上的数据会继续提供给缓存客户端。事实上,在这种情况下,如果群集丢失了六个缓存主机中的五个,它仍可以继续工作。”
按照这种设置方式,不论那台cache down了,都不影响(全down自然不行),只要sql server不down。
ps:我在使用sql server 2008 r2 express做测试的时候,我的sql实例是sqlexpress。
在与sql同一台的机器上,设置sql连接时,使用.\sqlexpress设置
而在别的机器上设置sql连接时,使用ip\sqlexpress,机器名\sqlexpress都提示远程连接有问题,为这个远程连接整死了。
最后发现不需要输入sql实例名只要输入ip即可,不解
我没有使用文档中提供的命令形式,只是图形界面操作的
三、客户端
1、在host中把上面设置好的host都加进去,这样有一个down了也没关系
2、网上一些教程说需要引用2个dll,但其实是4个。如果是vs里引用的,他会自动把另外那两个引进去,但是如果是自己手动copy,就要注意多copy两个
Microsoft.ApplicationServer.Caching.Client.dll
Microsoft.ApplicationServer.Caching.Core.dll
Microsoft.WindowsFabric.Common.dll
Microsoft.WindowsFabric.Data.Common.dll
以上4个dll,在appfabric的安装目录下可以找到
服务器是08 r2,x64的,开发机是x86的,我没有测试拿x64的dll在x86的机器上开发会怎样,估计是会有问题。我直接找到x86的dll开发,放到服务器上时,再替换成x64的。