SERVICE 分离业务在双网段上怎么设置

简介: 接下来测试下测试下如果要实现SERVICE 分离业务在双网段上怎么设置。 一、 测试配置问题我们使用如下的语句(ORACLE用户下)建立一个在3节点都激活的SERVICE,同时设定自动启动[oracle@racc ~]$ srvctl add service ...

接下来测试下测试下如果要实现SERVICE 分离业务在双网段上怎么设置。

一、 测试配置问题
我们使用如下的语句(ORACLE用户下)建立一个在3节点都激活的SERVICE,同时设定自动启动
[oracle@racc ~]$ srvctl add service -d racdb -s pub1 -r racdb1,racdb2,racdb3 -y AUTOMATIC –k1
[oracle@racc ~]$ srvctl add service -d racdb -s pub2 -r racdb1,racdb2,racdb3 -y AUTOMATIC –k2
这里要指定network进行分离,因为我们现在有2套公有网卡,如果其中一套其中一个机器的PUBLIC IP问题过后,这个机器的VIP进行FAILOVER,local listener 也就随之停止,当然SACN VIP也进行了漂移,SCAN LISTENER 也在另外的机器启动,这个时候这套PUBLIC IP是不能进行这个机器的实例的,但是另外一套IP却没有影响。

这里报错
[oracle@racc ~]$ srvctl add service -d racdb -s pub1 -r racdb1,racdb2,racdb3 -y AUTOMATIC –k1
PRCR-1006 : Failed to add resource ora.racdb.testall.svc for testall
PRCR-1071 : Failed to register or update resource ora.racdb.testall.svc
CRS-2566: User 'oracle' does not have sufficient permissions to operate on resource 'scanapp1', which is part of the dependency specification.
明显报错是由于权限问题,这里对比了权限设置发现我们建立的SCANAPP VIP貌似有权限问题
然后通过如下语句进行了修改,给与了other用户的可执行权限。
(PS:这里要对RESOURCE的属性比较熟悉才行)
[root@racc ~]# /oracle/app/grid/product/11.2.0/bin/crsctl modify resource scanapp2 -attr  "ACL='owner:root:rwx,pgrp:root:r-x,other::r-x,user:root:r-x'"
 [root@racc ~]# /oracle/app/grid/product/11.2.0/bin/crsctl modify resource scanapp2 -attr  "ACL='owner:root:rwx,pgrp:root:r-x,other::r-x,user:root:r-x'"
[root@racc ~]# /oracle/app/grid/product/11.2.0/bin/crsctl modify resource scanapp3 -attr  "ACL='owner:root:rwx,pgrp:root:r-x,other::r-x,user:root:r-x'"
{这里顺便把上面我们错误的LISTENER2的权限改一下:
启动阶段修改
crsctl modify resource "ora.LISTENER2.lsnr" -attr  "ACL='owner:grid:rwx,pgrp:oinstall:rwx,other::r--'"
停止
srvctl stop listener –l LISTENER2
启动
srvctl start listener –l  LISTENER2
这里我还遇到了修改顺序错误导致我的的LISTENER2资源在RACC节点为UNKOWN,无法CLEAN
ora.LISTENER2.lsnr
               ONLINE  ONLINE       raca                                        
               ONLINE  ONLINE       racb                                        
               ONLINE  UNKNOWN      racc  
随后
crsctl modify resource "ora.LISTENER2.lsnr" -attr  "ACL='owner:root:rwx,pgrp:root:r-x,other::r--'"
然后停止,启动后按照正常的顺序进行才可以了,报错如下:
[grid@racc ~]$ crsctl stop res ora.LISTENER2.lsnr -f
CRS-2679: Attempting to clean 'ora.LISTENER2.lsnr' on 'racc'
CRS-2680: Clean of 'ora.LISTENER2.lsnr' on 'racc' failed
CRS-5807: Agent failed to process the message
CRS-4000: Command Stop failed, or completed with errors.
}
然后再次增加SERVICE 看看
[oracle@racc ~]$ srvctl add service -d racdb -s pub1 -r racdb1,racdb2,racdb3 -y AUTOMATIC –k1
[oracle@racc ~]$ srvctl add service -d racdb -s pub2 -r racdb1,racdb2,racdb3 -y AUTOMATIC –k2

完成没有问题。
启动SERVICE
经过检查两个SCAN_LISTENER* LISTENER_SCAN* SCAN_LISTENERAPP*  都有如下的信息
Service "testpub1" has 3 instance(s).
  Instance "racdb1", status READY, has 1 handler(s) for this service...
  Instance "racdb2", status READY, has 1 handler(s) for this service...
  Instance "racdb3", status READY, has 1 handler(s) for this service...
