RAC配置dns解析和TAFService实现负载均衡

一、配置dns域名解析
1.配置hosts文件,两个节点一致
[root@rac1 bin]# vi /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

127.0.0.1       localhost.pandb.com   localhost

# Public
10.21.80.75 rac1.pandb.com  rac1
10.21.80.76 rac2.pandb.com  rac2

# Private
172.21.20.153   rac1-priv.pandb.com  rac1-priv
172.21.20.151   rac2-priv.pandb.com  rac2-priv

# Virtual
10.21.80.175 rac1-vip.pandb.com  rac1-vip
10.21.80.176 rac2-vip.pandb.com  rac2-vip

# SCAN
10.21.80.200  scanip.pandb.com     scanip

2.配置dns域名解析,只在一个节点上配
[root@rac1 named]# ll /etc/named.conf
-rw-r–r– 1 root named 1275 3月 24 19:35 /etc/named.conf
[root@rac1 named]# vi /etc/named.conf

options {
        listen-on port 53 { any; };
        listen-on-v6 port 53 { ::1; };
       directory      "/var/named";
       dump-file      "/var/named/data/cache_dump.db";
       statistics-file "/var/named/data/named_stats.txt";
       memstatistics-file "/var/named/data/named_mem_stats.txt";
// Those options should be used carefully because they disable port
       // randomization
       // query-source    port 53;
       // query-source-v6 port 53;
        allow-query     { any; };
        allow-query-cache { any; };
};
logging {
       channel default_debug {
                file"data/named.run";
                severity dynamic;
       };
};
view localhost_resolver {
         match-clients      { any; };
         match-destinations { any; };
          recursion yes;
         include "/etc/named.zones";
};
[root@rac1 named]# vi /etc/named.zones
zone "pandb.com." IN {
        type master;
        file "scanip.pandb.zero";
};
zone "80.21.10.in-addr.arpa." IN{
     type master;
     file "80.21.10.pandb";
};

[root@rac1 named]# ll /var/named/scanip.pandb.zero
-rw-r–r– 1 root named 618 3月 24 20:07 /var/named/scanip.pandb.zero
[root@rac1 named]# vi /var/named/scanip.pandb.zero

$TTL    86400
@       IN  SOA  scanip.pandb.com. root.pandb.com. (
                                        42              ; serial (d. adams)
                                        3H              ; refresh
                                        15M             ; retry
                                        1W              ; expiry
                                        1D )            ; minimum
        IN      NS      scanip.pandb.com.
scanip.pandb.com   IN      A       10.21.80.175
scanip.pandb.com   IN      A       10.21.80.176
scanip   IN      A       10.21.80.175
scanip   IN      A       10.21.80.176

[root@rac1 named]# ll /var/named/80.21.10.pandb
-rw-r–r– 1 root named 492 3月 24 20:05 /var/named/80.21.10.pandb
[root@rac1 named]# vi /var/named/80.21.10.pandb

