oracle 12c 发布用很长一段时间了,虽然在近期部署了几套单实例oracle 12c,但一直都没有机会在生产环境实施12c rac,当然,既不能把现有的11g rac干掉,替换成12c rac,又没有新的项目找上来,但总不能等需要干活的时候再学习测试,未雨绸缪,正好从青龙那里化缘来一台配置不错的技嘉迷你pc,正好用它来做测试,安装上proxmox,虚拟出一堆系统,然后就有条件测试部署oracle 12c rac 。



Oracle实现负载均衡,完全不依赖于其它第三方工具,自己全部搞定,真是牛啊!部署oracle负载均衡高可用,实际上就是部署oracle RAC。在开始部署之前,得先做好规划。规划涉及到的主要有以下几个方面:

1、共享存储:是oracle RAC最关键的设施了,许多重要的数据文件、归档、仲裁等文件都存放于此,因此需要考虑可用性、容量、性能、成本等因素。在以前的多个项目中,我选用的存储多为外接阵列,双控制器、10000转2.5寸sas或者15000转3.5寸sas盘,插槽全部插满,不考虑短期扩容。

2、服务器:计算资源依托于服务器,也需要综合考虑可用性、性能及成本因素。在过去实施的一些项目中,一般采用1u机架式服务器,内存64G、多核心多线程cpu、双ssd盘(做raid容错)、四个网络接口卡。

3、网络规划:至少分两个网段,交换机独立(至少两个交换机),且为全千兆速率交换机,网线也要用机制六类线。说起这个网线,踩过一次坑,记忆深刻--一个网络color ticket的项目,服务器塞满了两个机柜,各类设施在当时都算是比较高端的。特别交代采购,一定要买机制网线。一帮人没日没夜的折腾,终于调试完毕,上线运行正常。可是没多久,oracle RAC集群就出现一会好一会坏的情形,登录查日志,查应用,都找不出问题,最后只好亲自去机房。前前后后瞧来瞧去,看各指示灯的显示情况;这一看还真发现问题:心跳交换机的端口有一个指示灯一会绿、一会黄的,肯定是速率不匹配的问题。再撸线,跟其它机制线不同啊!询问得知,采购的时候,供货商存活比计划采购数少了一条,于是就让机房给手工做了一条顶上去。换上新的机制六类网线,问题得以解决。


曾经写了一篇“Oracle 11g rac 生产环境部署详录”文章,发布在51cto博客,地址为https://blog.51cto.com/sery/1546346,欢迎参考。本篇文章,由于没有真实环境可以提供(不能拿已有的生产环境来搞,我怕老板来砍我),因此只能在虚拟环境下进行,不过这并不影响大家学习和借鉴,毕竟基本思路和方法是相同的,也利于做实验和测试。


准备基础环境


我此次进京,化缘来一个迷你主机,配置为cpu 8线程、1TB硬盘、12G内存,拿来做虚拟化非常合适,省电省地又安静。看看,是不是很小巧? 

centos 7部署oracle 12c rac 上菜了_第1张图片

用此迷你主机虚拟化,创建2个虚拟机,安装oracle,另外创建一个虚拟机安装openfiler,做为oracle的共享存储。


◎主机虚拟化处理

强烈推荐使用proxmox,当然我自己也用。当前的版本是proxmox5.2,支持ceph超融合,巨好用,iso一键安装。官方网站(www.proxmox.com)下载镜像包,用ultraIso写入u盘,使其可以开机引导。如果u盘无法引导加载的情况,可再做一次ultraISO写入操作,写入格式选“raw”,如下图所示:

 centos 7部署oracle 12c rac 上菜了_第2张图片

Proxmox安装过程很简单,也很容易完成,这里不再多说。Proxmox底层是基于debian的,在运行过程中,系统会执行apt-get update去做包更新,为避免出现“TASK ERROR: command 'apt-get update' failed: exit code 100”这样的错误,需要以ssh登录系统(debian),修改文件/etc/apt/sources.list.d/pve-enterprise.list ,把里边的唯一一行内容注释掉。当然,你也可以无视。


○多网卡处理

也许你的实验环境跟我一样,只有一个物理网卡,但要实现oracle rac至少得两个网卡,怎办?增加一块就好,具体方法如下:

1、proxmox管理界面选择“创建”,再选“Linux Bridge”,填写ip地址和掩码(网关等其它项不用填写)

centos 7部署oracle 12c rac 上菜了_第3张图片

 

2、使网络设置生效。Ssh登录debain,重启系统。再登录系统,用指令“ip add”,就可以看到刚创建的虚拟网络接口。如下图所示:

 centos 7部署oracle 12c rac 上菜了_第4张图片centos 7部署oracle 12c rac 上菜了_第5张图片

同样,在proxmox的web管理界面,也能看到这个效果。


○准备操作系统镜像文件

据我掌握,有两种方法可以上传操作系统ios镜像,一种是proxmox web管理界面,另一种是登录debian系统,进入镜像文件设定的目录,用wget一类的工具直接获取。

1、web界面上传ios文件(需要在本地电脑上下载好文件):

 centos 7部署oracle 12c rac 上菜了_第6张图片

在几次实践中,总觉得这个方法麻烦,而且速度慢,现在一般不采用了。

2、登录系统直接下载,只下载一次,如果是机房服务器的话,比下载到本地再传上去,节省大量的时间。

root@pve99:~# cd /var/lib/vz/template/iso

root@pve99:/var/lib/vz/template/iso# wget http://mirrors.163.com/centos/7.5.1804/isos/x86_64/CentOS-7-x86_64-DVD-1804.iso

root@pve99:/var/lib/vz/template/iso# wget http://mirrors.cn99.com/centos/6.10/isos/x86_64/CentOS-6.10-x86_64-bin-DVD1.iso