Service "testpub2" has 3 instance(s).
  Instance "racdb1", status READY, has 1 handler(s) for this service...
  Instance "racdb2", status READY, has 1 handler(s) for this service...
  Instance "racdb3", status READY, has 1 handler(s) for this service...
而各个节点的LISTENER1 LISTENER2
都有相关的信息。
但是这个时候我们如果ifconfig bond0 down 会出现这样的情况SCAN_LISTENERAPP* SCAN_LISTENER*都会如下
Service "testpub2" has 3 instance(s).
  Instance "racdb1", status READY, has 1 handler(s) for this service...
  Instance "racdb2", status READY, has 1 handler(s) for this service...
  Instance "racdb3", status READY, has 1 handler(s) for this service...
Service "testpub1" has 2 instance(s).
  Instance "racdb1", status READY, has 1 handler(s) for this service...
  Instance "racdb2", status READY, has 1 handler(s) for this service...
意思很明显节点3的实例PUB1已经不能进入。所以我们在想用SERVICE进行业务分离的时候建立的SERVICE也必须和NETWORK 对应起来
所以连接我们应该这样写
RACSCAN2 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = scantwo.gaopp.com)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = testpub2 )
    )
  )

RACSAN1 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = scanone.gaopp.com)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = testpub1)
    )
  )

是不是觉得很烦。这就是为了做到这个要求需要的,资源很多,3节点对应6个VIP资源,6个LOCAL LISTENER,6个SCAN IP,6个SCAN LISTENER,而且每个库需要建立2个SERVICE资源进行分离,如果在加上DISKGROUP的资源和多个数据库的资源加上默认的资源资源大概会在60-70个左右。管理起来非常麻烦。要求很高。

二、 进行业务分离测试,并且测试SERVICE能否在节点重新启动后随VIP一起漂移回来。

[oracle@racc ~]$ srvctl add service -d racdb -s hrpub1 -r racdb3 -a racdb1,racdb2 -y automatic -k 1
[oracle@racc ~]$ srvctl add service -d racdb -s hrpub2 -r racdb3 -a racdb1,racdb2 -y automatic -k 2
[oracle@racc ~]$ srvctl start service -d racdb -s hrpub1
[oracle@racc ~]$ srvctl start service -d racdb -s hrpub2
这样又多了2个资源,汗水。
ora.racdb.hrpub1.svc
      1        ONLINE  ONLINE       racc                                        
ora.racdb.hrpub2.svc
      1        ONLINE  ONLINE       racc     

直接DOWN掉bond1,出现一些问题,让其vip,appvip,app scan listener,都漂移,本地LISTENER offline
ifconfig bond1 down
测试结果SERVICE 不能
三、 最后我恢复到了SCAN+VIP的模式进行测试
这样不仅少了几个资源,application VIP3个没有了,SCAN LISTENER少了3个这样更加简单一些,维护也相对而言方便一些。
[oracle@racc ~]$ srvctl add service -d racdb -s hrpub1 -r racdb3 -a racdb1,racdb2 -y automatic -k 1
[oracle@racc ~]$ srvctl add service -d racdb -s hrpub2 -r racdb3 -a racdb1,racdb2 -y automatic -k 2
这里要说明一下hrpub1是基于network1的,如果说network1的网段是172.16.14.0,而network2的网段是172.16.1.0,如果实例racdb3 172.16.14.113 这个机器的网卡故障,那这个时候随着发生的是VIP故障转移,local listener 关闭,因为在NETWORK1 racdb3 已经不能进入所以service hrpub1进行转移,同时SCAN VIP也漂移,SCAN_LISTENER也进行了漂移,SCAN_LISTENER上的注册实例会取消掉racdb3而注册为起备份的racdb1或者racdb2,但是这个时候NETWROK2却没有问题,hrpub2仍然在racdb3机器上的local listener进行注册,注册的实例任然是racdb3,不影响。

ora.racdb.hrpub1.svc
      1        ONLINE  ONLINE       racc                                        
ora.racdb.hrpub2.svc
      1        ONLINE  ONLINE       racc                             
正常情况下,
然后我们DOWN  172.16.14.113 所在bond0
[root@racc ~]# ifconfig bond0 down

ora.rac1vip.vip
      1        ONLINE  ONLINE       raca                                        
