2、技术方案
第一章 概述
1.1. 需求分析
随着互联网技术、通信技术的快速发展,各行各业信息化建设也从通常的文字录入、办公自动化发展到业务活动的信息化,为了满足不同应用的需求,基于互联网的应用模型和计算模型得到了广泛的应用。PC服务器随着CPU的推陈出新和整体结构的不断完善,凭借其强大的性能优势和技术特点在越来越多的关键业务中发挥了重要的作用。
集群就是PC服务器应用在关键业务的技术保障。在三层架构应用系统的接入层,多台PC服务器构建的负载均衡集群系统可以为业务系统提供足够的接入能力;在三层架构应用系统的后端,多台高性能的PC服务器构建的数据库集群系统可以提供强大的数据处理性能,为业务系统提供强劲、稳固的后台系统。基于集群技术的PC服务器平台凭借价格优势和强大的性能保证取代部分小型机成为许多关键业务的首选。
随着各药店的数据量越来越大,数据查询和计算等业务越来越复杂,它需要一个高性能的超级计算机才能在特定的时间内完成大量的计算和数据的交换。由PC服务器和高性能计算集群是满足要求的首选。根据不同的特定计算内容和性能要求的不同由几台到上百台PC服务器通过内部高速互连设备连接构成的高性能计算集群系统已大量应用于生产研究的实际应用中。
本次工程的总体任务如下:
方案应以“先进、实用、经济、合理,用管两便、安全可靠,易于扩展”的指导思想为原则,采用先进成熟的主流技术,充分考虑新建系统的可扩充性和与原有系统的兼容性,并体现科学规划、合理布局、预留充分、应用方便的特点,达到现代化、高效、舒适、安全、节能的人文办公环境的要求。
服务器集群系统建设应该符合如下要求:
1.1.1 保证数据库可靠性
Oracle 数据库以其稳定性著称。真正应用集群将这一优点发扬光大,能够以单点故障方式移除服务器。如果一个实例故障,集群中的其它实例将仍然保持运行和活动状态。
1.1.2 具备快速恢复能力
Oracle 数据库包含许多有助于从各类故障中轻松恢复的功能。如果RAC 数据库中的一个实例出现故障,集群中的另外一个实例将察觉到这一故障,随后自动进行故障恢复。利用快速应用程序通知,快速连接故障转移和透明应用程序故障切换这三个功能,应用程序可以很方便地掩藏组件故障,使用户无法察觉。
1.1.3 支持错误检测和业务持续运行
Oracle 集群件自动监控 RAC 数据库并可对环境中的错误进行快速检测。在用户不知不觉中自动完成故障恢复。使用快速应用程序通知功能,应用程序能够在集群组件故障出现时立即得到通知,然后将事务切换至无故障节点,从而掩藏这一故障,让用户无法察觉。使用真正应用集群,在计划和意外停机期间仍可持续提供服务。如果一个节点(或实例)出现故障,数据库将仍然保持运行状态,应用程序仍可访问数据。大多数的数据库维护操作可在不中断运行的情况下完成,并且对用户透明。其它维护任务可以通过滚动方式完成,所以可将应用程序中断时间降至最少,或完全消除。快速应用程序通知和快速连接故障切换可帮助应用程序达到服务水平和掩藏组件故障。
1.1.4 高性价比
满足应用的同时,高性价比是集群系统建设的不二选择
最后,我们强调,系统设计要符合现在和未来3~5年内的需求,不能盲目追求大而全,以最少的投资创造实际需要的功能。
第二章 服务器集群系统建设规划
2.1. 建设原则
服务器集群系统设计将严格遵守各种相关的技术原则,遵循各种相关的技术标准和规范,整个集群系统设计严格按照以下原则进行:
先进性和实用性
采用先进成熟的技术满足内部应用系统的需求,兼顾其他相关的管理需求,尽可能采用先进的技术以适应更高的数据、语音、视频(多媒体)等业务处理需要,使整个系统在相当一段时期内保持技术的先进性,以适应未来信息化的发展的需要。
安全性和可靠性
为保证各项业务应用,集群系统必须具有高可靠性,尽量避免系统的单点故障。要对网络结构、网络设备等各个方面进行高可靠性的设计和建设。在集群系统设计上应采用硬件备份、冗余等可靠性技术提高整个系统的可靠性。
灵活性和可扩展性
集群系统是一个不断发展的系统,所以它必须具有良好的灵活性和可扩展性,能够根据不断深入发展的需要,方便的扩展网络覆盖范围、扩大数据存储容量和提高整个系统的应用功能。具备支持多种应用系统的能力,提供技术升级、设备更新的灵活性。
开放性和互连性
具备与多种协议计算机通信网络互连互通的特性,确保本集群系统的基础设施的作用可以充分的发挥。在结构上真正实现开放,基于开放式标准,包括各种局域网、广域网等,坚持统一规范的原则,从而为未来的发展奠定基础。
可管理性
随着业务的不断发展和数据量的不断增加,数据库管理的任务必定会日益繁重。所以在集群系统设计中,必须建立一套全面的数据库集群系统管理解决方案。集群系统中服务器最好采用统一高性能的,操作系统采用统一高安全性的,数据库采用
统一高效兼容性的,实现统一的管理。最终能够实现监控、监测整个集群系统的运行情况,可以迅速确定系统故障等。
2.1.1 集群系统资源的高可用性
集群系统的建设关注整体投资回报,系统资源与应用的实用性是集群系统建设的根本,在此基础上考虑集群系统的可靠性、可扩展性、安全性以及可管理性。
提供永不中断的服务:
真正的集群系统必然能提供服务的高可度可用性。也就是说,系统对外是一个单一的逻辑映像,但是内部有高度的容错实现,能在某一节点出现错误的情况下,系统的服务不停止,并且能在不中断整个系统服务的情况下,修复出现错误的节点,使其重新加入集群中,继续提供服务。
2.1.2 集群系统的高可靠性
集群系统由于运行各个药店的业务系统,需要保证数据库的正常运行,不因网络单点的故障或变化引起业务的瞬间质量恶化甚至内部业务系统的中断,这点十分重要。集群系统作为数据处理及转发中心,应充分考虑可靠性。
数据库系统的可靠性增强:
目前的数据库系统大多采用双数据库服务器,采用串行的连接方式,假设一台数据库服务器出现问题的几率为0.01%,那么整个数据库集群出现问题的概率至少 应该是0.01% x 2;而真正的数据库集群系统由于应用了并行的连接方式,假设一台数据库服务器出现问题的几率为0.01%,两台数据库构成的数据库集群出错的概率就是 0.01% x 0.01%。所以可以看出,与目前数据库系统的机构相比,并行的数据库集群可以显著增强系统的可靠性。
2.1.3 集群系统的可伸缩性
Oracle 真正应用集群提供了独一无二的应用程序伸缩技术。传统上,当服务器容量不足时,我们会使用更大的新服务器来替换它。但服务器容量越大,其价格也愈加昂贵。而对于使用了 RAC 的数据库,我们可选择其它方法进行增容。原先运行
于大型 SMP 服务器上的应用程序可移植到小型服务器集群中运行。或者,您也可以选择保留现有硬件的投资,在集群中加入新服务器(或创建一个集群)来增加容量。通过 Oracle 集群件和 RAC 向集群中添加服务器时并不需要停机,且在启动新实例后,应用程序就可立即利用这些增加的容量。集群中的所有服务器必须使用同一操作系统和相同版本 Oracle 软件,但其容量不需要一样。现在,客户可以根据自己的需要来选择集群,可以是由每台服务器含 2 个 cpu 的普通服务器组成的集群,也可以是每台服务器含 32 或 64 个 cpu 的服务器组成的集群。
2.1.4 集群系统的高安全性
网络的发展趋势是基于Internet Web技术的开放网络化系统。这不仅带来了新的巨大的使用方便,同时也带来了不断增加的复杂应用及信息技术的挑战,因而安全是集群系统建设中要考虑的一个关键因素。
数据集可扩性,任何时刻同时拥有多份一致的数据集。
这种高数据可靠性,只有用并行同步事务复制的方法才能做到。整个系统在任何时刻具有多个一致的数据集,这样一旦某一数据集遭到破坏,还有剩余的数据和数据库继续提供正常的服务。
2.1.5 集群系统的可管理性
随着网络中设备逐渐增多,网络技术日趋复杂,网络管理的重要性越来越明显——网络的复杂导致系统运行的不确定因素增加,可靠性降低,“宕机”时间变长且带来的损失越来越大,而往往由于平时对网管的忽略,缺乏受过专业培训的网络管理人员,也缺乏综合的网管解决方案,因而发生问题时无从下手,这才意识到网管的重要。作为一套考虑完善、可靠性要求极高的系统,当然不希望有“亡羊补牢”的情况发生,因此集群系统易管理性是必不可少的考虑因素之一,从设备本身操作系统所具备的一些网管功能,到简单的网络管理工具,甚而功能强大的大型数据库管理系统,用户可根据自身的实际应用和资金安排,循序渐进,逐步实现全面集群系统管理功能。
与传统的单一应用系统不同,服务器集群系统集中了各药店数据库资源。在这
样的一个大量数据集中管理环境中,网络从承载单一的数据到多种不同的应用,如何合理分配利用集群系统资源,保障关键性业务的管理要求成为网络规划管理人员不能回避的问题。
2.2. 服务器集群系统方案简介
2.2. 1此次方案设计拓扑如下图:
方案规划
在两台浪潮服务器上安装LINUX操作系统,在LINUX 5.0上安装ORACLE 10G RAC,当Oracle10gRAC集群的任何一个服务器节点出了问题,整个应用不会停止,不存在切换时间问题,整个系统可以高效稳定的运行,非常适合用户对整个系统高可用性极强的要求。
2.3.
充分考虑集群系统建设的特点,结合用户的实际情况。我们建议从下面几个方面设计来保证用户整个服务器集群系统的高可靠性,高可用性,易扩展性,开放性,安全性,可管理性和实用性。
方案设计思想:
2.3.1 服务器操作系统选择
本次用户采购的是PC系列服务器,目前在PC 服务器上可以应用的服务器操作系统,包括WINDOWS NT/2000/2003系列,以及Linux系列操作系统。我们在此次项目中,我们选择最新版的RedHat Advance Server 5.0作为集群操作系统平台。 对比Linux和微软最新服务器操作系统window2003区别:
(1)安全性对比
Linux操作系统的安全性比Windows系列的操作系统好很多,因为Linux与UNIX的关系太密切了,实际上Linux就是UNIX设计的克隆(Clone),Linux也可以算是Unix家族中的一员。Linux内核吸收了UNIX超过30年的研究经验,在安全方面属于最高级别的操作系统。但是售价又比商业的UNIX系统低很多。对使用Windows的人来说,病毒,木马无处不在,各种各样的新型病毒与木马层出不穷,给系统管理员造成了非常大的麻烦和工作压力!Linux由于其继承了UNIX的优秀设计,具有健壮的先天病毒免疫能力,至今Linux操作系统上的原生的病毒几乎没有。
(2)稳定性对比
Linux的稳定性比Windows系列的操作系统好很多,人们会经常提及一个问题为什么Linux几乎不崩溃,Linux的稳定性是由于它没有像Windows操作系统一样内核如此庞大、漏洞无穷。资料表明,Linux与其它Unix系统和大型操作系统如VMS、IBM大型机等一样具有相同的可靠性。原因并不难以得到,系统的稳定性主要取决于系统设计的结构。计算机硬件的结构自从1981设计开始就没有作特别大的改动,而连续向后兼容性使那些编程风格极差的应用软件勉强移植到Windows的最新版本,这种将就的软件开发模式极大地阻碍了系统稳定性的发展。
Linux的稳定性并不是一个意外的例外,稳定性是所有大型计算机操作系统所具有的共性。Linux所共享的Unix设计体系是经过长期实践考验的,Linux吸取了Unix系统30多年发展的经验,Linux操作系统体现了最现代化操作系统的设计理念和最经得住时间考验的设计方案。
(3)性能对比
Linux的性能在众多的服务应用上好于Windows系列的操作系统,许多的独立机构针对Linux和Windows NT、Linux和其它流行的Unix作了大量的评测。除了一次评测以外,所有的测试都显示不但在单处理器上击败了NT,而且在NT自认为其多线程结构扩展性更强的多处理器系统中击败了NT。Linux能通过使用重量级处理来代替NT使用的轻量级线程而获得优越的性能,Linux中的进程复制极为有效,几乎消除了使用线程的需要。令人惊奇的是,Linux恰好能击败基于SPARC硬件平台上的Solaris,虽然仅仅在单处理器的机器上。有一项分析揭示了Linux性能优越的主要原因,Unix系统(包括Linux系统在内)把图形处理为一个用户级的应用,图形可根据需要被选择是否运行。Linux系统中存在适度复杂的图形界面,但是它们并没有与操作系统的内核紧紧捆绑在一起,图形界面可按需求关闭。
Oracle原生于UNIX家族,Oracle数据库从诞生之日起就与Unix架构的操作系统联系在一起,Oracle在Unix架构上的操作系统上有着先天的性能优势.,就连IBM和Oracle都全力支持Linux,发行了专门的Linux版本的数据库版本,各种评测和报告表明,Linux数据库方面的服务处理性能,不仅远高于Windows的处理性能,甚至高于了部分商业UNIX的性能。举个例子,比如说Linux原生UNIX的异步I/O模式,这种模式在Windows操作系统是没有的,这种模式的应用在Oracle得到了很好的体现,极大的提高了整个Oracle数据库的综合性能。
2.3.2 数据库系统选择
Oracle10g是Oracle公司最新稳定一代的数据库平台,不管从性能,安全,扩张性方面比起Oracle9I的平台有了很大的提高。
Oracle10gRAC集群中采用了OCFS2集群文件系统,对比Oracle9iRAC集群中的OCFS文件系统,Oracle10g这个版本不论从稳定性还是性能,都远远高于Oracle9iRAC集群系统。
2.3.3 数据集群软件选择
在此次项目中,针对项目规划和目标,我们选用了Oracle10gRAC集群作为本次项目的集群解决方案,理由如下:
(1)项目背景
原有各个药店的数据都是独立的,采用定时上传数据的方式传到中心服务器,中心服务器采取双机热备的方式,这个模式的缺点非常明显,主要体现在以下几个方面:
a. 数据分散,管理维护困难
b. 由于是定时上传数据,所以无法达到实时管理数据
c. 各个药店由于服务器性能参差不齐,访问和统计数据效率较低
d. 中心服务器由于采取传统双机热备的方式,实际上只有一台服务器在工作,性能
上无法保证处理日益增加的数据量。并且,热备方式当主服务器宕机时,备份服务器接管需要一定的切换时间。
(2)项目规划与目标
a. 实现数据统一管理
b. 实现实时管理数据
c. 提高原有系统的数据并发处理性能
d. 改变原有服务器的双机热备方式,提高整个服务器集群的工作性能,服务器集群
的节点数量可以不断扩展,不影响原来的集群结构,将原有的双机热备切换时间,减少至零。
(3)OracleRAC集群描述
Oracle RAC 集群是当今最先进的集群技术,Oracle RAC集群具有延展性,而且可支援各种硬件平台及任何数目的集群节点;Oracle RAC集群技术兼具高延展效能(多节点)与Failover (失效切换)能力两项特性,它同时也是网格计算的基础。
从性能而言,Oracle10g将RAC集群技术发挥到了极点,不但将原有的高延展性能(可以增加多个服务器节点提高性能)技术继承下来,更是真正意义实现了网格式计算,网格计算指的是将多个Oracle RAC集群连接在一起,让数量规模庞大的电
脑系统与储存系统协同运作,进而提供惊人的生产力。Oracle公司最新一次在RAC下性能测试,创造了性能最优的世界记录。原因很简单,由于Oracle10gRAC集群的每个节点均是可用的,节点之间共享Oracle专用的内存缓冲区,性能极高。并非传统意义上的双机热备技术(只有一台服务器在工作,另一台在休眠状态)所能比较。
从高可用性来说,Oralce10gRAC将Failover (失效切换)的技术继承并更方便维护,Oracle10gRAC技术是Oracle公司的原生技术,无需第三方软件支持,对比symantec Veritas这样的第三方软件有着先天的优势。当Oracle10gRAC集群的任何一个服务器节点出了问题,整个应用不会停止,不存在切换时间问题,整个系统可以高效稳定的运行,非常适合用户对整个系统高可用性极强的要求。
总结来说,OracleRAC有几项突出优势
(1) 由于集群中所有节点都参与运算,性能可大幅提高。
(2) 可以实现多台廉价的服务器共同组建一个OracleRAC集群。无需由于数据量不断增加,为提高处理能力而被迫采购更高性能的昂贵服务器。从而保护用户的原有投资。
(3) 由于是集群工作模式,出现故障点后,无需等待切换时间,大大增加了整个业务系统的高可用性。
(4) 服务器集群可扩展节点数量,最多的工作节点高达32个,传统的双机热备模式只能支持两个服务器。
(5) 由于此次项目要求数据实现统一管理和实时管理,要求整个服务器系统的处理并发事务能力大大增强,传统的单节点处理模式,处理并发访问的能力有限,OracleRAC多节点共同处理事务的架构,大大增加了整个服务器系统的事务并发处理能力。
2.4. 具体实施步骤
(一) 安装Redhat AS Linux
1.使用第一张 CD 启动服务器。
您可能需要更改 BIOS 设置,以允许从 CD 启动。
2.启动屏幕上出现时在底部显示 boot:。
选择 Enter,从控制台上执行图形安装。(对于其他安装方法和选项,请参阅 Red Hat 安装指南。)
安装程序扫描硬件,短暂显示 Red Hat 闪屏,然后开始显示一系列屏幕提示。 3.选择语言 选择简体中文。 4.配置键盘 接受默认值。 5.欢迎屏幕 单击 下一步。 6.配置鼠标 接受默认值。 7.安装类型 选择 Custom。 8.设置磁盘分区
本文不介绍磁盘分区的详细方法,而是假设您熟悉磁盘分区方法。
(警告:对磁盘进行错误分区是删除硬盘上所有内容的最可靠、最快捷的方法之一。如果不确定如何分区,请先停下来,找人帮帮您,否则您将冒丢失数据的危险!) 本文使用默认分区方案(文件系统均为 ext3),须注意如下一点:
交换分区 — 将此分区大小至少设置为系统 RAM 的两倍,但32位系统不要超过 2GB。如果需要大于 2GB 的交换空间,则创建多个交换分区。 9.配置启动加载程序 接受默认值。 10.配置网络
此时配置两个网卡,用规划好的两个地址,一个公网地址,一个私有地址。 使用静态 IP 地址配置数据库服务器。单击 Edit。
出现一个弹出窗口。取消选中 Configure using DHCP 复选框,并输入服务器的 IP 地址和网络掩码。确保选中 Activate on boot,然后单击 OK。
在 Hostname 框中,选择 manually 并输入主机名dbrac1……集群依次类推。 在 Miscellaneous Settings 框中,输入其他网络设置。 11.配置防火墙
本次将不配置防火墙。选择 No firewall。 12.其他语言支持
接受默认值。 13.选择时区
选择适合您区域的时间设置。将系统时钟设置为 UTC 对服务器而言通常是一个很好的做法。为此,单击 System clock uses UTC。 14.设置 Root 口令
输入 root 的口令,并再次输入以进行确认。 15.选择程序包组 最下面选择全选。 单击 下一步 继续操作。 16.准备安装 单击 下一步。 17.安装程序包
软件将被复制到硬盘并被安装。根据提示更改光盘,然后在安装完成时单击 下一步。 18.配置图形界面 (X)
接受默认值,除非安装程序无法识别您的视频卡。如果您的视频卡无法被识别,则将无法继续操作。 19.配置监视器
如果安装程序正确识别了您的监视器,则接受默认值。否则,从列表中选择一个兼容的监视器。 20.定制图形配置 接受默认值。 21.恭喜
从系统中取出安装介质,然后单击 下一步。 22.系统自动重新启动并显示一个新的欢迎屏幕。 单击下一步。 23.许可协议
阅读许可协议。如果同意其中的条款,则选择 Yes, I agree to the License Agreement 并单击下一步。 24.日期和时间 设置日期和时间。
如果要使用 NTP 服务器(推荐),则选择 Enable Network Time Protocol 并输入 NTP 服务器的名称。 25.用户帐户
此时不要为 oracle 创建帐户。本部分稍后将介绍如何创建 oracle 帐户。 26.Red Hat Network
如果要立即使用或激活 Red Hat Network 帐户,则接受默认值,单击 Next 并遵循 Red Hat 产品附带的产品激活说明。
如果不能连到网络,此时可不必激活,随便填上,检测网络不通,跳过即可 27.其他 CD 单击下一步。 28.完成设置 单击下一步。
29.出现一个图形登录屏幕。
30.恭喜!您的 Linux 软件现已安装完毕。 验证安装 验证内核版本: # uname -r
2.6.9-22.ELsmp
验证已安装的程序包:
# rpm -q make gcc gcc-c++ libaio libaio-devel make-3.80-184.1 gcc-3.3.3-43.24 gcc-c++-3.3.3-43.24 libaio-0.3.98-18.3
libaio-devel-0.3.98-18.3 注:应显示更高版本
(二) 针对Oracle配置redhat
2.1 验证系统要求
要验证系统是否满足 Oracle 10g 数据库的最低要求,以 root 用户身份登录并运行以下命令。
要查看可用 RAM 和交换空间大小,运行以下命令: grep MemTotal /proc/meminfo grep SwapTotal /proc/meminfo 例如:
# grep MemTotal /proc/meminfo MemTotal:512236 kB
# grep SwapTotal /proc/meminfo SwapTotal:1574360 kB
所需最小 RAM 为 512MB,而所需最小交换空间为 1GB。对于 RAM 小于或等于 2GB 的系统,交换空间应为 RAM 数量的两倍;对于 RAM 大于 2GB 的系统,交换空间应为 RAM 数量的一到两倍。
Oracle 10g 软件还需要 2.5GB 的可用磁盘空间,而数据库则另需 1.2GB 的可用磁盘空间。/tmp 目录至少需要 400MB 的可用空间。 2.2 内核参数
1.内核参数
在/etc/sysctl.conf中编辑: kernel.shmall = 2097152 kernel.shmmax = 2147483648 kernel.shmmni = 4096
kernel.sem = 250 32000 100 128 fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000 net.core.rmem_default = 262144 net.core.rmem_max = 262144 net.core.wmem_default = 262144 net.core.wmem_max = 262144
然后用执行/sbin/sysctl –p
2.hangcheck-timer设置
RAC节点间通过CSS来判断通信状态,因此需要设定定时器来触发判断。该定时器就是linux内核自带的hangcheck-timer。 具体操作:
在/etc/rc.local中加入(数值以具体情况而定,以下是默认值) modprobe hangcheck-timer hangcheck_tick=30 hangcheck_margin=180
表示,每隔30秒检查一下节点状态,如果180秒内仍没有反应,则重启该节点。这也就是说,检查的间隔最长为30+180秒,如果超过这个时间,则系统重启。 Tip:如果系统尚不稳定,可将数值设置的大一些,这样可以有充分的时间来修复系统,否则系统会进入循环重启状态。
2.3 添加oracle用户和组 # /usr/sbin/groupadd oinstall # /usr/sbin/groupadd dba
# /usr/sbin/useradd -m -g oinstall -G dba oracle # id oracle
uid=1000(oracle) gid=1000(oinstall) groups=1000(oinstall),6(disk),1001(dba)
设置 oracle 帐户的口令: # passwd oracle
Changing password for user oracle. New password:
Retype new password:
passwd:all authentication tokens updated successfully.
设置oracle的shell限制:
在/etc/security/limits.conf文件中加入: oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 2.4 网络设置
注:此处使用的公共地址为规划好后的地址,不能为临时地址(除非试验安装) RAC要求机群内的每个节点至少有两块网卡,一个设置为公用(公网),对外提供服务;一个设置为私用(专用),提供节点内的告诉传输。此外还需要为公用网卡配置一个虚拟地址,oracle需要借此为用户提供透明的高可用服务。具体介绍如下: 专用网络
每个集群节点通过专用高速网络连接到所有其他节点,这种专用高速网络也称为集群互联或高速互联 (HSI)。 Oracle 的 Cache Fusion 技术使用这种网络将每个主机的物理内存 (RAM) 有效地组合成一个高速缓存。 Oracle Cache Fusion 通过在专用网络上传输某个 Oracle 实例高速缓存中存储的数据允许其他任何实例访问这些数据。 它还通过在集群节点中传输锁定和其他同步信息保持数据完整性和高速缓存一致性。
专用网络通常是用千兆以太网构建的,但是对于高容量的环境,很多厂商提供了专门为 Oracle RAC 设计的低延迟、高带宽的专有解决方案。 Linux 还提供一种将多个物理 NIC 绑定为一个虚拟 NIC 的方法(此处不涉及)来增加带宽和提高可用性。 公共网络
为维持高可用性,为每个集群节点分配了一个虚拟 IP 地址 (VIP)。 如果主
机发生故障,则可以将故障节点的 IP 地址重新分配给一个可用节点,从而允许应用程序通过相同的 IP 地址继续访问数据库。 修改/etc/hosts加入下面内容:
127.0.0.1 localhost.localdomain localhost # public address
10.45.170.17 dbrac1 10.45.170.18 dbrac2 # private address
172.168.0.17 dbrac1-eth0 172.168.0.18 dbrac2-eth0 # virtual address
10.45.170.117 dbrac1-vip 10.45.170.118 dbrac2-vip
虚拟地址可以随便起一个(保证同一个网段),在安装RAC的时候,vipca会自动将虚拟地址绑定在公共网卡上的。 2.5 为用户等效性设置SSH 为用户等效性设置SSH
在安装 Oracle RAC 10g 期间,OUI 需要把文件复制到集群中的其他主机上并在其上执行程序。 为了允许 OUI 完成此任务,必须配置 SSH 以启用用户等效性。 用 SSH 建立用户等效性就提供了一种在集群中其他主机上复制文件和执行程序时不需要口令提示的安全方式。
第一步是生成 SSH 的公共密钥和专用密钥。 SSH 协议有两个版本;版本 1 使用 RSA,版本 2 使用 DSA,因此我们将创建这两种类型的密钥,以确保 SSH 能够使用任一版本。 ssh-keygen 程序将根据传递给它的参数生成任一类型的公共密钥和专用密钥。
当您运行 ssh-keygen 时,将提示您输入一个用于保存密钥的位置。 当提示时只需按 Enter 接受默认值。 随后将提示您输入一个口令短语。 输入您能记住的口令,然后再次输入该口令进行确认。 当您完成以下步骤后,在 ~/.ssh 目录中将会有四个文件: id_rsa、id_rsa.pub、id_dsa 和 id_dsa.pub。 id_rsa 和 id_dsa 文件是您的专用密钥,千万不要告诉任何人。 id_rsa.pub 和 id_dsa.pub 文件是您的公共密钥,必须将其复制到集群中其他每个主机上。 在每个主机上,以 oracle 用户身份登录: $ mkdir ~/.ssh
$ chmod 755 ~/.ssh
$ /usr/bin/ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/oracle/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again:
Your identification has been saved in /home/oracle/.ssh/id_rsa. Your public key has been saved in /home/oracle/.ssh/id_rsa.pub. The key fingerprint is:
4b:df:76:77:72:ba:31:cd:c4:e2:0c:e6:ef:30:fc:37 [email protected] 注意:本例中此处一路按回车选择默认
$ /usr/bin/ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/oracle/.ssh/id_dsa): Enter passphrase (empty for no passphrase): Enter same passphrase again:
Your identification has been saved in /home/oracle/.ssh/id_dsa. Your public key has been saved in /home/oracle/.ssh/id_dsa.pub. The key fingerprint is:
af:37:ca:69:3c:a0:08:97:cb:9c:0b:b0:20:70:e3:4a [email protected] 注意:本例中此处一路按回车选择默认
现在,必须将每个主机上的公共密钥文件 id_rsa.pub 和 id_dsa.pub 的内容复制到其他每个主机的 ~/.ssh/authorized_keys 文件中。 使用 ssh 将每个文件的内容复制到 ~/.ssh/authorized_keys 文件。 请注意,当您使用 ssh 第一次访问远程主机时,其 RSA 密钥将是未知的,从而将提示您确认是否希望连接该主机。 SSH 将记录该远程主机的 RSA 密钥,并在以后连接该主机时不再做出相关提示。 只需在第一个主机上,以 oracle 用户身份登录(复制本地帐户的密钥,以便连接本地主机的 ssh 能够起作用):
(如果您要剪切和粘贴这些命令,则分别运行它们。 SSH 每次会提示输入 oracle 的口令,如果同时粘贴这些命令,则第一个命令在提示输入口令之前刷新输入缓冲区,从而导致其他命令将会丢失。)
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys $ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
$ ssh oracle@dbrac2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys The authenticity of host 'dbrac2 (10.49.9.100)' can't be established.
RSA key fingerprint is d1:23:a7:df:c5:fc:4e:10:d2:83:60:49:25:e8:eb:11.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'dbrac2,10.49.9.100' (RSA) to the list of known hosts. oracle@dbrac2's password:
$ ssh oracle@dbrac2 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys oracle@dbrac2's password:
$ chmod 644 ~/.ssh/authorized_keys
要对第二个主机做同样的处理。请注意,这次有的SSH不会提示您输入oracle的口令。这是因为第一个主机(dbrac1)现在知道了第二个主机的公共密钥,而SSH现在使用的是一种不同的认证协议。
建立用户等效性
如果一切均设置正确,则您现在就可以使用 ssh 在其他集群主机上不必输入口令而登录、执行程序和复制文件了。 通过在远程集群主机上运行诸如 date 等简单命令来验证用户等效性: $ ssh dbrac2 date
Sun Jun 27 19:07:19 CDT 2004
测试每个方向上所有服务器的连通性是非常重要的。这样会确保当 OUI 在 CRS 和数据库软件安装期间试图复制文件时不会出现类似以下的消息。 该消息只有在远程节点上第一次执行操作时才会出现,因此通过测试连通性,您不仅确保了远程操作的正常运行,还完成了初始的安全密钥交换。
The authenticity of host 'dbrac2 (10.49.9.100)' can't be established.
RSA key fingerprint is 8f:a3:19:76:ca:4f:71:85:42:c2:7a:da:eb:53:76:85. Are you sure you want to continue connecting (yes/no)? yes
注意: 以上步骤执行完以后,需要执行和本机建立等效性,否则安装CRS时也会出错,在每个节点上分别执行: $ ssh hostname
(此处hostname分别为dbrac1、dbrac2)
(三) 配置共享磁盘
配置共享磁盘的方法有三种: Oracle 集群文件系统 (OCFS)、自动存储管理器 (ASM)、原始设备 (RAW) 安装 OCFS2
我将把 OCFS2 文件安装到两台单处理器计算机中。安装过程只需要您以 root 用户帐户在集群中的所有节点上运行以下命令即可:
$ su -
# rpm -Uvh ocfs2-2.6.9-11.0.0.10.3.EL-1.0.4-1.i686.rpm \ ocfs2console-1.0.2-1.i386.rpm \ ocfs2-tools-1.0.2-1.i386.rpm
Preparing... ########################################### [100%]
1:ocfs2-tools ########################################### [ 33%]
2:ocfs2-2.6.9-11.0.0.10.3########################################### [ 67%]
3:ocfs2console ########################################### [100%] 禁用 SELinux
向 RHEL4提供一个建议,即 OCFS2 当前无法在启用 SELinux 的情况下运行。如果您使用的是 RHEL4,则您需要禁用 SELinux(使用工具 system-config-securitylevel)才能执行 O2CB 服务。
要禁用 SELinux,运行“Security Level Configuration”GUI 实用程序: # /usr/bin/system-config-securitylevel &
这将显示以下屏幕:
图 6 Security Level Configuration 打开屏幕
现在,单击 SELinux 选项卡并取消选中“Enabled”复选框。单击 [OK] 后,将显示一个警告对话框。只需单击“Yes”确认该警告。禁用 SELinux 选项后,屏幕现在应如下所示:
图 7: 禁用了 SELinux
在集群中的两个节点上进行此更改后,将需要重新引导每个节点以实施更改: # init 6
(四) 安装配置Oracle RAC
4.1 配置环境变量
编辑.bashrc设置 ORACLE_BASE 和 ORACLE_HOME 等环境变量
基本路径:
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
ORA_CRS_HOME=/u01/crs/oracle/product/10.2.0/crs_1
据oracle的安装文档要求,CRS的目录最好不是ORACLE_BASE的子目录,因为安装过程中会改变CRS的父目录的权限,这会影响ORACLE的安装。在按以
上要求生成对应目录之前,需检查所在磁盘的空间是否满足安装要求,确定之后生成目录,并将相关环境变量设置在oracle用户的profile中。用oracle帐号编辑 /home/oracle/.bashrc
oracle用户的profile文件.bashrc内容:
# .bashrc
# User specific aliases and functions
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export ORA_CRS_HOME=/u01/crs/oracle/product/10.2.0/crs_1
export ORACLE_SID=dbrac1
export ORACLE_TERM=xterm
export LD_ASSUME_KERNEL=2.4.1
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib
PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin:$ORA_CRS_HOME/bin:/sbin export PATH
然后执行
$ source .bash_profile
使环境变量生效
注意:ORACLE_SID每台机器不一样,如dbrac1的SID为dbrac1,dbrac2的SID为dbrac2,以此类推。
对LD_ASSUME_KERNEL环境变量的说明:
这个参数实际上是为了避免Linux上的 NPTL (Native POSIX Thread Library) 和Oracle应用不兼容的问题. 设定 LD_ASSUME_KERNEL为2.4.1表示使用旧有的 "Linuxthreads with floating stacks"
4.2安装CRS集群软件
仅在集群的一个节点上执行下列安装过程!Oracle Universal Installer 将把 Oracle 集群软件安装到集群中的所有其他节点。
您现在就可以安装该环境的“集群”部分:Oracle 集群件了。在上一节中,您将 Oracle 集群件的安装文件下载并解压缩到 linux1 的目录
/u01/app/oracle/orainstall/clusterware 中。这是唯一需要执行安装的节点。
在 Oracle 集群件的安装过程中,系统将提示您提供相关的并要在 RAC 集群中配置的节点。当实际的安装开始时,配置的远程访问把所需的软件复制到所有节点。 那 Oracle 集群件究竟是用来干什么的呢?
它包含所有集群和数据库配置元数据以及多个适用于 RAC 的系统管理特性。通过它,DBA 可以将一个 Oracle 实例(或多个实例)注册和调用到集群。在通常的操作中,Oracle 集群件将通过一种特殊的 ping 操作向集群中配置的所有节点发送消息(通常称作“心跳”)。如果对任何节点的心跳检测失败,则它将检查 Oracle 集群件配置文件(位于共享磁盘上)以辨别是节点故障还是网络故障。
安装 Oracle 集群件后,用于安装 Oracle 10g 数据库软件(下一节)的 Oracle Universal Installer (OUI) 将自动识别这些节点。与您将在本节中执行的 Oracle 集群件安装一样,Oracle 数据库 10g 软件只需要从一个节点中运行。OUI 将把此软件程序包复制到 RAC 集群中配置的所有节点。
Oracle 集群件共享文件
将把由 Oracle 集群件使用的两个共享文件存储到我们在前面创建的 OCFS2 文件系统中。这两个共享 Oracle 集群件文件是:
Oracle 集群注册表 (OCR)
o 位置:/u02/oradata/orcl/OCRFile
o 大小:~ 100MB
CRS 表决磁盘
o 位置:/u02/oradata/orcl/CSSFile
o 大小:~ 20MB
注意:对于此处的安装而言,无法将 ASM 用于两个 Oracle 集群件文件(OCR 或 CRS 表决磁盘)。问题是只有这两个文件就绪并可以访问后才可以启动 Oracle 实例。要使 ASM 可用,应首先运行 ASM 实例。可以将这两个共享文件存储到 OCFS2、共享的原始设备或其他供应商的集群化文件系统中。
验证环境变量
启动 OUI 之前,应先从控制台以 root 运行 xhost 命令以允许建立 X Server 服务器连接。然后,取消 ORACLE_HOME 变量的设置并确认 RAC 集群的每个节点定义了唯一的 ORACLE_SID。还应确认我们是以 oracle 用户帐户登录的:
以 oracle 登录
# xhost +
access control disabled, clients can connect from any host
# su - oracle
取消 ORACLE_HOME 的设置
$ unset ORA_CRS_HOME
$ unset ORACLE_HOME
$ unset ORA_NLS10
$ unset TNS_ADMIN
验证 linux1 上的环境变量
$ env | grep ORA
ORACLE_SID=orcl1
ORACLE_BASE=/u01/app/oracle
ORACLE_TERM=xterm
验证 linux2 上的环境变量
$ env | grep ORA
ORACLE_SID=orcl2
ORACLE_BASE=/u01/app/oracle
ORACLE_TERM=xterm
安装集群就绪服务
注意:Oracle RAC 10g 10.1.0.3 中的 CSS 超时计算 请注意,安装 Oracle 集群件软件后,您需要修改集群件的 CSS 超时值。这对 10.1.0.3 和更高版本来说更是如此,这是因为其 CSS 超时计算方法不同于 10.1.0.2。从 Linux 平台(包括 IA32、IA64 和 x86-64)上的 Oracle 10.1.0.3 开始,已发现因 CSS 后台程序超时引起的多个问题。这在过去一直是困扰我的一大难题,尤其是在创建数据库 (DBCA) 时。例如,数据库创建过程经常因以下错误而失败:ORA-03113:end-of-file on
communication channel。关键错误在日志文件
$ORA_CRS_HOME/css/log/ocssd1.log 中记录为:
clssnmDiskPingMonitorThread:voting device access hanging (45010
miliseconds)
实际上,问题源于慢速磁盘以及 CSS misscount 的默认值。CSS misscount 值表示在 CSS 删除节点前未收到的心跳数。CSS 使用该数值计算表决磁盘的 I/O 应被视为超时 的时间,从而将其终止以防止裂脑情况的出现。在 Linux 上,Oracle 10.1.0.2 和更高版本的 CSS misscount 的默认值为 60。但 10.1.0.2 版与 10.1.0.3 版的超时值(秒)计算公式并不相同。
10.1.0.2 的超时值计算公式如下:
time_in_secs > CSS misscount, then EXIT
例如,在使用默认值 60 时,超时将为 60 秒。
从 10.1.0.3 开始,该公式更改为:
disktimeout_in_secs = MAX((3 * CSS misscount)/4, CSS misscount - 15) 如果再次使用 CSS misscount 的默认值 60,则超时将为 45 秒。
之所以进行此更改,主要是为了当节点出现故障时能够更快地重新配置集群。当在 10.1.0.2 中使用 CSS misscount 的默认值 60 时,我们将必须至少等待 60 秒才能超时,但从 10.1.0.3 开始,同一默认值 60 可以减少 15 秒,即 45 秒。
说来说去为什么总是围绕 CSS misscount 呢?正如我在前面指出的,我所执行的数据库创建过程(或对系统执行的其他高 I/O 负载操作)通常会因为 Oracle 集群件崩溃而出现故障。高 I/O 将导致 CSS 在尝试查询表决磁盘时的超时很长。超过计算的超时时,Oracle 集群件将崩溃。这在本文中是一种常见情况,因为我们使用的 FireWire 驱动器不是最快的。驱动器越慢,这种情况就越经常出现。
执行以下任务安装 Oracle 集群件:
$ cd ~oracle
验证 Oracle 集群件/CSS misscount 值
在“10g RAC 10.1.0.3 中的 CSS 超时计算”一节中,我曾指出需要将 CSS Misscount 值从其默认值 60 修改为 360(或更高)。在该节中,我介绍了完成此修改的方法,即先修改 root.sh 脚本,然后在集群中的每个节点上运行它。如果无法在 root.sh 脚本中修改 CSS misscount 值,您仍然可以通过使用
$ORA_CRS_HOME/bin/crsctl 程序执行此操作。例如,要获取 CSS misscount 的当前值,使用以下命令:
$ORA_CRS_HOME/bin/crsctl get css misscount
360
如果收到值 60,则将需要将它修改为 360,如下所示:
只启动集群中的一个节点。就我的示例而言,我将关闭 linux2 并只启动
linux1。
从一个节点 (linux1) 中,以 root 用户帐户的身份登录并键入:
$ORA_CRS_HOME/bin/crsctl set css misscount 360
重新引导此单个节点 (linux1)。 启动集群中的所有其他节点。
验证 Oracle 集群件安装
安装 Oracle 集群件后,可以运行几个测试来验证安装是否成功。在 RAC 集群的所有节点上运行下列命令。
检查集群节点
$ /u01/app/oracle/product/crs/bin/olsnodes -n
linux1 1
linux2 2
检查 Oracle 集群件自动启动脚本
$ ls -l /etc/init.d/init.*
-r-xr-xr-x 1 root root 1951 Oct 4 14:21 /etc/init.d/init.crs* -r-xr-xr-x 1 root root 4714 Oct 4 14:21 /etc/init.d/init.crsd* -r-xr-xr-x 1 root root 35394 Oct 4 14:21 /etc/init.d/init.cssd* -r-xr-xr-x 1 root root 3190 Oct 4 14:21 /etc/init.d/init.evmd*
4.3安装 Oracle 数据库软件RAC
仅在集群的一个节点上执行下列安装过程!Oracle 数据库软件将由 Oracle Universal Installer 安装到集群的所有其他节点。
成功安装 Oracle 集群件软件后,下一步是安装具有 RAC 的 Oracle 数据库 10g 第 2 版(10.2.0.1.0)。
就本示例而言,您在安装该软件时将不使用“Create Database”选项。而是将在安装后使用数据库创建助手 (DBCA) 创建数据库。
验证环境变量
启动 OUI 之前,应先从控制台以 root 运行 xhost 命令以允许建立 X Server 连接。然后,取消 ORACLE_HOME 变量的设置并确认 RAC 集群的每个节点定义了唯一的 ORACLE_SID。还应确认我们是以 oracle 用户帐户登录的:
以 oracle 登录
# xhost +
access control disabled, clients can connect from any host
# su - oracle
取消 ORACLE_HOME 的设置
$ unset ORA_CRS_HOME
$ unset ORACLE_HOME
$ unset ORA_NLS10
$ unset TNS_ADMIN
验证 linux1 上的环境变量
$ env | grep ORA
ORACLE_SID=orcl1
ORACLE_BASE=/u01/app/oracle
ORACLE_TERM=xterm
验证 linux2 上的环境变量
$ env | grep ORA
ORACLE_SID=orcl2
ORACLE_BASE=/u01/app/oracle
ORACLE_TERM=xterm
安装 Oracle 数据库 10g 第 2 版软件
使用以下命令安装 Oracle 数据库 10g 第 2 版软件:
$ cd ~oracle
创建 Oracle 集群数据库
数据库创建过程应只在集群的一个节点上执行!
我们将使用 DBCA 创建集群化数据库。
在执行 DBCA 前,确保为 $ORACLE_BASE/product/10.2.0/db_1 环境正确设置了 $ORACLE_HOME 和 $PATH。
在试图开始创建集群化数据库之前,还应确保已安装的所有服务(Oracle TNS 监听器、Oracle 集群件进程等)正在运行。
创建集群化数据库
要开始数据库创建过程,运行以下命令:
# xhost +
access control disabled, clients can connect from any host
# su - oracle
第三章 成功应用案例
广西区人民医院实现服务器集群技术的成功案例。网络拓扑图如下:
该方案中,IX5000作为核心存储设备,通过IP SAN交换机与局域网多台服务器建立连接。服务器通过普通千兆网卡或iSCSI HBA卡接入IP SAN。EX1000作为备份存储实时备份主存储上的数据,从而实现了整个医院数据的集中管理和备份。同时,分别用两台服务器对HIS系统做RAC,用两台服务器对电子病历系统做RAC,从而达到业务分流的效果。再通过Oracle数据库企业版自身集成的Data Guard容灾功能将两组RAC的数据备份到EX1000上,确保数据万无一失。
2、技术方案
第一章 概述
1.1. 需求分析
随着互联网技术、通信技术的快速发展,各行各业信息化建设也从通常的文字录入、办公自动化发展到业务活动的信息化,为了满足不同应用的需求,基于互联网的应用模型和计算模型得到了广泛的应用。PC服务器随着CPU的推陈出新和整体结构的不断完善,凭借其强大的性能优势和技术特点在越来越多的关键业务中发挥了重要的作用。
集群就是PC服务器应用在关键业务的技术保障。在三层架构应用系统的接入层,多台PC服务器构建的负载均衡集群系统可以为业务系统提供足够的接入能力;在三层架构应用系统的后端,多台高性能的PC服务器构建的数据库集群系统可以提供强大的数据处理性能,为业务系统提供强劲、稳固的后台系统。基于集群技术的PC服务器平台凭借价格优势和强大的性能保证取代部分小型机成为许多关键业务的首选。
随着各药店的数据量越来越大,数据查询和计算等业务越来越复杂,它需要一个高性能的超级计算机才能在特定的时间内完成大量的计算和数据的交换。由PC服务器和高性能计算集群是满足要求的首选。根据不同的特定计算内容和性能要求的不同由几台到上百台PC服务器通过内部高速互连设备连接构成的高性能计算集群系统已大量应用于生产研究的实际应用中。
本次工程的总体任务如下:
方案应以“先进、实用、经济、合理,用管两便、安全可靠,易于扩展”的指导思想为原则,采用先进成熟的主流技术,充分考虑新建系统的可扩充性和与原有系统的兼容性,并体现科学规划、合理布局、预留充分、应用方便的特点,达到现代化、高效、舒适、安全、节能的人文办公环境的要求。
服务器集群系统建设应该符合如下要求:
1.1.1 保证数据库可靠性
Oracle 数据库以其稳定性著称。真正应用集群将这一优点发扬光大,能够以单点故障方式移除服务器。如果一个实例故障,集群中的其它实例将仍然保持运行和活动状态。
1.1.2 具备快速恢复能力
Oracle 数据库包含许多有助于从各类故障中轻松恢复的功能。如果RAC 数据库中的一个实例出现故障,集群中的另外一个实例将察觉到这一故障,随后自动进行故障恢复。利用快速应用程序通知,快速连接故障转移和透明应用程序故障切换这三个功能,应用程序可以很方便地掩藏组件故障,使用户无法察觉。
1.1.3 支持错误检测和业务持续运行
Oracle 集群件自动监控 RAC 数据库并可对环境中的错误进行快速检测。在用户不知不觉中自动完成故障恢复。使用快速应用程序通知功能,应用程序能够在集群组件故障出现时立即得到通知,然后将事务切换至无故障节点,从而掩藏这一故障,让用户无法察觉。使用真正应用集群,在计划和意外停机期间仍可持续提供服务。如果一个节点(或实例)出现故障,数据库将仍然保持运行状态,应用程序仍可访问数据。大多数的数据库维护操作可在不中断运行的情况下完成,并且对用户透明。其它维护任务可以通过滚动方式完成,所以可将应用程序中断时间降至最少,或完全消除。快速应用程序通知和快速连接故障切换可帮助应用程序达到服务水平和掩藏组件故障。
1.1.4 高性价比
满足应用的同时,高性价比是集群系统建设的不二选择
最后,我们强调,系统设计要符合现在和未来3~5年内的需求,不能盲目追求大而全,以最少的投资创造实际需要的功能。
第二章 服务器集群系统建设规划
2.1. 建设原则
服务器集群系统设计将严格遵守各种相关的技术原则,遵循各种相关的技术标准和规范,整个集群系统设计严格按照以下原则进行:
先进性和实用性
采用先进成熟的技术满足内部应用系统的需求,兼顾其他相关的管理需求,尽可能采用先进的技术以适应更高的数据、语音、视频(多媒体)等业务处理需要,使整个系统在相当一段时期内保持技术的先进性,以适应未来信息化的发展的需要。
安全性和可靠性
为保证各项业务应用,集群系统必须具有高可靠性,尽量避免系统的单点故障。要对网络结构、网络设备等各个方面进行高可靠性的设计和建设。在集群系统设计上应采用硬件备份、冗余等可靠性技术提高整个系统的可靠性。
灵活性和可扩展性
集群系统是一个不断发展的系统,所以它必须具有良好的灵活性和可扩展性,能够根据不断深入发展的需要,方便的扩展网络覆盖范围、扩大数据存储容量和提高整个系统的应用功能。具备支持多种应用系统的能力,提供技术升级、设备更新的灵活性。
开放性和互连性
具备与多种协议计算机通信网络互连互通的特性,确保本集群系统的基础设施的作用可以充分的发挥。在结构上真正实现开放,基于开放式标准,包括各种局域网、广域网等,坚持统一规范的原则,从而为未来的发展奠定基础。
可管理性
随着业务的不断发展和数据量的不断增加,数据库管理的任务必定会日益繁重。所以在集群系统设计中,必须建立一套全面的数据库集群系统管理解决方案。集群系统中服务器最好采用统一高性能的,操作系统采用统一高安全性的,数据库采用
统一高效兼容性的,实现统一的管理。最终能够实现监控、监测整个集群系统的运行情况,可以迅速确定系统故障等。
2.1.1 集群系统资源的高可用性
集群系统的建设关注整体投资回报,系统资源与应用的实用性是集群系统建设的根本,在此基础上考虑集群系统的可靠性、可扩展性、安全性以及可管理性。
提供永不中断的服务:
真正的集群系统必然能提供服务的高可度可用性。也就是说,系统对外是一个单一的逻辑映像,但是内部有高度的容错实现,能在某一节点出现错误的情况下,系统的服务不停止,并且能在不中断整个系统服务的情况下,修复出现错误的节点,使其重新加入集群中,继续提供服务。
2.1.2 集群系统的高可靠性
集群系统由于运行各个药店的业务系统,需要保证数据库的正常运行,不因网络单点的故障或变化引起业务的瞬间质量恶化甚至内部业务系统的中断,这点十分重要。集群系统作为数据处理及转发中心,应充分考虑可靠性。
数据库系统的可靠性增强:
目前的数据库系统大多采用双数据库服务器,采用串行的连接方式,假设一台数据库服务器出现问题的几率为0.01%,那么整个数据库集群出现问题的概率至少 应该是0.01% x 2;而真正的数据库集群系统由于应用了并行的连接方式,假设一台数据库服务器出现问题的几率为0.01%,两台数据库构成的数据库集群出错的概率就是 0.01% x 0.01%。所以可以看出,与目前数据库系统的机构相比,并行的数据库集群可以显著增强系统的可靠性。
2.1.3 集群系统的可伸缩性
Oracle 真正应用集群提供了独一无二的应用程序伸缩技术。传统上,当服务器容量不足时,我们会使用更大的新服务器来替换它。但服务器容量越大,其价格也愈加昂贵。而对于使用了 RAC 的数据库,我们可选择其它方法进行增容。原先运行
于大型 SMP 服务器上的应用程序可移植到小型服务器集群中运行。或者,您也可以选择保留现有硬件的投资,在集群中加入新服务器(或创建一个集群)来增加容量。通过 Oracle 集群件和 RAC 向集群中添加服务器时并不需要停机,且在启动新实例后,应用程序就可立即利用这些增加的容量。集群中的所有服务器必须使用同一操作系统和相同版本 Oracle 软件,但其容量不需要一样。现在,客户可以根据自己的需要来选择集群,可以是由每台服务器含 2 个 cpu 的普通服务器组成的集群,也可以是每台服务器含 32 或 64 个 cpu 的服务器组成的集群。
2.1.4 集群系统的高安全性
网络的发展趋势是基于Internet Web技术的开放网络化系统。这不仅带来了新的巨大的使用方便,同时也带来了不断增加的复杂应用及信息技术的挑战,因而安全是集群系统建设中要考虑的一个关键因素。
数据集可扩性,任何时刻同时拥有多份一致的数据集。
这种高数据可靠性,只有用并行同步事务复制的方法才能做到。整个系统在任何时刻具有多个一致的数据集,这样一旦某一数据集遭到破坏,还有剩余的数据和数据库继续提供正常的服务。
2.1.5 集群系统的可管理性
随着网络中设备逐渐增多,网络技术日趋复杂,网络管理的重要性越来越明显——网络的复杂导致系统运行的不确定因素增加,可靠性降低,“宕机”时间变长且带来的损失越来越大,而往往由于平时对网管的忽略,缺乏受过专业培训的网络管理人员,也缺乏综合的网管解决方案,因而发生问题时无从下手,这才意识到网管的重要。作为一套考虑完善、可靠性要求极高的系统,当然不希望有“亡羊补牢”的情况发生,因此集群系统易管理性是必不可少的考虑因素之一,从设备本身操作系统所具备的一些网管功能,到简单的网络管理工具,甚而功能强大的大型数据库管理系统,用户可根据自身的实际应用和资金安排,循序渐进,逐步实现全面集群系统管理功能。
与传统的单一应用系统不同,服务器集群系统集中了各药店数据库资源。在这
样的一个大量数据集中管理环境中,网络从承载单一的数据到多种不同的应用,如何合理分配利用集群系统资源,保障关键性业务的管理要求成为网络规划管理人员不能回避的问题。
2.2. 服务器集群系统方案简介
2.2. 1此次方案设计拓扑如下图:
方案规划
在两台浪潮服务器上安装LINUX操作系统,在LINUX 5.0上安装ORACLE 10G RAC,当Oracle10gRAC集群的任何一个服务器节点出了问题,整个应用不会停止,不存在切换时间问题,整个系统可以高效稳定的运行,非常适合用户对整个系统高可用性极强的要求。
2.3.
充分考虑集群系统建设的特点,结合用户的实际情况。我们建议从下面几个方面设计来保证用户整个服务器集群系统的高可靠性,高可用性,易扩展性,开放性,安全性,可管理性和实用性。
方案设计思想:
2.3.1 服务器操作系统选择
本次用户采购的是PC系列服务器,目前在PC 服务器上可以应用的服务器操作系统,包括WINDOWS NT/2000/2003系列,以及Linux系列操作系统。我们在此次项目中,我们选择最新版的RedHat Advance Server 5.0作为集群操作系统平台。 对比Linux和微软最新服务器操作系统window2003区别:
(1)安全性对比
Linux操作系统的安全性比Windows系列的操作系统好很多,因为Linux与UNIX的关系太密切了,实际上Linux就是UNIX设计的克隆(Clone),Linux也可以算是Unix家族中的一员。Linux内核吸收了UNIX超过30年的研究经验,在安全方面属于最高级别的操作系统。但是售价又比商业的UNIX系统低很多。对使用Windows的人来说,病毒,木马无处不在,各种各样的新型病毒与木马层出不穷,给系统管理员造成了非常大的麻烦和工作压力!Linux由于其继承了UNIX的优秀设计,具有健壮的先天病毒免疫能力,至今Linux操作系统上的原生的病毒几乎没有。
(2)稳定性对比
Linux的稳定性比Windows系列的操作系统好很多,人们会经常提及一个问题为什么Linux几乎不崩溃,Linux的稳定性是由于它没有像Windows操作系统一样内核如此庞大、漏洞无穷。资料表明,Linux与其它Unix系统和大型操作系统如VMS、IBM大型机等一样具有相同的可靠性。原因并不难以得到,系统的稳定性主要取决于系统设计的结构。计算机硬件的结构自从1981设计开始就没有作特别大的改动,而连续向后兼容性使那些编程风格极差的应用软件勉强移植到Windows的最新版本,这种将就的软件开发模式极大地阻碍了系统稳定性的发展。
Linux的稳定性并不是一个意外的例外,稳定性是所有大型计算机操作系统所具有的共性。Linux所共享的Unix设计体系是经过长期实践考验的,Linux吸取了Unix系统30多年发展的经验,Linux操作系统体现了最现代化操作系统的设计理念和最经得住时间考验的设计方案。
(3)性能对比
Linux的性能在众多的服务应用上好于Windows系列的操作系统,许多的独立机构针对Linux和Windows NT、Linux和其它流行的Unix作了大量的评测。除了一次评测以外,所有的测试都显示不但在单处理器上击败了NT,而且在NT自认为其多线程结构扩展性更强的多处理器系统中击败了NT。Linux能通过使用重量级处理来代替NT使用的轻量级线程而获得优越的性能,Linux中的进程复制极为有效,几乎消除了使用线程的需要。令人惊奇的是,Linux恰好能击败基于SPARC硬件平台上的Solaris,虽然仅仅在单处理器的机器上。有一项分析揭示了Linux性能优越的主要原因,Unix系统(包括Linux系统在内)把图形处理为一个用户级的应用,图形可根据需要被选择是否运行。Linux系统中存在适度复杂的图形界面,但是它们并没有与操作系统的内核紧紧捆绑在一起,图形界面可按需求关闭。
Oracle原生于UNIX家族,Oracle数据库从诞生之日起就与Unix架构的操作系统联系在一起,Oracle在Unix架构上的操作系统上有着先天的性能优势.,就连IBM和Oracle都全力支持Linux,发行了专门的Linux版本的数据库版本,各种评测和报告表明,Linux数据库方面的服务处理性能,不仅远高于Windows的处理性能,甚至高于了部分商业UNIX的性能。举个例子,比如说Linux原生UNIX的异步I/O模式,这种模式在Windows操作系统是没有的,这种模式的应用在Oracle得到了很好的体现,极大的提高了整个Oracle数据库的综合性能。
2.3.2 数据库系统选择
Oracle10g是Oracle公司最新稳定一代的数据库平台,不管从性能,安全,扩张性方面比起Oracle9I的平台有了很大的提高。
Oracle10gRAC集群中采用了OCFS2集群文件系统,对比Oracle9iRAC集群中的OCFS文件系统,Oracle10g这个版本不论从稳定性还是性能,都远远高于Oracle9iRAC集群系统。
2.3.3 数据集群软件选择
在此次项目中,针对项目规划和目标,我们选用了Oracle10gRAC集群作为本次项目的集群解决方案,理由如下:
(1)项目背景
原有各个药店的数据都是独立的,采用定时上传数据的方式传到中心服务器,中心服务器采取双机热备的方式,这个模式的缺点非常明显,主要体现在以下几个方面:
a. 数据分散,管理维护困难
b. 由于是定时上传数据,所以无法达到实时管理数据
c. 各个药店由于服务器性能参差不齐,访问和统计数据效率较低
d. 中心服务器由于采取传统双机热备的方式,实际上只有一台服务器在工作,性能
上无法保证处理日益增加的数据量。并且,热备方式当主服务器宕机时,备份服务器接管需要一定的切换时间。
(2)项目规划与目标
a. 实现数据统一管理
b. 实现实时管理数据
c. 提高原有系统的数据并发处理性能
d. 改变原有服务器的双机热备方式,提高整个服务器集群的工作性能,服务器集群
的节点数量可以不断扩展,不影响原来的集群结构,将原有的双机热备切换时间,减少至零。
(3)OracleRAC集群描述
Oracle RAC 集群是当今最先进的集群技术,Oracle RAC集群具有延展性,而且可支援各种硬件平台及任何数目的集群节点;Oracle RAC集群技术兼具高延展效能(多节点)与Failover (失效切换)能力两项特性,它同时也是网格计算的基础。
从性能而言,Oracle10g将RAC集群技术发挥到了极点,不但将原有的高延展性能(可以增加多个服务器节点提高性能)技术继承下来,更是真正意义实现了网格式计算,网格计算指的是将多个Oracle RAC集群连接在一起,让数量规模庞大的电
脑系统与储存系统协同运作,进而提供惊人的生产力。Oracle公司最新一次在RAC下性能测试,创造了性能最优的世界记录。原因很简单,由于Oracle10gRAC集群的每个节点均是可用的,节点之间共享Oracle专用的内存缓冲区,性能极高。并非传统意义上的双机热备技术(只有一台服务器在工作,另一台在休眠状态)所能比较。
从高可用性来说,Oralce10gRAC将Failover (失效切换)的技术继承并更方便维护,Oracle10gRAC技术是Oracle公司的原生技术,无需第三方软件支持,对比symantec Veritas这样的第三方软件有着先天的优势。当Oracle10gRAC集群的任何一个服务器节点出了问题,整个应用不会停止,不存在切换时间问题,整个系统可以高效稳定的运行,非常适合用户对整个系统高可用性极强的要求。
总结来说,OracleRAC有几项突出优势
(1) 由于集群中所有节点都参与运算,性能可大幅提高。
(2) 可以实现多台廉价的服务器共同组建一个OracleRAC集群。无需由于数据量不断增加,为提高处理能力而被迫采购更高性能的昂贵服务器。从而保护用户的原有投资。
(3) 由于是集群工作模式,出现故障点后,无需等待切换时间,大大增加了整个业务系统的高可用性。
(4) 服务器集群可扩展节点数量,最多的工作节点高达32个,传统的双机热备模式只能支持两个服务器。
(5) 由于此次项目要求数据实现统一管理和实时管理,要求整个服务器系统的处理并发事务能力大大增强,传统的单节点处理模式,处理并发访问的能力有限,OracleRAC多节点共同处理事务的架构,大大增加了整个服务器系统的事务并发处理能力。
2.4. 具体实施步骤
(一) 安装Redhat AS Linux
1.使用第一张 CD 启动服务器。
您可能需要更改 BIOS 设置,以允许从 CD 启动。
2.启动屏幕上出现时在底部显示 boot:。
选择 Enter,从控制台上执行图形安装。(对于其他安装方法和选项,请参阅 Red Hat 安装指南。)
安装程序扫描硬件,短暂显示 Red Hat 闪屏,然后开始显示一系列屏幕提示。 3.选择语言 选择简体中文。 4.配置键盘 接受默认值。 5.欢迎屏幕 单击 下一步。 6.配置鼠标 接受默认值。 7.安装类型 选择 Custom。 8.设置磁盘分区
本文不介绍磁盘分区的详细方法,而是假设您熟悉磁盘分区方法。
(警告:对磁盘进行错误分区是删除硬盘上所有内容的最可靠、最快捷的方法之一。如果不确定如何分区,请先停下来,找人帮帮您,否则您将冒丢失数据的危险!) 本文使用默认分区方案(文件系统均为 ext3),须注意如下一点:
交换分区 — 将此分区大小至少设置为系统 RAM 的两倍,但32位系统不要超过 2GB。如果需要大于 2GB 的交换空间,则创建多个交换分区。 9.配置启动加载程序 接受默认值。 10.配置网络
此时配置两个网卡,用规划好的两个地址,一个公网地址,一个私有地址。 使用静态 IP 地址配置数据库服务器。单击 Edit。
出现一个弹出窗口。取消选中 Configure using DHCP 复选框,并输入服务器的 IP 地址和网络掩码。确保选中 Activate on boot,然后单击 OK。
在 Hostname 框中,选择 manually 并输入主机名dbrac1……集群依次类推。 在 Miscellaneous Settings 框中,输入其他网络设置。 11.配置防火墙
本次将不配置防火墙。选择 No firewall。 12.其他语言支持
接受默认值。 13.选择时区
选择适合您区域的时间设置。将系统时钟设置为 UTC 对服务器而言通常是一个很好的做法。为此,单击 System clock uses UTC。 14.设置 Root 口令
输入 root 的口令,并再次输入以进行确认。 15.选择程序包组 最下面选择全选。 单击 下一步 继续操作。 16.准备安装 单击 下一步。 17.安装程序包
软件将被复制到硬盘并被安装。根据提示更改光盘,然后在安装完成时单击 下一步。 18.配置图形界面 (X)
接受默认值,除非安装程序无法识别您的视频卡。如果您的视频卡无法被识别,则将无法继续操作。 19.配置监视器
如果安装程序正确识别了您的监视器,则接受默认值。否则,从列表中选择一个兼容的监视器。 20.定制图形配置 接受默认值。 21.恭喜
从系统中取出安装介质,然后单击 下一步。 22.系统自动重新启动并显示一个新的欢迎屏幕。 单击下一步。 23.许可协议
阅读许可协议。如果同意其中的条款,则选择 Yes, I agree to the License Agreement 并单击下一步。 24.日期和时间 设置日期和时间。
如果要使用 NTP 服务器(推荐),则选择 Enable Network Time Protocol 并输入 NTP 服务器的名称。 25.用户帐户
此时不要为 oracle 创建帐户。本部分稍后将介绍如何创建 oracle 帐户。 26.Red Hat Network
如果要立即使用或激活 Red Hat Network 帐户,则接受默认值,单击 Next 并遵循 Red Hat 产品附带的产品激活说明。
如果不能连到网络,此时可不必激活,随便填上,检测网络不通,跳过即可 27.其他 CD 单击下一步。 28.完成设置 单击下一步。
29.出现一个图形登录屏幕。
30.恭喜!您的 Linux 软件现已安装完毕。 验证安装 验证内核版本: # uname -r
2.6.9-22.ELsmp
验证已安装的程序包:
# rpm -q make gcc gcc-c++ libaio libaio-devel make-3.80-184.1 gcc-3.3.3-43.24 gcc-c++-3.3.3-43.24 libaio-0.3.98-18.3
libaio-devel-0.3.98-18.3 注:应显示更高版本
(二) 针对Oracle配置redhat
2.1 验证系统要求
要验证系统是否满足 Oracle 10g 数据库的最低要求,以 root 用户身份登录并运行以下命令。
要查看可用 RAM 和交换空间大小,运行以下命令: grep MemTotal /proc/meminfo grep SwapTotal /proc/meminfo 例如:
# grep MemTotal /proc/meminfo MemTotal:512236 kB
# grep SwapTotal /proc/meminfo SwapTotal:1574360 kB
所需最小 RAM 为 512MB,而所需最小交换空间为 1GB。对于 RAM 小于或等于 2GB 的系统,交换空间应为 RAM 数量的两倍;对于 RAM 大于 2GB 的系统,交换空间应为 RAM 数量的一到两倍。
Oracle 10g 软件还需要 2.5GB 的可用磁盘空间,而数据库则另需 1.2GB 的可用磁盘空间。/tmp 目录至少需要 400MB 的可用空间。 2.2 内核参数
1.内核参数
在/etc/sysctl.conf中编辑: kernel.shmall = 2097152 kernel.shmmax = 2147483648 kernel.shmmni = 4096
kernel.sem = 250 32000 100 128 fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000 net.core.rmem_default = 262144 net.core.rmem_max = 262144 net.core.wmem_default = 262144 net.core.wmem_max = 262144
然后用执行/sbin/sysctl –p
2.hangcheck-timer设置
RAC节点间通过CSS来判断通信状态,因此需要设定定时器来触发判断。该定时器就是linux内核自带的hangcheck-timer。 具体操作:
在/etc/rc.local中加入(数值以具体情况而定,以下是默认值) modprobe hangcheck-timer hangcheck_tick=30 hangcheck_margin=180
表示,每隔30秒检查一下节点状态,如果180秒内仍没有反应,则重启该节点。这也就是说,检查的间隔最长为30+180秒,如果超过这个时间,则系统重启。 Tip:如果系统尚不稳定,可将数值设置的大一些,这样可以有充分的时间来修复系统,否则系统会进入循环重启状态。
2.3 添加oracle用户和组 # /usr/sbin/groupadd oinstall # /usr/sbin/groupadd dba
# /usr/sbin/useradd -m -g oinstall -G dba oracle # id oracle
uid=1000(oracle) gid=1000(oinstall) groups=1000(oinstall),6(disk),1001(dba)
设置 oracle 帐户的口令: # passwd oracle
Changing password for user oracle. New password:
Retype new password:
passwd:all authentication tokens updated successfully.
设置oracle的shell限制:
在/etc/security/limits.conf文件中加入: oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 2.4 网络设置
注:此处使用的公共地址为规划好后的地址,不能为临时地址(除非试验安装) RAC要求机群内的每个节点至少有两块网卡,一个设置为公用(公网),对外提供服务;一个设置为私用(专用),提供节点内的告诉传输。此外还需要为公用网卡配置一个虚拟地址,oracle需要借此为用户提供透明的高可用服务。具体介绍如下: 专用网络
每个集群节点通过专用高速网络连接到所有其他节点,这种专用高速网络也称为集群互联或高速互联 (HSI)。 Oracle 的 Cache Fusion 技术使用这种网络将每个主机的物理内存 (RAM) 有效地组合成一个高速缓存。 Oracle Cache Fusion 通过在专用网络上传输某个 Oracle 实例高速缓存中存储的数据允许其他任何实例访问这些数据。 它还通过在集群节点中传输锁定和其他同步信息保持数据完整性和高速缓存一致性。
专用网络通常是用千兆以太网构建的,但是对于高容量的环境,很多厂商提供了专门为 Oracle RAC 设计的低延迟、高带宽的专有解决方案。 Linux 还提供一种将多个物理 NIC 绑定为一个虚拟 NIC 的方法(此处不涉及)来增加带宽和提高可用性。 公共网络
为维持高可用性,为每个集群节点分配了一个虚拟 IP 地址 (VIP)。 如果主
机发生故障,则可以将故障节点的 IP 地址重新分配给一个可用节点,从而允许应用程序通过相同的 IP 地址继续访问数据库。 修改/etc/hosts加入下面内容:
127.0.0.1 localhost.localdomain localhost # public address
10.45.170.17 dbrac1 10.45.170.18 dbrac2 # private address
172.168.0.17 dbrac1-eth0 172.168.0.18 dbrac2-eth0 # virtual address
10.45.170.117 dbrac1-vip 10.45.170.118 dbrac2-vip
虚拟地址可以随便起一个(保证同一个网段),在安装RAC的时候,vipca会自动将虚拟地址绑定在公共网卡上的。 2.5 为用户等效性设置SSH 为用户等效性设置SSH
在安装 Oracle RAC 10g 期间,OUI 需要把文件复制到集群中的其他主机上并在其上执行程序。 为了允许 OUI 完成此任务,必须配置 SSH 以启用用户等效性。 用 SSH 建立用户等效性就提供了一种在集群中其他主机上复制文件和执行程序时不需要口令提示的安全方式。
第一步是生成 SSH 的公共密钥和专用密钥。 SSH 协议有两个版本;版本 1 使用 RSA,版本 2 使用 DSA,因此我们将创建这两种类型的密钥,以确保 SSH 能够使用任一版本。 ssh-keygen 程序将根据传递给它的参数生成任一类型的公共密钥和专用密钥。
当您运行 ssh-keygen 时,将提示您输入一个用于保存密钥的位置。 当提示时只需按 Enter 接受默认值。 随后将提示您输入一个口令短语。 输入您能记住的口令,然后再次输入该口令进行确认。 当您完成以下步骤后,在 ~/.ssh 目录中将会有四个文件: id_rsa、id_rsa.pub、id_dsa 和 id_dsa.pub。 id_rsa 和 id_dsa 文件是您的专用密钥,千万不要告诉任何人。 id_rsa.pub 和 id_dsa.pub 文件是您的公共密钥,必须将其复制到集群中其他每个主机上。 在每个主机上,以 oracle 用户身份登录: $ mkdir ~/.ssh
$ chmod 755 ~/.ssh
$ /usr/bin/ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/oracle/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again:
Your identification has been saved in /home/oracle/.ssh/id_rsa. Your public key has been saved in /home/oracle/.ssh/id_rsa.pub. The key fingerprint is:
4b:df:76:77:72:ba:31:cd:c4:e2:0c:e6:ef:30:fc:37 [email protected] 注意:本例中此处一路按回车选择默认
$ /usr/bin/ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/oracle/.ssh/id_dsa): Enter passphrase (empty for no passphrase): Enter same passphrase again:
Your identification has been saved in /home/oracle/.ssh/id_dsa. Your public key has been saved in /home/oracle/.ssh/id_dsa.pub. The key fingerprint is:
af:37:ca:69:3c:a0:08:97:cb:9c:0b:b0:20:70:e3:4a [email protected] 注意:本例中此处一路按回车选择默认
现在,必须将每个主机上的公共密钥文件 id_rsa.pub 和 id_dsa.pub 的内容复制到其他每个主机的 ~/.ssh/authorized_keys 文件中。 使用 ssh 将每个文件的内容复制到 ~/.ssh/authorized_keys 文件。 请注意,当您使用 ssh 第一次访问远程主机时,其 RSA 密钥将是未知的,从而将提示您确认是否希望连接该主机。 SSH 将记录该远程主机的 RSA 密钥,并在以后连接该主机时不再做出相关提示。 只需在第一个主机上,以 oracle 用户身份登录(复制本地帐户的密钥,以便连接本地主机的 ssh 能够起作用):
(如果您要剪切和粘贴这些命令,则分别运行它们。 SSH 每次会提示输入 oracle 的口令,如果同时粘贴这些命令,则第一个命令在提示输入口令之前刷新输入缓冲区,从而导致其他命令将会丢失。)
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys $ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
$ ssh oracle@dbrac2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys The authenticity of host 'dbrac2 (10.49.9.100)' can't be established.
RSA key fingerprint is d1:23:a7:df:c5:fc:4e:10:d2:83:60:49:25:e8:eb:11.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'dbrac2,10.49.9.100' (RSA) to the list of known hosts. oracle@dbrac2's password:
$ ssh oracle@dbrac2 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys oracle@dbrac2's password:
$ chmod 644 ~/.ssh/authorized_keys
要对第二个主机做同样的处理。请注意,这次有的SSH不会提示您输入oracle的口令。这是因为第一个主机(dbrac1)现在知道了第二个主机的公共密钥,而SSH现在使用的是一种不同的认证协议。
建立用户等效性
如果一切均设置正确,则您现在就可以使用 ssh 在其他集群主机上不必输入口令而登录、执行程序和复制文件了。 通过在远程集群主机上运行诸如 date 等简单命令来验证用户等效性: $ ssh dbrac2 date
Sun Jun 27 19:07:19 CDT 2004
测试每个方向上所有服务器的连通性是非常重要的。这样会确保当 OUI 在 CRS 和数据库软件安装期间试图复制文件时不会出现类似以下的消息。 该消息只有在远程节点上第一次执行操作时才会出现,因此通过测试连通性,您不仅确保了远程操作的正常运行,还完成了初始的安全密钥交换。
The authenticity of host 'dbrac2 (10.49.9.100)' can't be established.
RSA key fingerprint is 8f:a3:19:76:ca:4f:71:85:42:c2:7a:da:eb:53:76:85. Are you sure you want to continue connecting (yes/no)? yes
注意: 以上步骤执行完以后,需要执行和本机建立等效性,否则安装CRS时也会出错,在每个节点上分别执行: $ ssh hostname
(此处hostname分别为dbrac1、dbrac2)
(三) 配置共享磁盘
配置共享磁盘的方法有三种: Oracle 集群文件系统 (OCFS)、自动存储管理器 (ASM)、原始设备 (RAW) 安装 OCFS2
我将把 OCFS2 文件安装到两台单处理器计算机中。安装过程只需要您以 root 用户帐户在集群中的所有节点上运行以下命令即可:
$ su -
# rpm -Uvh ocfs2-2.6.9-11.0.0.10.3.EL-1.0.4-1.i686.rpm \ ocfs2console-1.0.2-1.i386.rpm \ ocfs2-tools-1.0.2-1.i386.rpm
Preparing... ########################################### [100%]
1:ocfs2-tools ########################################### [ 33%]
2:ocfs2-2.6.9-11.0.0.10.3########################################### [ 67%]
3:ocfs2console ########################################### [100%] 禁用 SELinux
向 RHEL4提供一个建议,即 OCFS2 当前无法在启用 SELinux 的情况下运行。如果您使用的是 RHEL4,则您需要禁用 SELinux(使用工具 system-config-securitylevel)才能执行 O2CB 服务。
要禁用 SELinux,运行“Security Level Configuration”GUI 实用程序: # /usr/bin/system-config-securitylevel &
这将显示以下屏幕:
图 6 Security Level Configuration 打开屏幕
现在,单击 SELinux 选项卡并取消选中“Enabled”复选框。单击 [OK] 后,将显示一个警告对话框。只需单击“Yes”确认该警告。禁用 SELinux 选项后,屏幕现在应如下所示:
图 7: 禁用了 SELinux
在集群中的两个节点上进行此更改后,将需要重新引导每个节点以实施更改: # init 6
(四) 安装配置Oracle RAC
4.1 配置环境变量
编辑.bashrc设置 ORACLE_BASE 和 ORACLE_HOME 等环境变量
基本路径:
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
ORA_CRS_HOME=/u01/crs/oracle/product/10.2.0/crs_1
据oracle的安装文档要求,CRS的目录最好不是ORACLE_BASE的子目录,因为安装过程中会改变CRS的父目录的权限,这会影响ORACLE的安装。在按以
上要求生成对应目录之前,需检查所在磁盘的空间是否满足安装要求,确定之后生成目录,并将相关环境变量设置在oracle用户的profile中。用oracle帐号编辑 /home/oracle/.bashrc
oracle用户的profile文件.bashrc内容:
# .bashrc
# User specific aliases and functions
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export ORA_CRS_HOME=/u01/crs/oracle/product/10.2.0/crs_1
export ORACLE_SID=dbrac1
export ORACLE_TERM=xterm
export LD_ASSUME_KERNEL=2.4.1
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib
PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin:$ORA_CRS_HOME/bin:/sbin export PATH
然后执行
$ source .bash_profile
使环境变量生效
注意:ORACLE_SID每台机器不一样,如dbrac1的SID为dbrac1,dbrac2的SID为dbrac2,以此类推。
对LD_ASSUME_KERNEL环境变量的说明:
这个参数实际上是为了避免Linux上的 NPTL (Native POSIX Thread Library) 和Oracle应用不兼容的问题. 设定 LD_ASSUME_KERNEL为2.4.1表示使用旧有的 "Linuxthreads with floating stacks"
4.2安装CRS集群软件
仅在集群的一个节点上执行下列安装过程!Oracle Universal Installer 将把 Oracle 集群软件安装到集群中的所有其他节点。
您现在就可以安装该环境的“集群”部分:Oracle 集群件了。在上一节中,您将 Oracle 集群件的安装文件下载并解压缩到 linux1 的目录
/u01/app/oracle/orainstall/clusterware 中。这是唯一需要执行安装的节点。
在 Oracle 集群件的安装过程中,系统将提示您提供相关的并要在 RAC 集群中配置的节点。当实际的安装开始时,配置的远程访问把所需的软件复制到所有节点。 那 Oracle 集群件究竟是用来干什么的呢?
它包含所有集群和数据库配置元数据以及多个适用于 RAC 的系统管理特性。通过它,DBA 可以将一个 Oracle 实例(或多个实例)注册和调用到集群。在通常的操作中,Oracle 集群件将通过一种特殊的 ping 操作向集群中配置的所有节点发送消息(通常称作“心跳”)。如果对任何节点的心跳检测失败,则它将检查 Oracle 集群件配置文件(位于共享磁盘上)以辨别是节点故障还是网络故障。
安装 Oracle 集群件后,用于安装 Oracle 10g 数据库软件(下一节)的 Oracle Universal Installer (OUI) 将自动识别这些节点。与您将在本节中执行的 Oracle 集群件安装一样,Oracle 数据库 10g 软件只需要从一个节点中运行。OUI 将把此软件程序包复制到 RAC 集群中配置的所有节点。
Oracle 集群件共享文件
将把由 Oracle 集群件使用的两个共享文件存储到我们在前面创建的 OCFS2 文件系统中。这两个共享 Oracle 集群件文件是:
Oracle 集群注册表 (OCR)
o 位置:/u02/oradata/orcl/OCRFile
o 大小:~ 100MB
CRS 表决磁盘
o 位置:/u02/oradata/orcl/CSSFile
o 大小:~ 20MB
注意:对于此处的安装而言,无法将 ASM 用于两个 Oracle 集群件文件(OCR 或 CRS 表决磁盘)。问题是只有这两个文件就绪并可以访问后才可以启动 Oracle 实例。要使 ASM 可用,应首先运行 ASM 实例。可以将这两个共享文件存储到 OCFS2、共享的原始设备或其他供应商的集群化文件系统中。
验证环境变量
启动 OUI 之前,应先从控制台以 root 运行 xhost 命令以允许建立 X Server 服务器连接。然后,取消 ORACLE_HOME 变量的设置并确认 RAC 集群的每个节点定义了唯一的 ORACLE_SID。还应确认我们是以 oracle 用户帐户登录的:
以 oracle 登录
# xhost +
access control disabled, clients can connect from any host
# su - oracle
取消 ORACLE_HOME 的设置
$ unset ORA_CRS_HOME
$ unset ORACLE_HOME
$ unset ORA_NLS10
$ unset TNS_ADMIN
验证 linux1 上的环境变量
$ env | grep ORA
ORACLE_SID=orcl1
ORACLE_BASE=/u01/app/oracle
ORACLE_TERM=xterm
验证 linux2 上的环境变量
$ env | grep ORA
ORACLE_SID=orcl2
ORACLE_BASE=/u01/app/oracle
ORACLE_TERM=xterm
安装集群就绪服务
注意:Oracle RAC 10g 10.1.0.3 中的 CSS 超时计算 请注意,安装 Oracle 集群件软件后,您需要修改集群件的 CSS 超时值。这对 10.1.0.3 和更高版本来说更是如此,这是因为其 CSS 超时计算方法不同于 10.1.0.2。从 Linux 平台(包括 IA32、IA64 和 x86-64)上的 Oracle 10.1.0.3 开始,已发现因 CSS 后台程序超时引起的多个问题。这在过去一直是困扰我的一大难题,尤其是在创建数据库 (DBCA) 时。例如,数据库创建过程经常因以下错误而失败:ORA-03113:end-of-file on
communication channel。关键错误在日志文件
$ORA_CRS_HOME/css/log/ocssd1.log 中记录为:
clssnmDiskPingMonitorThread:voting device access hanging (45010
miliseconds)
实际上,问题源于慢速磁盘以及 CSS misscount 的默认值。CSS misscount 值表示在 CSS 删除节点前未收到的心跳数。CSS 使用该数值计算表决磁盘的 I/O 应被视为超时 的时间,从而将其终止以防止裂脑情况的出现。在 Linux 上,Oracle 10.1.0.2 和更高版本的 CSS misscount 的默认值为 60。但 10.1.0.2 版与 10.1.0.3 版的超时值(秒)计算公式并不相同。
10.1.0.2 的超时值计算公式如下:
time_in_secs > CSS misscount, then EXIT
例如,在使用默认值 60 时,超时将为 60 秒。
从 10.1.0.3 开始,该公式更改为:
disktimeout_in_secs = MAX((3 * CSS misscount)/4, CSS misscount - 15) 如果再次使用 CSS misscount 的默认值 60,则超时将为 45 秒。
之所以进行此更改,主要是为了当节点出现故障时能够更快地重新配置集群。当在 10.1.0.2 中使用 CSS misscount 的默认值 60 时,我们将必须至少等待 60 秒才能超时,但从 10.1.0.3 开始,同一默认值 60 可以减少 15 秒,即 45 秒。
说来说去为什么总是围绕 CSS misscount 呢?正如我在前面指出的,我所执行的数据库创建过程(或对系统执行的其他高 I/O 负载操作)通常会因为 Oracle 集群件崩溃而出现故障。高 I/O 将导致 CSS 在尝试查询表决磁盘时的超时很长。超过计算的超时时,Oracle 集群件将崩溃。这在本文中是一种常见情况,因为我们使用的 FireWire 驱动器不是最快的。驱动器越慢,这种情况就越经常出现。
执行以下任务安装 Oracle 集群件:
$ cd ~oracle
验证 Oracle 集群件/CSS misscount 值
在“10g RAC 10.1.0.3 中的 CSS 超时计算”一节中,我曾指出需要将 CSS Misscount 值从其默认值 60 修改为 360(或更高)。在该节中,我介绍了完成此修改的方法,即先修改 root.sh 脚本,然后在集群中的每个节点上运行它。如果无法在 root.sh 脚本中修改 CSS misscount 值,您仍然可以通过使用
$ORA_CRS_HOME/bin/crsctl 程序执行此操作。例如,要获取 CSS misscount 的当前值,使用以下命令:
$ORA_CRS_HOME/bin/crsctl get css misscount
360
如果收到值 60,则将需要将它修改为 360,如下所示:
只启动集群中的一个节点。就我的示例而言,我将关闭 linux2 并只启动
linux1。
从一个节点 (linux1) 中,以 root 用户帐户的身份登录并键入:
$ORA_CRS_HOME/bin/crsctl set css misscount 360
重新引导此单个节点 (linux1)。 启动集群中的所有其他节点。
验证 Oracle 集群件安装
安装 Oracle 集群件后,可以运行几个测试来验证安装是否成功。在 RAC 集群的所有节点上运行下列命令。
检查集群节点
$ /u01/app/oracle/product/crs/bin/olsnodes -n
linux1 1
linux2 2
检查 Oracle 集群件自动启动脚本
$ ls -l /etc/init.d/init.*
-r-xr-xr-x 1 root root 1951 Oct 4 14:21 /etc/init.d/init.crs* -r-xr-xr-x 1 root root 4714 Oct 4 14:21 /etc/init.d/init.crsd* -r-xr-xr-x 1 root root 35394 Oct 4 14:21 /etc/init.d/init.cssd* -r-xr-xr-x 1 root root 3190 Oct 4 14:21 /etc/init.d/init.evmd*
4.3安装 Oracle 数据库软件RAC
仅在集群的一个节点上执行下列安装过程!Oracle 数据库软件将由 Oracle Universal Installer 安装到集群的所有其他节点。
成功安装 Oracle 集群件软件后,下一步是安装具有 RAC 的 Oracle 数据库 10g 第 2 版(10.2.0.1.0)。
就本示例而言,您在安装该软件时将不使用“Create Database”选项。而是将在安装后使用数据库创建助手 (DBCA) 创建数据库。
验证环境变量
启动 OUI 之前,应先从控制台以 root 运行 xhost 命令以允许建立 X Server 连接。然后,取消 ORACLE_HOME 变量的设置并确认 RAC 集群的每个节点定义了唯一的 ORACLE_SID。还应确认我们是以 oracle 用户帐户登录的:
以 oracle 登录
# xhost +
access control disabled, clients can connect from any host
# su - oracle
取消 ORACLE_HOME 的设置
$ unset ORA_CRS_HOME
$ unset ORACLE_HOME
$ unset ORA_NLS10
$ unset TNS_ADMIN
验证 linux1 上的环境变量
$ env | grep ORA
ORACLE_SID=orcl1
ORACLE_BASE=/u01/app/oracle
ORACLE_TERM=xterm
验证 linux2 上的环境变量
$ env | grep ORA
ORACLE_SID=orcl2
ORACLE_BASE=/u01/app/oracle
ORACLE_TERM=xterm
安装 Oracle 数据库 10g 第 2 版软件
使用以下命令安装 Oracle 数据库 10g 第 2 版软件:
$ cd ~oracle
创建 Oracle 集群数据库
数据库创建过程应只在集群的一个节点上执行!
我们将使用 DBCA 创建集群化数据库。
在执行 DBCA 前,确保为 $ORACLE_BASE/product/10.2.0/db_1 环境正确设置了 $ORACLE_HOME 和 $PATH。
在试图开始创建集群化数据库之前,还应确保已安装的所有服务(Oracle TNS 监听器、Oracle 集群件进程等)正在运行。
创建集群化数据库
要开始数据库创建过程,运行以下命令:
# xhost +
access control disabled, clients can connect from any host
# su - oracle
第三章 成功应用案例
广西区人民医院实现服务器集群技术的成功案例。网络拓扑图如下:
该方案中,IX5000作为核心存储设备,通过IP SAN交换机与局域网多台服务器建立连接。服务器通过普通千兆网卡或iSCSI HBA卡接入IP SAN。EX1000作为备份存储实时备份主存储上的数据,从而实现了整个医院数据的集中管理和备份。同时,分别用两台服务器对HIS系统做RAC,用两台服务器对电子病历系统做RAC,从而达到业务分流的效果。再通过Oracle数据库企业版自身集成的Data Guard容灾功能将两组RAC的数据备份到EX1000上,确保数据万无一失。