$TTL    86400
@       IN      SOA     scanip.pandb.com. root.pandb.com.  (
                                      1997022700 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
        IN      NS      scanip.pandb.com.
175     IN      PTR     scanip.pandb.com.
176     IN      PTR     scanip.pandb.com.

[root@rac1 bin]# vi /etc/resolv.conf

search pandb.com
nameserver 10.21.80.75

3.另外一个节点配置dns服务器即可
[root@rac1 bin]# vi /etc/resolv.conf

search pandb.com
nameserver 10.21.80.75

4.检查域名解析是否成功
[root@rac1 bin]# nslookup scanip
Server: 10.21.80.75
Address: 10.21.80.75#53

Name: scanip.pandb.com
Address: 10.21.80.176
Name: scanip.pandb.com
Address: 10.21.80.175
二、配置TAFService

1.创建TAFService
[oracle@rac1 ~]$ srvctl add service -d pandb -s server_taf -r "pandb1,pandb2" -P BASIC
2. 启动server_taf服务
[oracle@rac1 ~]$ srvctl start service -d pandb -s server_taf
3. 检查service运行情况
[oracle@rac1 ~]$ srvctl config service -d pandb
4.确认serviceID
SQL> select name,service_id from dba_services where name = 'server_taf';
5.给service添加参数:
SQL> execute dbms_service.modify_service (service_name => 'server_taf' - 
, aq_ha_notifications => true - 
, failover_method => dbms_service.failover_method_basic - 
, failover_type => dbms_service.failover_type_select - 
, failover_retries => 180 - 
, failover_delay => 5 - 
, clb_goal => dbms_service.clb_goal_long); 
6. 确认参数修改:
col name format a15 
col failover_method format a11 heading 'METHOD' 
col failover_type format a10 heading 'TYPE' 
col failover_retries format 9999999 heading 'RETRIES' 
col goal format a10 
col clb_goal format a8 
col AQ_HA_NOTIFICATIONS format a5 heading 'AQNOT' 
SQL> select name, failover_method,failover_type, failover_retries,goal, clb_goal,aq_ha_notifications from dba_services where service_id = 3; 
7. 检查service注册情况:
[oracle@db1 bin]$ lsnrctl services1.创建TAFService
[oracle@rac1 ~]$ srvctl add service -d pandb -s server_taf -r "pandb1,pandb2" -P BASIC
2. 启动server_taf服务
[oracle@rac1 ~]$ srvctl start service -d pandb -s server_taf
3. 检查service运行情况
[oracle@rac1 ~]$ srvctl config service -d pandb
4.确认serviceID
SQL> select name,service_id from dba_services where name = 'server_taf';
5.给service添加参数:
SQL> execute dbms_service.modify_service (service_name => 'server_taf' - 
, aq_ha_notifications => true - 
, failover_method => dbms_service.failover_method_basic - 
, failover_type => dbms_service.failover_type_select - 
, failover_retries => 180 - 
, failover_delay => 5 - 
, clb_goal => dbms_service.clb_goal_long); 
6. 确认参数修改:
col name format a15 
col failover_method format a11 heading 'METHOD' 
col failover_type format a10 heading 'TYPE' 
col failover_retries format 9999999 heading 'RETRIES' 
col goal format a10 
col clb_goal format a8 
col AQ_HA_NOTIFICATIONS format a5 heading 'AQNOT' 
SQL> select name, failover_method,failover_type, failover_retries,goal, clb_goal,aq_ha_notifications from dba_services where service_id = 3; 
7. 检查service注册情况:
[oracle@db1 bin]$ lsnrctl services
LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 28-MAR-2018 17:57:02

Copyright (c) 1991, 2013, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER)))
Services Summary...
Service "+ASM" has 1 instance(s).
  Instance "+ASM1", status READY, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:0 refused:0 state:ready
         LOCAL SERVER
Service "pandb" has 1 instance(s).
  Instance "pandb1", status READY, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:3341 refused:0 state:ready
         LOCAL SERVER
Service "pandbXDB" has 1 instance(s).
  Instance "pandb1", status READY, has 1 handler(s) for this service...
    Handler(s):
      "D000" established:0 refused:0 current:0 max:1022 state:ready
         DISPATCHER <machine: rac1, pid: 151597>
         (ADDRESS=(PROTOCOL=tcp)(HOST=rac1.pandb.com)(PORT=20556))
Service "pandbzzz" has 1 instance(s).
  Instance "pandb1", status READY, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:3341 refused:0 state:ready
         LOCAL SERVER
Service "server_taf" has 1 instance(s).
  Instance "pandb1", status READY, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:3341 refused:0 state:ready
         LOCAL SERVER
The command completed successfully

三、查看状态

[oracle@rac1 admin]$ lsnrctl

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 28-MAR-2018 17:45:20

Copyright (c) 1991, 2013, Oracle.  All rights reserved.

Welcome to LSNRCTL, type "help" for information.

LSNRCTL> set current_listener LISTENER
Current Listener is LISTENER
LSNRCTL> service
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
Services Summary...
Service "+ASM" has 1 instance(s).
  Instance "+ASM1", status READY, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:0 refused:0 state:ready
         LOCAL SERVER
Service "pandb" has 1 instance(s).
  Instance "pandb1", status READY, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:2946 refused:0 state:ready
         LOCAL SERVER
