Wednesday, March 14, 2012

srvctl add scan_listener: Сквозь чащу цветного леса




Так случилось, что при инсталляции кластера был прописан только один IP в качестве SCAN:

[oracle@ed01db01 ~]$ srvctl config scan
SCAN name: ed01-scan, Network: 1/172.24.0.0/255.255.0.0/eth1
SCAN VIP name: scan1, IP: /ed01-scan/172.24.1.16

Однако, в DNS были прописаны все три адреса:

[oracle@ed01db01 ~]$ nslookup ed01-scan
Server:         172.27.100.1
Address:        172.27.100.1#53
Name:   ed01-scan.fors.ru
Address: 172.24.1.17
Name:   ed01-scan.fors.ru
Address: 172.24.1.18
Name:   ed01-scan.fors.ru
Address: 172.24.1.16

[oracle@ed01db01 ~]$ host ed01-scan
ed01-scan.fors.ru has address 172.24.1.17
ed01-scan.fors.ru has address 172.24.1.16
ed01-scan.fors.ru has address 172.24.1.18

Поэтому в один прекрасный день возникло непреодолимое желание воспользоваться всеми тремя адресами в полном объеме.

Прямые попытки добавить руками новые IP оказались безуспешными:

[oracle@ed01db01 ~]$ srvctl add scan -n ed01-scan
PRCS-1037 : Single Client Access Name VIPs already exist

[oracle@ed01db01 ~]$ srvctl config scan
SCAN name: ed01-scan, Network: 1/172.24.0.0/255.255.0.0/eth1
SCAN VIP name: scan1, IP: /ed01-scan/172.24.1.16

[oracle@ed01db01 ~]$ srvctl add scan -n scan2
PRCS-1016 : Failed to resolve Single Client Access Name scan2

Поэтому пришлось немного теоретически подковаться.
Однако это тоже не помогло:

[oracle@ed01db01 ~]$ which srvctl
/u01/app/oracle/product/11.2.0.3/dbhome_1/bin/srvctl
[oracle@ed01db01 ~]$ srvctl modify scan -n ed01-scan
PRCS-1034 : Failed to modify Single Client Access Name ed01-scan
PRCR-1071 : Failed to register or update resource type ora.scan_vip.type
CRS-0245:  User doesn't have enough privilege to perform the operation
[oracle@ed01db01 ~]$ cd /u01/app/11.2.0.3/grid/bin/
[oracle@ed01db01 bin]$ ./srvctl modify scan -n ed01-scan
PRCS-1034 : Failed to modify Single Client Access Name ed01-scan
PRCR-1071 : Failed to register or update resource type ora.scan_vip.type
CRS-0245:  User doesn't have enough privilege to perform the operation

Как выяснилось: ни пользователь grid ни oracle не обладают достаточными правами. Только root.

В результате упорных поисков был найден замечательный документ
How to update the IP address of the SCAN VIP resources (ora.scan.vip) [ID 952903.1]
который казалось бы окончательно открыл нам глаза на магию смены адресов,
но чуда опять не произошло:

[root@ed01db01 ~]# which srvctl
/u01/app/11.2.0.3/grid/bin/srvctl
[root@ed01db01 ~]# srvctl modify scan -n ed01-scan
[root@ed01db01 ~]# srvctl config scan
SCAN name: ed01-scan, Network: 1/172.24.0.0/255.255.0.0/eth1
SCAN VIP name: scan1, IP: /ed01-scan/172.24.1.16


Оказалось, что в нашем случае файл /etc/hosts содержал очевидную особенность, в результате которой возрождался только один адрес:
### Compute Node Client Access SCAN
172.24.1.16   ed01-scan.fors.ru       ed01-scan
# 172.24.1.17   ed01-scan.fors.ru       ed01-scan
# 172.24.1.18   ed01-scan.fors.ru       ed01-scan

После безжалостной правки
### Compute Node Client Access SCAN
# 172.24.1.16   ed01-scan.fors.ru       ed01-scan
# 172.24.1.17   ed01-scan.fors.ru       ed01-scan
# 172.24.1.18   ed01-scan.fors.ru       ed01-scan


Все пошло как по-маслу:

[root@ed01db01 ~]# srvctl modify scan -n ed01-scan.fors.ru

[root@ed01db01 ~]# srvctl config scan
SCAN name: ed01-scan.fors.ru, Network: 1/172.24.0.0/255.255.0.0/eth1
SCAN VIP name: scan1, IP: /ed01-scan.fors.ru/172.24.1.16
SCAN VIP name: scan2, IP: /ed01-scan.fors.ru/172.24.1.17
SCAN VIP name: scan3, IP: /ed01-scan.fors.ru/172.24.1.18

[root@ed01db01 ~]# srvctl status scan
SCAN VIP scan1 is enabled
SCAN VIP scan1 is running on node ed01db02
SCAN VIP scan2 is enabled
SCAN VIP scan2 is running on node ed01db01
SCAN VIP scan3 is enabled
SCAN VIP scan3 is running on node ed01db01

 

No comments:

Post a Comment

cellcli -e list diskmap

The interesting LIST DISKMAP command in the storage cells links all views to hard disks: PCI bus address as Name 252:5, OS name (/dev/sdh,...