下载完以后,到web管理界面检查一下,是否出现在项目中。


◎创建虚拟机

由于安装oracle rac需要的主机资源配置完全一样,因此可以先创建好一个虚拟机,并安装好系统(不要安装oracle哟),再以克隆方式生成第二个虚拟机,改一下网络设置即可投入使用。


○创建第一个虚拟机

Proxmox web管理界面点击“创建虚拟机”,给虚拟机设置一个容易辨识的名字,比如db107,然后进行下一步。

 centos 7部署oracle 12c rac 上菜了_第7张图片

“操作系统”栏目下,选“使用cd/dvd光盘镜像文件(ISO)”,下来列表框选定预先上传的操作系统iso。如下图所示:

 centos 7部署oracle 12c rac 上菜了_第8张图片一下步分配磁盘(给32G)、cpu(4core)、内存(8G),创建完以后,还不能满足需求。需要再增加硬盘,用来做oracle的安装目录及创建交换分区;增加网络接口,用以oracle节点间做心跳检测。

1、给虚拟机增加硬盘:

管理界面选中刚创建的虚拟机,在选级联菜单“硬件”,点击按钮“添加”;

 centos 7部署oracle 12c rac 上菜了_第9张图片

设置大小为50G,计划16G用于swap,其余为安装软件目录使用。

centos 7部署oracle 12c rac 上菜了_第10张图片



 

2、添加网络接口:

跟添加硬盘的步骤基本相同,只是到了“添加”这个下拉列表这里,选“网络设备”,具体选择如下图所示:

 centos 7部署oracle 12c rac 上菜了_第11张图片


◎安装虚拟机操作系统

在创建好虚拟机之后,web管理界面启动虚拟机,然后再点击页面里的“>_控制台”按钮,即可进入操作系统安装界面,如图所示:

 centos 7部署oracle 12c rac 上菜了_第12张图片

余下的步骤,跟常规的系统安装毫无差别,不再赘述。


◎安装共享存储openfiler

Openfiler跟proxmox一样,也是以iso形式提供的,同样,openfiler也需要至少两个磁盘,一个安装系统,一个做数据共享。规划好容量分配以后,就可以开始安装,安装过程很简单,不再啰嗦。


下图为我安装好的openfiler磁盘使用情况,其中容量大的那个磁盘用于iscsi共享。

 centos 7部署oracle 12c rac 上菜了_第13张图片

接下来,开始配置存储。鼠标点“Service”项,把iscsi服务打开。

 

在空闲的那个大容量磁盘创建分区(Linux Physical Volume),接着创建卷组vg-data(命名自己定)及逻辑卷;创建逻辑卷时,Filesystem / Volume type(文件系统/卷类型)要从下拉列表框选定“block(ISCSI,FS,etc)”。完成这个操作以后,鼠标点右侧“iSCSI Targets”菜单,添加一个新的issci目标(Add new iSCSI Target),如果没有启动iscsi服务,则添加按钮(Add)是灰色的,无法进行下一步操作。

centos 7部署oracle 12c rac 上菜了_第14张图片

完成逻辑单元(LUN)映射,操作如下图:

 centos 7部署oracle 12c rac 上菜了_第15张图片

因为是内部网络,因此可以不对访问做限制。到此,存储端配置完毕。


◎服务器挂接iscsi磁盘(需要在两个主机都操作)

只需简单几个步骤,即可在主机上挂接好iscsi共享磁盘,并且使之随系统开机启动。

○启动iscsi服务。Centos默认可能没有安装熟悉而好用的ntsysv,yum安装一个吧。执行ntsysv吧iscsi项选上,下次开机,iscsi服务就自动起来了。

○扫描iscsi目标,并记录下输出信息,指令如下:

[root@db115 ~]# iscsiadm -m discovery -t sendtargets -p 172.16.35.107

172.16.35.107:3260,1 iqn.2006-01.com.openfiler:tsn.3ceca0a95110

需要的就是数字“1”后边加粗的部分信息。

○挂接目标磁盘,指令如下:

# iscsiadm -m node -T iqn.2006-01.com.openfiler:tsn.3ceca0a95110 –l

Logging in to [iface: default, target: iqn.2006-01.com.openfiler:tsn.3ceca0a95110, portal: 172.16.35.107,3260] (multiple)

Login to [iface: default, target: iqn.2006-01.com.openfiler:tsn.3ceca0a95110, portal: 172.16.35.107,3260] successful.

○磁盘挂接验证,两个主机都执行一次,指令如下:

[root@db115 ~]# fdisk –l

...……………………………省略…………………………………

Disk /dev/sdc: 51.2 GB, 51170508800 bytes, 99942400 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes



Disk /dev/sdd: 122.9 GB, 122876329984 bytes, 23×××832 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes



Disk /dev/sde: 10.2 GB, 10234101760 bytes, 19988480 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

以此法共享出三个卷,并挂接在每一个节点上。


部署oracle 12c rac

分三个阶段:安装前的准备、安装软件、创建数据库。


◎安装前的准备

主要步骤有:准备交换分区及数据分区、设置相关主机名及 ip 映射、修改系统相关配置及依赖包、准备桌面环境。

◆准备交换分区,需要在每一个节点执行。

fdisk /dev/sdb

mkswap /dev/sdb1

swapon /dev/sdb1

fdisk操作过程中,分区代码选“82”,大小为18G。执行完上述操作后,用命令free –m检查是否生效。为了让交换分区随系统开机加载,需要修改文件/etc/fstab,加入的内容等描述完加数据分区以后,一并贴出。


更多内容,请参看专栏文章“负载均衡高手练成记”,猛戳此处即可直达