一、 SSH 互信和 RAC 的關系
1、SSH 互信對 RAC 的作用
Oracle 11g R2 在安裝 Grid Infrastructure 的時候,能夠通過安裝程序配置節
點間的 SSH 用戶等效性,之所以要在安裝之前配置 SSH 用戶等效性,是為了能
夠在安裝前使用 CVU 工具來檢查安裝軟件的要求是否滿足。 CVU 檢查需要由非
root 用戶來執行,如果執行 Clusterware 和 ASM 的檢查就用 grid 用戶執行檢查
的命令,如果執行 Database 的檢查就用 oracle 用戶來執行檢查的命令。
2、SSH 互信算法
SSH 互信可以使用兩種加密算法: RSA 和 DSA 。其中 RSA 是 SSH 1.5 中的加
密算法, DSA 是 SSH 2.0 的默認加密算法。所有 SSH 有關密匙的配置文件都放在
$HOME/.ssh 目錄下,其中 RSA 的公匙存放在 id_rsa.pub 中,私匙存放在 id_rsa
中; DSA 的公匙存放在 id_dsa.pub 中,私匙存放在 id_dsa 中。
如 果 將 所 有 節 點 生 成 的 公 匙 都 存 放 在
rhel1
節點的
$HOME/.ssh/authorized_keys 文件中,那么通過 rhel1 執行節點間的拷貝或執行
shell 腳本都不需要輸入密碼進行確認。原理是:每個節點用戶都有屬于自己的公
匙和私匙,節點在發送數據到其他節點之前使用私匙進行加密,然后將數據發送
到其他節點;使用私匙加密必然使用公匙解密,反之使用公匙加密,必然使用私
匙解密。如果其他節點保存了發送節點的公匙,那么自然就可以在不輸入密碼的 情況下解密。
3、SSH 對 RAC 搭建的影響
用戶等效性的創建只需要在軟件安裝的時候使用, Oracle 安裝過程中會利用
SSH 提供的 scp 工具拷貝安裝文件到遠程節點服務器,利用 SSH 提供的 ssh 工具
執行相應的 shell 腳本,達到只在一個節點安裝即可部署 RAC 的目的,所以,在
安裝之前只需要配置安裝節點到所有節點的用戶有效性即可。當然,為了方便也
可以配置所有節點用戶相互之間的等效性。
二、測試庫 ORCL 啟動
1、檢查集群狀態
$ crsctl status res -t
-------------------------------------------------------------------------------
-
NAME TARGET STATE SERVER STATE_DETAILS
-------------------------------------------------------------------------------
-
Local Resources
-------------------------------------------------------------------------------
-
ora.ACFSDG.dg
ONLINE ONLINE orcla
ONLINE ONLINE orclb
ora.DATADG.dg
ONLINE ONLINE orcla
ONLINE ONLINE orclb
ora.LISTENER.lsnr
ONLINE ONLINE orcla
ONLINE ONLINE orclb
ora.OCRDG.dg
ONLINE ONLINE orcla
ONLINE ONLINE orclb
ora.asm
ONLINE ONLINE orcla Started
ONLINE ONLINE orclb Started
ora.gsd
OFFLINE OFFLINE orcla
OFFLINE OFFLINE orclb
ora.net1.network
ONLINE ONLINE orcla
ONLINE ONLINE orclb
ora.ons
ONLINE ONLINE orcla
ONLINE ONLINE orclb
ora.registry.acfs
ONLINE ONLINE orcla
ONLINE ONLINE orclb
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE orcla
ora.cvu
1 ONLINE ONLINE orcla
ora.oc4j
1 ONLINE ONLINE orcla
ora.orcl.db
1 ONLINE ONLINE orcla Open
2 ONLINE ONLINE orclb Open
ora.orcl.sf_orcl.svc
1 ONLINE ONLINE orclb
ora.orcla.vip
1 ONLINE ONLINE orcla
ora.orclb.vip
1 ONLINE ONLINE orclb
ora.scan1.vip
1 ONLINE ONLINE orcla
2、檢查 Oracle 用戶的互信
[oracle@orcla:/home/oracle]$ id
uid=1101(oracle)
gid=1000(oinstall)
groups=1000(oinstall),1201(asmdba),1300(dba),1301(oper)
[oracle@orclb:/home/oracle]$ id
uid=1101(oracle) gid=1000(oinstall)
groups=1000(oinstall),1201(asmdba),1300(dba),1301(oper) [oracle@orcla:/home/oracle]$ ssh orclb date
Thu Jan 11 03:54:23 CST 2018
[oracle@orclb:/home/oracle]$ ssh orcla date
Thu Jan 11 03:55:10 CST 2018
3、確認 Oracle 用戶的互信配置文件
[oracle@orcla:/home/oracle/.ssh]$ ls -lrt
total 20
-rw-r--r-- 1 oracle oinstall 23 Apr 13 2017 config
-rw-r--r-- 1 oracle oinstall 222 Apr 13 2017 id_rsa.pub
-rw------- 1 oracle oinstall 887 Apr 13 2017 id_rsa
-rw-r--r-- 1 oracle oinstall 664 Apr 13 2017 authorized_keys
-rw-r--r-- 1 oracle oinstall 804 Apr 13 2017 known_hosts
[oracle@orclb:/home/oracle/.ssh]$ ls -lrt
total 20
-rw-r--r-- 1 oracle oinstall 23 Apr 13 2017 config
-rw-r--r-- 1 oracle oinstall 222 Apr 13 2017 id_rsa.pub
-rw------- 1 oracle oinstall 883 Apr 13 2017 id_rsa
-rw-r--r-- 1 oracle oinstall 664 Apr 13 2017 authorized_keys
-rw-r--r-- 1 oracle oinstall 804 Apr 13 2017 known_hosts
三、破壞 oracle 用戶的 SSH 互信
1、測試修改用戶密碼是否影響 SSH 互信
1.1 、修改 orcla 節點的 Oracle 用戶密碼
[oracle@orcla:/home/oracle/.ssh]$ passwd
Changing password for user oracle.
Changing password for oracle.
(current) UNIX password:
New password:
Retype new password:
passwd: all authentication tokens updated successfully. 1.2 、檢查 orcla 節點 SSH 互信文件沒有更新
[oracle@orcla:/home/oracle/.ssh]$ ls -lrt
total 20
-rw-r--r-- 1 oracle oinstall 23 Apr 13 2017 config
-rw-r--r-- 1 oracle oinstall 222 Apr 13 2017 id_rsa.pub
-rw------- 1 oracle oinstall 887 Apr 13 2017 id_rsa
-rw-r--r-- 1 oracle oinstall 664 Apr 13 2017 authorized_keys
-rw-r--r-- 1 oracle oinstall 804 Apr 13 2017 known_hosts
1.3 、修改 orclb 節點的 Oracle 用戶密碼
[oracle@orclb:/home/oracle/.ssh]$ passwd
Changing password for user oracle.
Changing password for oracle.
(current) UNIX password:
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
1.4 、檢查 orclb 節點 SSH 互信文件沒有更新
[oracle@orcla:/home/oracle/.ssh]$ ls -lrt
total 20
-rw-r--r-- 1 oracle oinstall 23 Apr 13 2017 config
-rw-r--r-- 1 oracle oinstall 222 Apr 13 2017 id_rsa.pub
-rw------- 1 oracle oinstall 887 Apr 13 2017 id_rsa
-rw-r--r-- 1 oracle oinstall 664 Apr 13 2017 authorized_keys
-rw-r--r-- 1 oracle oinstall 804 Apr 13 2017 known_hosts 1.5 、測試 2 個節點 oracle 用戶的互信
[oracle@orcla:/home/oracle/.ssh]$ ssh orclb date
Thu Jan 11 04:07:20 CST 2018
[oracle@orclb:/home/oracle/.ssh]$ ssh orcla date
Thu Jan 11 04:07:30 CST 2018
1.6 、總結
通過上面的測試可以看出修改用戶密碼并不會影響 SSH 互信。
2、破壞 SSH 互信配置文件
2.1 、把 SSH 配置文件放到 BAK 目錄下
2.1.1、節點 1
[oracle@orcla:/home/oracle]$ cd .ssh
[oracle@orcla:/home/oracle/.ssh]$ ls -lrt
total 4
drwxr-xr-x 2 oracle oinstall 4096 Jan 11 04:09 bak
[oracle@orcla:/home/oracle/.ssh]$ cd bak
[oracle@orcla:/home/oracle/.ssh/bak]$ ls -lrt
total 20
-rw-r--r-- 1 oracle oinstall 23 Apr 13 2017 config
-rw-r--r-- 1 oracle oinstall 222 Apr 13 2017 id_rsa.pub
-rw------- 1 oracle oinstall 887 Apr 13 2017 id_rsa
-rw-r--r-- 1 oracle oinstall 664 Apr 13 2017 authorized_keys
-rw-r--r-- 1 oracle oinstall 804 Apr 13 2017 known_hosts 2.1.2、節點 2
[oracle@orclb:/home/oracle]$ cd .ssh
[oracle@orclb:/home/oracle/.ssh]$ ls -lrt
total 4
drwxr-xr-x 2 oracle oinstall 4096 Jan 11 04:09 bak
[oracle@orclb:/home/oracle/.ssh]$ cd bak
[oracle@orclb:/home/oracle/.ssh/bak]$ ls -lrt
total 20
-rw-r--r-- 1 oracle oinstall 23 Apr 13 2017 config
-rw-r--r-- 1 oracle oinstall 222 Apr 13 2017 id_rsa.pub
-rw------- 1 oracle oinstall 883 Apr 13 2017 id_rsa
-rw-r--r-- 1 oracle oinstall 664 Apr 13 2017 authorized_keys
-rw-r--r-- 1 oracle oinstall 804 Apr 13 2017 known_hosts
2.2 、測試 Oracle 用戶節點互信
2.2.1、節點 1
[oracle@orcla:/home/oracle]$ ssh orclb date
The authenticity of host 'orclb (192.168.56.101)' can't be established.
RSA key fingerprint is 9c:d5:db:e5:83:62:81:db:14:93:cc:e0:b4:8a:2d:be.
Are you sure you want to continue connecting (yes/no)?
2.2.2、節點 2
$ ssh orcla date
The authenticity of host 'orcla (192.168.56.100)' can't be established.
RSA key fingerprint is 93:2e:22:5d:26:6d:53:f3:8f:20:ec:26:cc:62:82:dd.
Are you sure you want to continue connecting (yes/no)? 2.3 、檢查集群狀態
[grid@orcla:/home/grid]$ crsctl status res -t
-------------------------------------------------------------------------------
-
NAME TARGET STATE SERVER STATE_DETAILS
-------------------------------------------------------------------------------
-
Local Resources
-------------------------------------------------------------------------------
-
ora.ACFSDG.dg
ONLINE ONLINE orcla
ONLINE ONLINE orclb
ora.DATADG.dg
ONLINE ONLINE orcla
ONLINE ONLINE orclb
ora.LISTENER.lsnr
ONLINE ONLINE orcla
ONLINE ONLINE orclb
ora.OCRDG.dg
ONLINE ONLINE orcla
ONLINE ONLINE orclb
ora.asm
ONLINE ONLINE orcla Started
ONLINE ONLINE orclb Started
ora.gsd
OFFLINE OFFLINE orcla
OFFLINE OFFLINE orclb
ora.net1.network
ONLINE ONLINE orcla
ONLINE ONLINE orclb
ora.ons
ONLINE ONLINE orcla
ONLINE ONLINE orclb
ora.registry.acfs
ONLINE ONLINE orcla
ONLINE ONLINE orclb
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE orcla
ora.cvu
1 ONLINE ONLINE orcla
ora.oc4j
1 ONLINE ONLINE orcla
ora.orcl.db
1 ONLINE ONLINE orcla Open
2 ONLINE ONLINE orclb Open
ora.orcl.sf_orcl.svc
1 ONLINE ONLINE orclb
ora.orcla.vip
1 ONLINE ONLINE orcla
ora.orclb.vip
1 ONLINE ONLINE orclb
ora.scan1.vip
1 ONLINE ONLINE orcla
注:可以看出集群狀態正常
2.4 、檢查 2 個節點 alert 日志
節點 2 個節點的 alert 日志無刷新,無報錯,無告警信息。
2.5 、總結
通過上面的測試可以推斷出:破壞 oracle 用戶的 SSH 互信配置文件,并不會影
響 RAC 集群的正常運行。 四、恢復 oracle 用戶的 SSH 互信
1、恢復 oracle 用戶的 SSH 互信配置文件
1.1 、節點 1
[oracle@orcla:/home/oracle/.ssh/bak]$ ls -lrt
total 20
-rw-r--r-- 1 oracle oinstall 23 Apr 13 2017 config
-rw-r--r-- 1 oracle oinstall 222 Apr 13 2017 id_rsa.pub
-rw------- 1 oracle oinstall 887 Apr 13 2017 id_rsa
-rw-r--r-- 1 oracle oinstall 664 Apr 13 2017 authorized_keys
-rw-r--r-- 1 oracle oinstall 804 Apr 13 2017 known_hosts
[oracle@orcla:/home/oracle/.ssh/bak]$ mv * /home/oracle/.ssh
[oracle@orcla:/home/oracle/.ssh/bak]$ ls -lrt
total 0
[oracle@orcla:/home/oracle/.ssh/bak]$ cd ../
[oracle@orcla:/home/oracle/.ssh]$ ls -lrt
total 24
-rw-r--r-- 1 oracle oinstall 23 Apr 13 2017 config
-rw-r--r-- 1 oracle oinstall 222 Apr 13 2017 id_rsa.pub
-rw------- 1 oracle oinstall 887 Apr 13 2017 id_rsa
-rw-r--r-- 1 oracle oinstall 664 Apr 13 2017 authorized_keys
-rw-r--r-- 1 oracle oinstall 804 Apr 13 2017 known_hosts
drwxr-xr-x 2 oracle oinstall 4096 Jan 11 04:21 bak
[oracle@orcla:/home/oracle/.ssh]$
1.2 、節點 2
[oracle@orclb:/home/oracle/.ssh/bak]$ ls -lrt
total 20
-rw-r--r-- 1 oracle oinstall 23 Apr 13 2017 config
-rw-r--r-- 1 oracle oinstall 222 Apr 13 2017 id_rsa.pub
-rw------- 1 oracle oinstall 883 Apr 13 2017 id_rsa
-rw-r--r-- 1 oracle oinstall 664 Apr 13 2017 authorized_keys
-rw-r--r-- 1 oracle oinstall 804 Apr 13 2017 known_hosts
[oracle@orclb:/home/oracle/.ssh/bak]$ mv * /home/oracle/.ssh
[oracle@orclb:/home/oracle/.ssh/bak]$ ls -lrt
total 0
[oracle@orclb:/home/oracle/.ssh/bak]$ cd ../ [oracle@orclb:/home/oracle/.ssh]$ ls -lrt
total 24
-rw-r--r-- 1 oracle oinstall 23 Apr 13 2017 config
-rw-r--r-- 1 oracle oinstall 222 Apr 13 2017 id_rsa.pub
-rw------- 1 oracle oinstall 883 Apr 13 2017 id_rsa
-rw-r--r-- 1 oracle oinstall 664 Apr 13 2017 authorized_keys
-rw-r--r-- 1 oracle oinstall 804 Apr 13 2017 known_hosts
drwxr-xr-x 2 oracle oinstall 4096 Jan 11 04:21 bak
2、測試 2 個節點 oracle 用戶的互信
2.1 、節點 1
[oracle@orcla:/home/oracle]$ ssh orclb date
Thu Jan 11 04:25:12 CST 2018
[oracle@orcla:/home/oracle]$
2.2 、節點 2
[oracle@orclb:/home/oracle]$ ssh orcla date
Thu Jan 11 04:25:01 CST 2018
[oracle@orclb:/home/oracle]$
3、總結
通過上面的測試可以看出: SSH 互信的配置文件 mv 到正確的目錄后, oracle 用
戶的 SSH 互信恢復正常。