前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >腾讯云⾃建Oracle Rac集群(单SCAN-IP&双节点)

腾讯云⾃建Oracle Rac集群(单SCAN-IP&双节点)

原创
作者头像
Sonny
修改2022-12-14 21:42:03
5K15
修改2022-12-14 21:42:03
举报
文章被收录于专栏:云技术家

1. 背景

许多传统企业的历史系统使用的都是Oracle数据库,虽然去O是一个方向,但是去O的成本还是较大,所以不少企业在上云的过程中,尝试在云上搭建自己的Oracle数据库。目前主备模式相对简单,已经是普遍使用的方案了,但是Oracle Rac集群的搭建还是面临着许多挑战,本文是一次在腾讯云上搭建Oracle Rac集群的尝试,单SCAN-IP+双节点模式。

2. 安装环境规划

2.1 前提准备

在腾讯云上搭建Oracle RAC,有三个重要前提,目前都需要向腾讯云申请开通:

  1. 共享云硬盘,通过控制台工单开通
  2. HAVIP(高可用虚拟IP),申请地址:https://cloud.tencent.com/document/product/215/36691
  3. 开启VPC(私有网络)的组播功能,内测申请已经结束,即将开放公测:https://cloud.tencent.com/document/product/215/53428

2.2 Oracle RAC环境规划

2.2.1 ⽹络规划

创建专有⽹络IPV4⽹段:10.0.0.0/8

创建两个交换机:10.0.0.0/24、10.0.1.0/24

指定两台服务器的Public IP:10.0.0.2、10.0.0.4

指定两台服务器的VIP: 10.0.0.3、10.0.0.5

创建两块弹性⽹卡,指定两台服务器的Private IP:10.0.1.2、10.0.1.4

创建一个⾼可⽤虚拟IP:10.0.0.14

2.2.2 存储规划

本次测试选⽤两块100G SSD云硬盘做为系统盘,选⽤ ⼀ 块500G SSD共享云硬盘存储数据及OCR。⽣产环境建议OCR单独分配三块独⽴云盘,数据盘也按类型单独划分。

3. 安装Oracle数据库

数据库安装包含安装GRID,安装Database两部分,安装采⽤静默安装⽅式,详细安装参考官方文档。

4. ⽹络配置

腾讯云⾼可⽤虚拟IP需配合keepalive将IP绑定⾄服务器,目前产品在灰度优化中,切换时延在10s左右。

4.1 安装keepalive

代码语言:javascript
复制
# 检查 keepalive 软件包版本
yum list keepalived

# 若版本在1.2.24以上则直接yum安装,否则推荐源码安装
yum install -y keepalived

# 配置keepalive
vim /etc/keepalived/keepalived.conf

-----rac1
! Configuration File for keepalived
global_defs {
     notification_email {
       acassen@firewall.loc
       failover@firewall.loc
       sysadmin@firewall.loc
     }
     notification_email_from Alexandre.Cassen@firewall.loc
     smtp_server 192.168.200.1
     smtp_connect_timeout 30
     router_id LVS_DEVEL
     vrrp_skip_check_adv_addr
     vrrp_garp_interval 0
     vrrp_gna_interval 0
  }
  vrrp_script checkhaproxy
  {
       script "/etc/keepalived/do_sth.sh"   # 检测业务进程是否运行正常。其中“do_sth.sh”文件为用户自定义的业务进程检测脚本,请根据业务需要来执行,执行时“do_sth.sh”更换为
实际的脚本名称。
       interval 5
  }
  vrrp_instance VI_1 {
  # 注意主备参数选择
  state BACKUP              # 设置初始状态均为“备“
      interface eth0          # 设置绑定 VIP 的网卡 例如 eth0
      virtual_router_id 51    # 配置集群 virtual_router_id 值
      nopreempt               # 设置非抢占模式,
      # preempt_delay 10      # 仅 state MASTER 时生效
      priority 100            # 两设备是相同值的等权重节点
      advert_int 5
      authentication {
          auth_type PASS
          auth_pass 1111
      }
      unicast_src_ip 10.0.0.2  # 设置本机内网IP地址
      unicast_peer {
          10.0.0.4
  }
      virtual_ipaddress {
          10.0.0.3
          10.0.0.14
      }
      notify_master "/etc/keepalived/notify_action.sh MASTER"
      notify_backup "/etc/keepalived/notify_action.sh BACKUP"
      notify_fault "/etc/keepalived/notify_action.sh FAULT"
      notify_stop "/etc/keepalived/notify_action.sh STOP"
      garp_master_delay 1    # 设置当切为主状态后多久更新 ARP 缓存
      garp_master_refresh 5   # 设置主节点发送 ARP 报文的时间间隔
       track_interface {
                  eth0               # 使用绑定 VIP 的网卡 例如 eth0
          }
      track_script {
         checkhaproxy
      }
  }
  
  
  -----rac2
  ! Configuration File for keepalived