Service "pandbXDB" has 1 instance(s).
  Instance "pandb1", status READY, has 1 handler(s) for this service...
    Handler(s):
      "D000" established:0 refused:0 current:0 max:1022 state:ready
         DISPATCHER <machine: rac1, pid: 151597>
         (ADDRESS=(PROTOCOL=tcp)(HOST=rac1.pandb.com)(PORT=20556))
Service "pandbzzz" has 1 instance(s).
  Instance "pandb1", status READY, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:2946 refused:0 state:ready
         LOCAL SERVER
Service "server_taf" has 1 instance(s).
  Instance "pandb1", status READY, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:2946 refused:0 state:ready
         LOCAL SERVER
The command completed successfully
LSNRCTL> set current_listener scanip
Current Listener is scanip
LSNRCTL> service
Connecting to (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=))(ADDRESS=(PROTOCOL=TCP)(HOST=10.21.80.200)(PORT=1521)))
Services Summary...
Service "+ASM" has 2 instance(s).
  Instance "+ASM1", status READY, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:0 refused:0 state:ready
         REMOTE SERVER
         (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.21.80.175)(PORT=1521)))
  Instance "+ASM2", status READY, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:0 refused:0 state:ready
         REMOTE SERVER
         (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.21.80.176)(PORT=1521)))
Service "pandb" has 2 instance(s).
  Instance "pandb1", status READY, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:2838 refused:0 state:ready
         REMOTE SERVER
         (ADDRESS=(PROTOCOL=TCP)(HOST=10.21.80.175)(PORT=1521))
  Instance "pandb2", status READY, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:5002 refused:0 state:ready
         REMOTE SERVER
         (ADDRESS=(PROTOCOL=TCP)(HOST=10.21.80.176)(PORT=1521))
Service "pandbXDB" has 2 instance(s).
  Instance "pandb1", status READY, has 1 handler(s) for this service...
    Handler(s):
      "D000" established:0 refused:0 current:0 max:1022 state:ready
         DISPATCHER <machine: rac1, pid: 151597>
         (ADDRESS=(PROTOCOL=tcp)(HOST=rac1.pandb.com)(PORT=20556))
  Instance "pandb2", status READY, has 1 handler(s) for this service...
    Handler(s):
      "D000" established:0 refused:0 current:0 max:1022 state:ready
         DISPATCHER <machine: rac2, pid: 5969>
         (ADDRESS=(PROTOCOL=tcp)(HOST=rac2.pandb.com)(PORT=10696))
Service "pandbzzz" has 1 instance(s).
  Instance "pandb1", status READY, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:2838 refused:0 state:ready
         REMOTE SERVER
         (ADDRESS=(PROTOCOL=TCP)(HOST=10.21.80.175)(PORT=1521))
Service "server_taf" has 2 instance(s).
  Instance "pandb1", status READY, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:2838 refused:0 state:ready
         REMOTE SERVER
         (ADDRESS=(PROTOCOL=TCP)(HOST=10.21.80.175)(PORT=1521))
  Instance "pandb2", status READY, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:5002 refused:0 state:ready
         REMOTE SERVER
         (ADDRESS=(PROTOCOL=TCP)(HOST=10.21.80.176)(PORT=1521))
The command completed successfully
[grid@rac2 ~]$ srvctl config scan
SCAN 名称: scanip, 网络: 1/10.21.80.0/255.255.255.0/team0
SCAN VIP 名称: scan1, IP: /scanip/10.21.80.200
[grid@rac2 ~]$ srvctl status scan
SCAN VIP scan1 已启用
SCAN VIP scan1 正在节点 rac1 上运行

四、客户端连接rac数据库时tnsnames.ora文件的配置

[root@dg3 ~]# vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6


10.21.80.77     dg3
# Virtual
10.21.80.175 rac1-vip.pandb.com  rac1-vip
10.21.80.176 rac2-vip.pandb.com  rac2-vip

# SCAN
10.21.80.200  scanip.pandb.com     scanip
[oracle@dg3 admin]$ vi /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
pandb_scan =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = scanip)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = server_taf)
    )
  )

猜你喜欢

转载自blog.csdn.net/cuiyan1982/article/details/79701092