收藏 分享(赏)

pacemaker+corosync+drbd 实现oracle双机15页.doc

上传人:无敌 文档编号:1058968 上传时间:2018-06-08 格式:DOC 页数:15 大小:72.52KB
下载 相关 举报
pacemaker+corosync+drbd 实现oracle双机15页.doc_第1页
第1页 / 共15页
pacemaker+corosync+drbd 实现oracle双机15页.doc_第2页
第2页 / 共15页
pacemaker+corosync+drbd 实现oracle双机15页.doc_第3页
第3页 / 共15页
pacemaker+corosync+drbd 实现oracle双机15页.doc_第4页
第4页 / 共15页
pacemaker+corosync+drbd 实现oracle双机15页.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

1、PaceMaker+corosync+drbd 实现 oracle 双机1 大体理论1.1 项目背景公司近期要做 oracle 双机,保证单台设备故障不影响整个系统的平稳运作,任务落于本人头上,本人卑微程序员一名,对 linux 略知一二,本文仅仅是对这 3、4 天的总结,讲述的是小白的配置历程,肯定有不足之处,请大家多指出。1.2 所需软件1.2.1 DRBDDistributed Replicated Block Device(DRBD)是一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案。就项目来说两台机器分别拿出一部分空间给 DRBD 管理,两台机器会被区分为主机和

2、备机,主机上的修改会被 DRBD 自动同步到备机上,这样一来,我们在 oracle 中做的修改会被自动备份到备机上,主机故障时,备机上的数据也是一样的1.2.2 Linux-HA(HighAvailability)网站简介 : http:/www.linux-ha.orgProviding Open Source High-Availability Software for Linux and other Platforms since 1999 这个项目有许多软件,专门为了 linux 高可用性集群而生,其中就包括了本次实验中用到的 PaceMaker 和 Corosync1.2.3 Pac

3、eMaker CorosyncPacemaker keeps your applications running when they or the machines theyre running on fail. However it cant do this without connectivity to the other machines in the cluster - a significant problem in its own right.Rather than re-implement the wheel, Pacemaker supports existing implim

4、entations such as Corosync. Corosync provides pacemaker: a mechansigm to reliably send messages between nodes, notifications when machines appear and disappear a list of machines that are up that is consistent throughout the clusterCorosync was the second stack supported by the Pacemaker codebase.大体

5、意思是 Corosync 用来实现多个机器互相通讯(维持心跳)的,而 pacemaker 是在corosync 上层来统一管理整个集群的运行,注意最后一句,corosync 只是第二推荐,第一推荐是 heartbeat,但是 heartbeat 版本有些乱(具体请自己查这个网站) ,而且本人测试也没有成功。就项目来说 corosync 是维持两台机器心跳的(两个机器用网线直连) ,然后将状态上报给 pacemaker,pacemaker 对整个集群统一管理, 外部环境(比如 web 项目)访问数据库集群时访问的是 pacemaker。1.3 环境配置1.3.1 硬件戴尔 R710 服务器两台,

6、2G 内存,146G 硬盘一块,四网卡1.3.2 软件(1 ) CentOS-5.5-x86_64(官网下载,2 张 dvd,没有特殊要求下载第一张安装系统就够了,第二张是其他的一些 rpm 程序包)(2 ) linux.x64_11gR2_database 官网下载 11g 64 位1.3.3 网络配置eth0 eth2node1 IP:192.168.0.241掩码:255.255.255.0网关:192.168.0.1IP:192.168.1.1掩码:255.255.255.0网关:空着node2 IP:192.168.0.242掩码:255.255.255.0网关:192.168.0.

7、1IP:192.168.1.2掩码:255.255.255.0网关:空着注:本次实验使用了机器后面的第一个网口跟第三个网口(手太大了,两个网口远些好整)另外预留一浮动 IP 192.168.0.240 ,以后访问的就是这个浮动的虚拟 IP(VIP) ,虚拟主机名预留为 node2 具体安装2.1 操作系统安装是关闭防火墙、selinux安装时选择的是手动分区,两台机器选择同样的分区方式/boot ext3 1000M sda1/ ext3 100000M sda2/opt ext3 10000M sda3扩展分区 sda4 Swap 4000M sda5剩余 25015M 未分配未分配空间就是

8、将来两个机器中用来同步的空间,oracle 及其数据文件将来就安放于此安装完成后查看命令 df hal fdisk l 2.2 网络配置rootnode1 # cat /etc/hosts# Do not remove the following line, or various programs# that require network functionality will fail.127.0.0.1 node1 localhost.localdomain localhost:1 localhost6.localdomain6 localhost6192.168.0.241 node11

9、92.168.0.242 node2192.168.0.240 node2.3 DRBD2.3.1 安装安装依赖 yum -y install gcc make automake autoconf flex rpm-build kernel-devel 安装 drbd yum install kmod-drbd2.3.2 分区两台机器上创建 LVM 分区fdisk /dev/sdan(新增分区)p 设置为主分区回车(起始区默认即可)+14600M(预留了 14919M)W (写入保存)Fdisk l 结果如下Disk /dev/sda: 146.8 GB, 146815733760 bytes

