20.6 高可用数据库服务器
如果需要通过运行在集群节点上的业务层对象往SQL数据库中存储的数据进行写访问,在集群外部署一台SQL服务器仲裁对数据的访问(参考图20-6),SQL客户端程序首次启动时应该允许你指定SQL服务器的ip地址,你也应该可以使用SQL API指定主机(如端口,用户,密码和数据库),总之在处理任何数据前都得先连接到数据库。
来自客户端(每个集群节点)的SQL命令和数据都被发送到中央SQL服务器进行处理。
|
| (点击查看大图)图20-6:高可用数据库服务器 |
SQL服务器(Postgres,MySQL,Oracle等)访问附加在本地的、高速RAID磁盘驱动器或SAN上的数据。
高可用SQL Server
如图20-6所示,一个Stonith设备被用于控制主SQL服务器的电源,如果它发生了故障,运行在备用SQL服务器上的Heartbeat程序复位或关闭主SQL服务器的电源,并接管数据库资源的所有权,数据库资源就是SQL服务器守护进程、存储SQL数据的文件系统,集群节点、的ip地址。
另一个避免出现单点故障的技术是使用SQL服务器内置的SQL数据高级复制功能(参考你的SQL发行版的文档了解如何复制你的SQL数据到备用服务器)。
注意:SQL数据库使用专用的方法保证每个事务的完整性,这些技术叫做ACID(原子,一致性,隔离,持久性),参考freshmeat.net上的“Linux下的SQL数据库”(http://freshmeat.net/articles/view/305)。
集群ZOPE
另一个部署集群环境数据库的相对较新的一种技术是由Zope对象数据库(ZODB)和Zope企业对象(ZEO)软件包共同提供的。
Zope项目(http://www.zope.org/)使用Python语言,允许web开发人员使用类HTML语言TAL(或DTML)编写web页面,然后由Zope Python程序进行解释和执行,动态产生可用的HTML代码(当web页面被客户端计算机请求访问时产生),这个动态的HTML代码(与DHTML不是一回事)在业务层可以访问存储在ZODB数据层中的对象,它通常是一个放在本地磁盘驱动器上的一个文件,与Zope服务器位于同一服务器上,使用ZEO程序[4]后,动态HTML代码由Zope服务器解释,它可以在某个IP地址访问ZODB对象而不是一个文件,每个集群节点就变成一个ZEO客户端,高可用ZODB数据库服务器可以建立在集群之外,它拥有的IP地址就是ZEO客户端用来访问ZODB对象的地址。
使用TAL(或DTML)编写的动态HTML页面被称为Zope开发人员的产品,最佳的Zope产品可能要数Plone项目(http://www.plone.org/)了,访问ZODB对象的Zope(业务层)产品可以安装在所有集群节点上,共享访问存储在ZEO服务器上相同的数据,ZEO服务器仲裁数据的访问,但它不是使用的锁机制,而是通过当一个存储在中央ZODB数据库中的对象发生变化[5]时,所有ZEO客户端的信息来进行仲裁的(http://www.zope.org/,它也是运行在LVS集群上的)。[6]
Zope TAL(和DTML)程序使用Zope数据库连接产品也可以连接到SQL数据库,你可以快速开发出应用程序运行在你的集群上,访问位于集群外部的高可用SQL或ZODB数据库服务器。
[4]ZEO作为ZODB软件包的一部分发布。
[5]参考http://www.zope.org/Wikis/ZODB/MultiVersionConcurrencyControl。
[6]按照zope.org上的文档进行。
| 回书目 上一节 下一节 |