ORACLE RAC--LB三种模式的测试

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
日志服务 SLS,月写入数据量 50GB 1个月
简介:
ORACLE RAC--LB三种模式的测试
 
====================================
测试分三种模式:
1. client-side LB模式
2.server-side LB模式
3.client-side和server-side混合模式

 
==================================== 
1.单纯的 client-side LB模式:

(1)配置客户端tnsnames.ora内容如下:

RAC =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac1-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = rac2-vip)(PORT = 1521))
(LOAD_BALANCE = yes)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = RAC)
)
)
(2)数据库的准备工作:

去掉server-side load balance内容:

SQL>  alter system set remote_listener='' scope=spfile sid='*';
System altered. 

重启database 和listener:

[oracle@rac1 ~]$ srvctl stop database -d rac
[oracle@rac1 ~]$ srvctl stop listener -n rac2
[oracle@rac1 ~]$ srvctl stop listener -n rac1
[oracle@rac1 ~]$ srvctl start listener -n rac1 
[oracle@rac1 ~]$ srvctl start listener -n rac2
[oracle@rac1 ~]$ srvctl start database -d rac
 
重启后,清空两节点的Listener日志:
 
[oracle@rac1 ~]$ cd /u01/oracle/product/10.2.0/db_1/network/log/
[oracle@rac1 log]$ cat /dev/null>listener_rac1.log
[oracle@rac2 ~]$ cd /u01/oracle/product/10.2.0/db_1/network/log/
[oracle@rac2 log]$ cat /dev/null>listener_rac2.log 

(3)执行测试脚本,参数设置为1000,代表有1000客户端建立连接。

[oracle@st01 LB]$ ./test.sh rac 1000 > rac.log 

(4)检查测试结果:

[oracle@st01 LB]$ grep RAC1 rac.log |wc -l
521
[oracle@st01 LB]$ grep RAC2 rac.log |wc -l
479

(5)提取两节点的Listener日志内容:


RAC1节点上的实例1:

[oracle@rac1 log]$ grep establish listener_rac1.log |wc -l 
521
此处的521,说明节点RAC1一共接收了521个用户连接。 

[oracle@rac1 log]$ grep INSTANCE_NAME=RAC listener_rac1.log |wc -l 
0

其中,说明这521个连接中有0个是从节点RAC2的实例2的Listener路由过来的,计算client-side Load Balance为:521-0=521,
客户端发出了521个到实例1的连接请求。


RAC2节点上的实例2:

[oracle@rac2 log]$ grep establish listener_rac2.log |wc -l
479
说明一共接收了765个用户连接。 

[oracle@rac2 log]$ grep INSTANCE_NAME=RAC listener_rac2.log |wc -l
0
其中,有479个连接中有0个是从节点RAC1的实例1的Listener路由过来的,计算client-side Load Balance为:479-0=479,
客户端发出了479个到实例2的连接请求。

这里只是用了 client-side LB,也就是说客户端从TNS地址列表中随机选择实例发送请求,这个随机算法的结果是521/470,
可见这个随机算法还是比较平均的。

****************************************************************************

2.测试单纯的server-side LB模式:

(1)配置客户端tnsnames.ora内容如下,关闭client-side LB模式:

RAC =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac1-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = rac2-vip)(PORT = 1521))
(LOAD_BALANCE = off)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = RAC)
)
)

(2)数据库服务端的准备工作:

启动server-side Load balance:
SQL> show parameter remote
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
remote_archive_enable string true
remote_dependencies_mode string TIMESTAMP
remote_listener string
remote_login_passwordfile string EXCLUSIVE
remote_os_authent boolean FALSE
remote_os_roles boolean FALSE

SQL>  alter system set remote_listener='LISTENERS_RAC' scope=spfile sid='*';
System altered. 

重启database和listener:

[oracle@rac1 ~]$ srvctl stop database -d rac
[oracle@rac1 ~]$ srvctl stop listener -n rac2
[oracle@rac1 ~]$ srvctl stop listener -n rac1
[oracle@rac1 ~]$ srvctl start listener -n rac1 
[oracle@rac1 ~]$ srvctl start listener -n rac2
[oracle@rac1 ~]$ srvctl start database -d rac
清空两节点上的listener日志 :
[oracle@rac1 log]$ cat /dev/null > listener_rac1.log 
[oracle@rac2 log]$ cat /dev/null > listener_rac2.log 

(3)执行测试脚本 :

[oracle@st01 LB]$ ./test.sh rac 1000 > rac_sl.log

(4)检查测试结果:


[oracle@st01 LB]$ grep RAC1 rac_sl.log |wc -l
235
[oracle@st01 LB]$ grep RAC2 rac_sl.log |wc -l 
765

(5)提取两节点的Listener日志内容:


RAC1节点上的实例1:

[oracle@rac1 log]$ grep establish listener_rac1.log |wc -l 
1000
此处的1000,说明节点RAC1一共打接收了1000个用户连接。 

[oracle@rac1 log]$ grep INSTANCE_NAME=RAC listener_rac1.log |wc -l 
0
其中,有0个是从节点RAC2的实例2的Listener路由过来的,计算client-side Load Balance为:1000-0=1000,
客户端发出了1000个到实例1的连接请求。


RAC2节点上的实例2:

[oracle@rac2 log]$ grep establish listener_rac2.log |wc -l
765
说明一共接收了765个用户连接。 

[oracle@rac2 log]$ grep INSTANCE_NAME=RAC listener_rac2.log |wc -l
765
其中,有765个是从节点RAC1的实例1的Listener路由过来的,计算client-side Load Balance为:765-765=0,
客户端发出了0个到实例2的连接请求。