10、255 heads, 63 sectors/track, 17849 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesDevice Boot Start End Blocks Id System/dev/sda1 * 1 127 1020096 83 Linux/dev/sda2 128 12875 102398310 83 Linux/dev/sda3 12876 14150 10241437+ 83 Linux/dev/sda4 14151 17849 29712217+ 5 Extended/dev/sda5 14151

11、14660 4096543+ 82 Linux swap / Solaris/dev/sda6 14661 17849 25615611 83 Linux2.3.3 配置两台机器上修改/etc/drbd.conf 文件# please have a a look at the example configuration file in# /usr/share/doc/drbd/drbd.conf# 是否参加 DRBD 使用者统计.默认是 yesglobal usage-count yes; # 设置主备节点同步时的网络速率最大值,单位是字节.common syncer rate 100M; #

12、 一个 DRBD 设备(即:/dev/drbdX),叫做一个“资源“. 里面包含一个 DRBD 设备的主备节点的# 相关信息 .#resource r0 # 使用协议 C.表示收到远程主机的写入确认后,则认为写入完成.protocol C; net # 设置主备机之间通信使用的信息算法.cram-hmac-alg sha1;shared-secret “FooFunFactory“;# 每个主机的说明以“on“开头,后面是主机名 .在后面的中为这个主机的配置.on node1 # /dev/drbd1 使用的磁盘分区是/dev/hdb1device /dev/drbd0;disk /dev/s

13、da4;# 设置 DRBD 的监听端口, 用于与另一台主机通信address 192.168.1.1:7898;meta-disk internal;on node2 device /dev/drbd0;disk /dev/sda6;address 192.168.1.2:7898;meta-disk internal;注 : IP 可以写 eth0 的,也可以写 eth2 的(推荐) ,直连的同步的快2.3.4 同步1. 两台机器分别执行drbdadm create-md r02. 分别执行 service drbd start ;然后在主机上执行 drbdsetup /dev/drbd0

14、primary o3. 执行 cat /proc/drbd状态为 cs:Connected st:Primary/Secondary ds:UpToDate/UpToDate 表示同步结束2.3.5 测试 drbd(1 )上述步骤完成,2 台机器已经同步完毕,都是用的/dev/drbd0 这个文件来共享数据但要使用,则要在正在使用的(主)设备上挂载才行:mkfs -t ext3 /dev/drbd0mkdir /sharediskmount /dev/drbd0 /sharedisk此时,对/sharedisk 的修改,会同步到备份设备的/dev/drbd0 上,但如果要看的话,也需要在备份设

15、备上进行挂载(2 )主热切换,查看文件是否同步Unmount the partition and degrade primary to secondary (drbd-1):umount /sharediskdrbdadm secondary r0 On the other server (drbd-2), promote it to primary, mount drbd device and check copied filed:drbdadm primary r0 mkdir / sharediskmount /dev/drbd0 / sharedisk安装好 oracle 后,重启主机

16、,sharedisk 没了。 。 。 。没有看备机上的东西还在么mkfs -t ext3 /dev/drbd0 是否是这句话把从备机上传来的数据抹杀了。 。 。 。2.4 Pacemaker 和 corosync 安装http:/ 本网页是 pacemaker+corosync+http 的配置演示,可以快速入门,对软件有个全面的认识搭配 crm 常用命令 http:/ 集群间 ssh 访问生成密钥文件,实现不实用密码就能相互访问主机:#ssh-keygen -t rsa /一直 Enter 下去# ssh-copy-id -i .ssh/id_rsa.pub rootnode2 /然后输入密

17、码即可,node1,node2 上都相应执行2.4.2 安装 采用官方推荐的安装方法 http:/clusterlabs.org/wiki/Install#Binary_Packages 中Installing on EPEL-5 Compatible Distributions: RHEL, CentOS, etc的安装方法,注意,操作系统版本不同,下述命令中地址可能不同su -c rpm -Uvh http:/dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpmwget -O /etc/yum.repos.d/

18、pacemaker.repo http:/clusterlabs.org/rpm/epel-5/clusterlabs.repocentos5.5 中本来是 perl-5.8.8-27 需要升级到 5.8.8-32yum install -y perlyum install -y pacemaker corosync heartbeat(heartbeat 本项目中没有用到,可以不用安装)2.4.3 修改配置rootnode1 # cat /etc/corosync/corosync.conf# Please read the corosync.conf.5 manual pagecompat

19、ibility: whitetanktotem version: 2secauth: offthreads: 0interface ringnumber: 0bindnetaddr: 192.168.0.0mcastaddr: 226.94.1.1mcastport: 5405logging fileline: offto_stderr: noto_logfile: yesto_syslog: yeslogfile: /var/log/cluster/corosync.logdebug: offtimestamp: onlogger_subsys subsys: AMFdebug: offam

