【Oracle数据库】Oracle RAC(九):扫描

  

扫描的作用是简化客户端连接数据库的配置,无论集群增加还是删除节点扫描名称会一直保持不变,客户端不需要做任何的修改.SCAN是一个名称,通过DNS被解析成最多3个IP地址(扫描VIP)

扫描VIP的作用是接收客户端连接,扫描VIP必须与集群的公网资源处于相同的子网,每一个扫描贵宾都会有对应的扫描侦听器,并且扫描侦听器只会监听对应的扫描贵宾,而且它们必须运行在同一个节点.SCAN贵宾会均匀地分布在集群的各个节点,例如:一个包含了8个节点的集群,会选择其中3个节点运行扫描贵宾,当运行扫描VIP的节点出现问题时,扫描贵宾会漂移到其他正常节点,对于一个两节点的集群,如果配置了3个扫描贵宾,一定会有一个节点存在两个扫描贵宾,另一个节点存在一个扫描VIP。

扫描VIP和扫描侦听器以集群资源的形式存在,由集群的代理进程进行统一管理,扫描VIP依赖于集群的公网资源,而扫描侦听器依赖于对应的扫描VIP资源,当本地节点出现问题扫描VIP漂移到其他节点后,对应的扫描侦听器也需要随着扫描贵宾一起漂移。

通过扫描连接到数据库

阶段1:每个节点的PMON进程通过访问数据库信息将本地实例提供的服务注册到本地节点的监听程序和每一个扫描监听程序。其中local_listener指定了PMON需要注册的本地监听程序位置,而remote_listener指定了需要注册的扫描监听程序位置,之后,无论是本地节点的监听程序,还是扫描监听程序都已经为接收客户端的连接做好准备。

阶段2:客户端通过以及。奥拉中的别名向扫描监听程序发起连接,由于扫描监听程序分布在集群的不同节点,连接到哪个节点取决于DNS将扫描名解析成哪一个节点的扫描VIP (DNS使用轮询的方式返回扫描对应的IP地址)。

阶段3:扫描监听程序在收到了客户端发送的请求后,根据每个节点的负责情况,将客户端连接转发给负载最低的节点本地监听程序,之后对应节点的本地监听程序完成与客户端的连接。

服务器端负载均衡

数据库实例的PMON进程会将本地实例的服务信息和工作负载信息注册到扫描侦听器上,每个服务在每个节点的工作负载信息在扫描侦听器层面就存在了,扫描侦听器已经能够完成服务器端负载均衡的工作,将收到的连接直接发送给负载最低的节点的本地监听程序。

阶段1:客户端通过指定扫描的以及。奥拉别名连接到某一个扫描监听程序。

阶段2:扫描监听程序分析包含申请服务的每个节点的最新工作负载信息,选择负载最低的节点,并将客户端连接分发给对应节点的监听程序。

阶段3:本地节点的监听程序接收到了连接后,检查是否有对应的服务注册,并通知客户端重新连接本地节点监听程序。

阶段4:客户端接收到服务器对应节点的监听程序发送的信息后,重新连接新的位置。

阶段5:本地节点监听程序在接收到连接信息之后,完成对数据库的连接。

查询扫描的配置   root@wallet01 ~ # su -网格   [grid@wallet01 ~]美元srvctl配置扫描   扫描名称:wallet.gscaifu.com网络:1/192.168.40.0/255.255.255.0/eth0   扫描贵宾的名字:scan1、IP:/wallet.gscaifu.com/192.168.40.103   扫描贵宾的名字:scan2、IP:/wallet.gscaifu.com/192.168.40.101   扫描贵宾的名字:scan3、IP:/wallet.gscaifu.com/192.168.40.102      查询扫描的状态   [grid@wallet01 ~]美元srvctl状态扫描   扫描VIP scan1启用   扫描VIP scan1 wallet01运行在节点   扫描VIP scan2启用   扫描VIP scan2 wallet03运行在节点   扫描VIP scan3启用   扫描VIP scan3 wallet02运行在节点      查询扫描侦听器的配置   [grid@wallet01 ~] srvctl配置scan_listener美元   扫描侦听器LISTENER_SCAN1存在。端口:TCP: 1521   扫描侦听器LISTENER_SCAN2存在。端口:TCP: 1521   扫描侦听器LISTENER_SCAN3存在。端口:TCP: 1521      查询扫描侦听器的状态   [grid@wallet01 ~] scan_listener srvctl美元地位   启用LISTENER_SCAN1扫描侦听器   扫描侦听器LISTENER_SCAN1 wallet01运行在节点   启用LISTENER_SCAN2扫描侦听器   扫描侦听器LISTENER_SCAN2 wallet03运行在节点   启用LISTENER_SCAN3扫描侦听器   扫描侦听器LISTENER_SCAN3 wallet02运行在节点      查询本地侦听器的状态   [grid@wallet01 ~]美元lsnrctl状态侦听器   LSNRCTL Linux:版本11.2.0.4.0 - 07 - 5 - 2019 15:36:20生产   版权(c) 1991年,2013年,甲骨文。保留所有权利。   连接(描述=(地址=(协议=IPC)(关键=侦听器)))   侦听器的状态   ------------------------   别名侦听器   版本为Linux TNSLSNR: 11.2.0.4.0——生产   07 - 5 - 2019 13:20:31开始日期   正常运行时间2小时0天。15分钟48秒   跟踪平整   安全:本地操作系统身份验证   SNMP从   侦听器参数文件/u01/app/11.2.0.4/网格/网络/admin/listener.ora   侦听器日志文件/u01/app/网格/诊断接头//警告/log.xml tnslsnr/wallet01/侦听器   听端点总结……   (描述=(地址=(协议=ipc)(关键=侦听器)))   (描述=(地址==(协议tcp)(主机=192.168.40.34)(端口=1521)))   (描述=(地址==(协议tcp)(主机=192.168.40.134)(端口=1521)))   服务总结……   服务”+ ASM”有一个实例(s)。   实例+ ASM1,状态好,有一个处理程序(s)为这个服务……   服务“gspublic”1实例(s)。   实例“wallet1中”,状态好,有一个处理程序(s)为这个服务……   “钱包”服务1实例(s)。   实例“wallet1中”,状态好,有一个处理程序(s)为这个服务……   服务“walletXDB”1实例(s)。   实例“wallet1中”,状态好,有一个处理程序(s)为这个服务……   命令成功完成      查询LISTENER_SCAN1的状态   [grid@wallet01 ~] LISTENER_SCAN1 lsnrctl美元地位   LSNRCTL Linux:版本11.2.0.4.0 - 07 - 5 - 2019 15:36:57生产   版权(c) 1991年,2013年,甲骨文。保留所有权利。   连接(描述=(地址=(协议=IPC)(关键=LISTENER_SCAN1)))   侦听器的状态   ------------------------   别名LISTENER_SCAN1   版本为Linux TNSLSNR: 11.2.0.4.0——生产   07 - 5 - 2019 13:20:31开始日期   正常运行时间2小时0天。16分钟。26秒   跟踪平整   安全:本地操作系统身份验证   SNMP从   侦听器参数文件/u01/app/11.2.0.4/网格/网络/admin/listener.ora   侦听器日志文件/u01/app/11.2.0.4/网格/日志/诊断接头/tnslsnr/wallet01/listener_scan1/警告/log.xml   听端点总结……   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

【Oracle数据库】Oracle RAC(九):扫描