在这个实验中,客户端的tnsnames.ora配置中,使用LOAD_BALANCE = OFF,禁用了client-side Load Balance,所以,
用户的1000个连接全部发给了实例1,因为地址列表中rac2-vip是放在第条的。其他结果说明以下几条:
(1)Listener路由到实例的连接请求数量:实例1=1000-765=235,实例2=0-0=0;
(2)远程的Listener路由到本实例连接请求数量:实例1=0,实例2=765; 
(3)Server-side load balance的分配=235/765,从数量上看,不如client-side LB那么均匀。

**************************************************************************** 
 

3.测试client-side和server-side混合模式:

(1)配置客户端tnsnames.ora内容如下,关闭client-side LB模式:

RAC =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac1-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = rac2-vip)(PORT = 1521))
(LOAD_BALANCE = yes)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = RAC)
)
)

(2)数据库服务端的准备工作:

启动server-side Load balance:
SQL> show parameter remote
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
remote_archive_enable string true
remote_dependencies_mode string TIMESTAMP
remote_listener string
remote_login_passwordfile string EXCLUSIVE
remote_os_authent boolean FALSE
remote_os_roles boolean FALSE

SQL>  alter system set remote_listener='LISTENERS_RAC' scope=spfile sid='*';
System altered. 

重启database和listener:

[oracle@rac1 ~]$ srvctl stop database -d rac
[oracle@rac1 ~]$ srvctl stop listener -n rac2
[oracle@rac1 ~]$ srvctl stop listener -n rac1
[oracle@rac1 ~]$ srvctl start listener -n rac1 
[oracle@rac1 ~]$ srvctl start listener -n rac2
[oracle@rac1 ~]$ srvctl start database -d rac
清空两节点上的listener日志 :
[oracle@rac1 log]$ cat /dev/null > listener_rac1.log 
[oracle@rac2 log]$ cat /dev/null > listener_rac2.log 

(3)执行测试脚本:

[oracle@st01 LB]$ ./test.sh rac 1000 > rac_mix.log

(4)检查测试结果:
[oracle@st01 LB]$ grep RAC1 rac_mix.log |wc -l
735
[oracle@st01 LB]$ grep RAC2 rac_mix.log |wc -l 
265

(5)提取两节点的Listener日志内容:


RAC1节点上的实例1:

[oracle@rac1 log]$ grep establish listener_rac1.log |wc -l 
937
此处的937,说明节点RAC1一共打接收了937个用户连接。 

[oracle@rac1 log]$ grep INSTANCE_NAME=RAC listener_rac1.log |wc -l 
448
其中,在937个连接中有448个是从节点RAC2的实例2的Listener路由过来的,计算client-side Load Balance为:937-448=489,
客户端发出了489个到实例1的连接请求。


RAC2节点上的实例2:

[oracle@rac2 log]$ grep establish listener_rac2.log |wc -l
713
说明一共接收了765个用户连接。 

[oracle@rac2 log]$ grep INSTANCE_NAME=RAC listener_rac2.log |wc -l
202


其中,有202个是从节点RAC1的实例1的Listener路由过来的,计算client-side Load Balance为:713-202=511,
客户端发出了511个到实例2的连接请求。

这个实验混合了client-side和server-side两种Load Balance,结果说明如下:

(1)client-side Load Balance=489/511;
(2)Listener路由到实例的连接请求数量:实例1=489-202=284,实例2=511-448=63;
(3)远程的Listener路由到本实例连接请求数量:实例1=448,实例2=202; 
(4)Server-side load balance的分配=448/202,从数量上看,同样不如client-side LB那么均匀。
 

 


     本文转自vcdog 51CTO博客,原文链接:http://blog.51cto.com/255361/837512,如需转载请自行联系原作者



相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
3月前
|
Ubuntu Oracle 关系型数据库
Oracle VM VirtualBox之Ubuntu 22.04LTS双网卡网络模式配置
这篇文章是关于如何在Oracle VM VirtualBox中配置Ubuntu 22.04LTS虚拟机双网卡网络模式的详细指南,包括VirtualBox网络概述、双网卡网络模式的配置步骤以及Ubuntu系统网络配置。
353 3
|
4月前
|
运维 Oracle 前端开发
Oracle 11g RAC集群日常运维命令总结
Oracle 11g RAC集群日常运维命令总结
107 2
|
5月前
|
监控 Oracle 关系型数据库
关系型数据库Oracle恢复测试
【7月更文挑战第20天】
97 7
|
4月前
|
Oracle 关系型数据库
分布式锁设计问题之Oracle RAC保证多个节点写入内存Page的一致性如何解决
分布式锁设计问题之Oracle RAC保证多个节点写入内存Page的一致性如何解决
|
5月前
|
存储 负载均衡 Oracle
|
5月前
|
存储 Oracle 关系型数据库
|
5月前
|
Oracle 关系型数据库 MySQL
实时计算 Flink版产品使用问题之在online模式下增量抓取Oracle数据时,在archive_log切换时,出现数据丢失的情况,是什么原因
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
6月前
|
运维 DataWorks Oracle
DataWorks产品使用合集之在标准模式下,当同步Oracle的表或视图时,是否需要在源端的测试和生产环境中都存在要同步的表或视图
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
51 3
|
19天前
|
负载均衡 前端开发 应用服务中间件
负载均衡指南:Nginx与HAProxy的配置与优化
负载均衡指南:Nginx与HAProxy的配置与优化
39 3

推荐镜像

更多
下一篇
DataWorks