20、f mode: disabledservice ver:0name:pacemakeraisexec user:rootgroup:root2.4.4 集群间 corosync 访问生成节点间通信时用到的认证密钥文件:# corosync-keygen- 此处会在当前目录下生成一个认证密钥文件然后拷贝相关的文件到节点 2 上:# scp -p corosync.conf authkey node2:/etc/corosync/为两个节点创建 corosync 生成的日志所在的目录:# mkdir /var/log/cluster# ssh node2 - mkdir /var/log/clus

21、ter2.4.5 启动 corosync开始启动 corosync(在节点 1 上执行):# /etc/init.d/corosync startStarting Corosync Cluster Engine (corosync): OK -出现此,说明您的 corosync 已经启动开始验证是否有其他错误:查看 corosync 引擎是否正常启动# grep -e “Corosync Cluster Engine“ -e “configuration file“ /var/log/messages查看初始化成员节点通知是否正常发出# grep TOTEM /var/log/messages

22、检查启动过程中是否有错误产生# grep ERROR: /var/log/messages | grep -v unpack_resources如果没有出现错误,此处则不会出现任何信息查看 pacemaker 是否正常启动# grep pcmk_startup /var/log/messages上述验证错误的操作没有出现问题的话,您就可以启动节点 2 了:# ssh node2 - /etc/init.d/corosync start-此步您需要在节点 1 上进行Starting Corosync Cluster Engine (corosync): OK -出现此,说明您的节点2corosy

23、nc 已经启动,您需要在节点 2 上继续验证是否出现异常错误,执行验证错误的步骤即可。查看节点的运行状态:# crm status=Last updated: Thu Sep 15 15:17:50 2011Stack: openaisCurrent DC: - partition with quorumVersion: 1.0.11-1554a83db0d3c3e546cfd3aaff6af1184f79ee872 Nodes configured, 2 expected votes0 Resources configured.=Online: node1 node2-此处说明您的两个集群

24、节点均已运行正常。2.4.6 配置集群的工作属性crm configure erasecrm configure rsc_defaults resource-stickiness=100 crm configure property no-quorum-policy=ignorecrm configure property stonith-enabled=“false“#创建一个 IP 地址资源 虚拟 IP 生效后,用 ifconfig 命令看不到,可用 ip addr 查看crm configure primitive ip_oracle ocf:heartbeat:IPaddr2 para

25、ms ip=“192.168.0.240“ # nic=“eth0“ cidr_netmask=“24“#挂载共享磁盘 crm configure primitive drbd_oracle ocf:heartbeat:drbd params drbd_resource=“r0“ op monitor interval=“15s“ crm configure primitive fs_oracle ocf:heartbeat:Filesystem params device=“/dev/drbd0“ directory=“/sharedisk“ fstype=“ext3“ 下面的配置要在 or

26、acle 安装好之后进行配置, 此处一并列出而已#创建 oracle 资源crm configure primitive oracle_instant ocf:heartbeat:oracle op monitor interval=“120“ timeout=“30“ op start interval=“0“ timeout=“120“ params sid=“orcl“#本句话要交互式运行 crm configure primitive oracle_lsnrctl ocf:heartbeat:oralsnr params sid=“orcl“ operations $id=“oracl

27、e_lsnrctl-operations“ op monitor interval=“10“ timeout=“30“primitive oracle_lsnrctl ocf:heartbeat:oralsnr params sid=“orcl“ operations $id=“oracle_lsnrctl-operations“ op monitor interval=“10“ timeout=“30“commitquit#将以上建立的资源作为一个整体,保证同时在一个节点上运行crm configure group group_oracle ip_oracle fs_oracle oracl

28、e_lsnrctl oracle_instant meta target-role=“Started“ is-managed=“true“#制定如何决定在哪个机器上运行的策略crm configure ms ms_drbd_oracle drbd_oracle meta master-max=“1“ master-node-max=“1“ clone-max=“2“ clone-node-max=“1“ notify=“true“crm configure colocation oracle_on_drbd inf: group_oracle ms_drbd_oracle:Master# 制定

29、资源执行的顺序crm configure order oracle_after_drbd inf: ms_drbd_oracle:promote group_oracle:start2.4.7 测试分别在两台机器上启动启动 corosync /etc/init.d/corosync start主机上启动资源 crm resource start group_oracle2.5 ORACLE 安装 将 oracle 安装放在最后,是因为作为新手,在安装集群共享存储的时候,极有可能导致存储空间的混乱,比如被清空,不同步,文件来回覆盖等问题,所以在充分了解了drbd,pacemaker,corosy

30、nc 之后才进行 oracle 的安装Oracle 就安装在 drbd 的主机上共享磁盘中即可,此处为 node1 的 /sharedisk其中 2.5.1,2.5.2, 2.5.4,2.5.5 , 2.5.6 都是需要在两台设备中都做的工作2.5.1 安装依赖yum -y install gcc gcc-c+ compat-libstdc+-33-3.2.3 elfutils-libelf-devel libaio-devel sysstat unixODBC unixODBC-devel pdksh2.5.2 创建用户和组(1 ) Oracle Inventory 组 groupadd oinstall(2 )数据库管理员组 groupadd dba(3 )数据库操作员组groupadd oper(4 )生成操作系统用户 oracle,是软件安装的拥有者,属于 oinstall 等三个组

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报