global_defs {
     notification_email {
       acassen@firewall.loc
       failover@firewall.loc
       sysadmin@firewall.loc
     }
     notification_email_from Alexandre.Cassen@firewall.loc
     smtp_server 192.168.200.1
     smtp_connect_timeout 30
     router_id LVS_DEVEL
     vrrp_skip_check_adv_addr
     vrrp_garp_interval 0
     vrrp_gna_interval 0
  }
  vrrp_script checkhaproxy
  {
       script "/etc/keepalived/do_sth.sh"   # 检测业务进程是否运行正常。其中“do_sth.sh”文件为用户自定义的业务进程检测脚本,请根据业务需要来执行,执行时“do_sth.sh”更换为
实际的脚本名称。
       interval 5
  }
  vrrp_instance VI_1 {
  # 注意主备参数选择
  state BACKUP              # 设置初始状态均为“备“
      interface eth0          # 设置绑定 VIP 的网卡 例如 eth0
      virtual_router_id 51    # 配置集群 virtual_router_id 值
      nopreempt               # 设置非抢占模式,
      # preempt_delay 10      # 仅 state MASTER 时生效
      priority 100            # 两设备是相同值的等权重节点
      advert_int 5
      authentication {
          auth_type PASS
          auth_pass 1111
      }
      unicast_src_ip 10.0.0.4  # 设置本机内网IP地址
      unicast_peer {
          10.0.0.2
  }
      virtual_ipaddress {
          10.0.0.5
          10.0.0.14
      }
      notify_master "/etc/keepalived/notify_action.sh MASTER"
      notify_backup "/etc/keepalived/notify_action.sh BACKUP"
      notify_fault "/etc/keepalived/notify_action.sh FAULT"
      notify_stop "/etc/keepalived/notify_action.sh STOP"
      garp_master_delay 1    # 设置当切为主状态后多久更新 ARP 缓存
      garp_master_refresh 5   # 设置主节点发送 ARP 报文的时间间隔
       track_interface {
                  eth0               # 使用绑定 VIP 的网卡 例如 eth0
          }
      track_script {
         checkhaproxy
      }
  }
  
  # 启动keepalive

控制台能看到绑定到了对应主机,假如rac1的keepalive先启动,HAVIP就会绑定到rac1上,当rac1出现问题,HAVIP会被绑定到rac2。

5 使⽤测试

5.1 RAC集群相关信息汇总

代码语言:javascript
复制
# 集群地址信息
10.0.0.2 rac1
10.0.0.4 rac2
10.0.0.3 rac1-vip
10.0.0.5 rac2-vip
10.0.1.2 rac1-priv
10.0.1.4 rac2-priv
10.0.0.14 scan-ip

5.2 数据库压⼒测试

本次压⼒测试通过scan-ip连接⾄集群,在测试前通过造数⼯具创建了约70G的数据,模拟交易环境。

步骤1:测试使⽤30个并发,验证节点双活

查看连接被同时分配到两个节点上

步骤2:测试使⽤100并发

连接数分布如下

步骤3:测试使⽤200并发

连接数分布如下

当连接数为100时,CPU 100%,I/O等待占⽐增⾼,响应时间也随压测时间的增加⽽增加,瓶颈处于服务器性能及磁盘性能限制。

当连接数为200时,CPU 100%,响应时间随压测时间的增加⽽增加,瓶颈处于服务器性能限制。测试标准型S5 4C16G服务器挂载500G SSD云硬盘集群性能如下:

  • TPS最⾼达到132左右
  • RT时间650ms左右
  • 磁盘读最⾼达到187MB/s
  • 磁盘写最⾼达到4MB/s
  • 磁盘读IOPS最⾼达到23000个
  • 磁盘写IOPS最⾼达到800个

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 背景
  • 2. 安装环境规划
    • 2.1 前提准备
      • 2.2 Oracle RAC环境规划
        • 2.2.1 ⽹络规划
        • 2.2.2 存储规划
    • 3. 安装Oracle数据库
    • 4. ⽹络配置
      • 4.1 安装keepalive
      • 5 使⽤测试
        • 5.1 RAC集群相关信息汇总
          • 5.2 数据库压⼒测试
          相关产品与服务
          数据库
          云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档