ora.rac2vip.vip
      1        ONLINE  ONLINE       racb                                        
ora.rac3vip.vip
      1        ONLINE  ONLINE       racc                                        
ora.raca.vip
      1        ONLINE  ONLINE       raca                                        
ora.racb.vip
      1        ONLINE  ONLINE       racb                                        
ora.racc.vip
      1        ONLINE  INTERMEDIATE racb                     FAILED OVER        

可以看到ora.racc.vip故障转移了但是ora.rac3vip.vip没有影响,
ora.LISTENER.lsnr
               ONLINE  ONLINE       raca                                        
               ONLINE  ONLINE       racb                                        
               ONLINE  OFFLINE      racc                                        
ora.LISTENER2.lsnr
               ONLINE  ONLINE       raca                                        
               ONLINE  ONLINE       racb                                        
               ONLINE  ONLINE       racc                                        
Listener1基于ora.racc.vip,OFFLINE了。
ora.racdb.hrpub1.svc
      1        ONLINE  ONLINE       raca                                        
ora.racdb.hrpub2.svc
      1        ONLINE  ONLINE       racc                                    
也和预计一样。
查看监听

Service "hrpub1" has 1 instance(s).
  Instance "racdb1", status READY, has 1 handler(s) for this service...
Service "hrpub2" has 1 instance(s).
  Instance "racdb3", status READY, has 2 handler(s) for this service...
当然连接也就是

RACPUB2 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.1.114)(PORT = 1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.1.115)(PORT = 1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.1.116)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = hrpub2)
    )
  )
RACPUB1 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = scanone.gaopp.com)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = hrpub1)
    )
  )

 

相关文章
|
4月前
|
安全 API
【Azure API 管理】APIM Self-Host Gateway 自建本地环境中的网关数量超过10个且它们的出口IP为同一个时出现的429错误
【Azure API 管理】APIM Self-Host Gateway 自建本地环境中的网关数量超过10个且它们的出口IP为同一个时出现的429错误
|
4月前
|
开发框架 前端开发 .NET
【Azure微服务 Service Fabric 】Service Fabric中应用开启外部访问端口及微服务之间通过反向代理端口访问问题
【Azure微服务 Service Fabric 】Service Fabric中应用开启外部访问端口及微服务之间通过反向代理端口访问问题
|
4月前
|
网络协议 微服务
【Azure 微服务】基于已经存在的虚拟网络(VNET)及子网创建新的Service Fabric并且为所有节点配置自定义DNS服务
【Azure 微服务】基于已经存在的虚拟网络(VNET)及子网创建新的Service Fabric并且为所有节点配置自定义DNS服务
|
4月前
|
网络协议 网络虚拟化 数据中心
干货 | 集中式网关部署方式的VXLAN示例(静态方式)
干货 | 集中式网关部署方式的VXLAN示例(静态方式)
|
5月前
|
消息中间件 监控 中间件
业务系统架构实践问题之Service间网状调用如何解决
业务系统架构实践问题之Service间网状调用如何解决
|
7月前
|
网络虚拟化 网络架构
配置基于接口划分VLAN示例(汇聚层设备作为网关)
划分VLAN的方式有:基于接口、基于MAC地址、基于IP子网、基于协议、基于策略(MAC地址、IP地址、接口)。其中基于接口划分VLAN,是最简单,最常见的划分方式。 基于接口划分VLAN指的是根据交换机的接口来划分VLAN。网络管理员预先给交换机的每个接口配置不同的PVID,当一个数据帧进入交换机时,如果没有带VLAN标签,该数据帧就会被打上接口指定PVID的Tag,然后数据帧将在指定PVID中传输。 在典型的分层组网中,当接入交换机是二层交换机时,可以使用汇聚交换机作为用户的网关。另外使用汇聚交换机作为用户的网关还可以简化接入交换机的配置,使用户通过一个出接口访问外部网络,便于维护和管
268 0
|
7月前
|
负载均衡 网络协议 测试技术
IPv6部署方案及设计
IPv6部署方案及设计
269 0
|
Kubernetes 负载均衡 应用服务中间件
K8s集群 实现集群业务是否对外暴露的控制 (多LB实施方案)
K8s集群 实现集群业务是否对外暴露的控制 (多LB实施方案)
295 0
K8s集群 实现集群业务是否对外暴露的控制 (多LB实施方案)
|
网络协议 网络架构
网络基础 - 默认网关是什么?
网络基础 - 默认网关是什么?
647 0
网络基础 - 默认网关是什么?