SAS Viya (53)

教學目標

初步了解如何解決 SAS Viya 3.4 中 CAS 伺服器無法正常啟動的問題。

重點概念

首先當我們部署完成 SAS Viya 3.4 MPP 架構之後,主要會啟動 Cloud Analytics Services (CAS) 服務,以利進行分散式運算。此時可能會發生雖然 Ansible 工具部署 SAS Viya 3.4 正常完成沒有錯誤,但是以「sasboot」登入至「SAS Environment Manager」管理環境查看伺服器時,將會發現「cas-shared-default」的狀態為灰色無法進行操作,並且也無法進行資料的操作,因為無法選擇資料來源,以及無法正常查看授權產品資訊等情況發生,因此本篇文章主要就是要解決此問題。

接著我們先登入至所有 SAS Viya 伺服器,並且執行「ps aux|grep casluanch」指令確認是否每一台伺服器皆正常啟動 caslaunch 工具,若發現哪一台沒有正常啟動時,請執行「cat /etc/fstab」指令查看安裝 SAS Viya 的儲存空間是否被設定為「nosuid」,預設為「/opt/sas」,若是則請將「/opt/sas」複製至沒有設為「nosuid」的儲存空間,並且建立軟連結「/opt/sas」對應至沒有設為「nosuid」的儲存空間。

確認 caslaunch 是否正常執行

1
# ps aux|grep caslaunch

查看儲存空間是否為 nosuid

1
# cat /etc/fstab

建立對應的軟連結

1
2
3
# cp -Rp /opt/sas /sys/sas
# rm -rf /opt/sas
# ln -s /sys/sas /opt/sas

再來當我們設定完成之後我們在 SAS Viya 的「CAS Controller」伺服器執行「/etc/init.d/sas-viya-cascontroller-default restart」重新啟動 CAS 伺服器,其中包括「CAS Controller」和「CAS Worker」伺服器。至於執行相關記錄我們主要能夠查看 「/opt/sas/viya/config/var/log/cas/default」目錄中的「.log」和「.err」的記錄檔,像是若 CAS Worker 沒有正常啟動,則我們查看「caslaunchdefault_controller_daemon.log」記錄檔,則會發現「Node ‘‘ has not connected to the grid.」和「After 30 seconds nodes have not connected to the grid」的錯誤訊息。此外我們更能夠設定「/opt/sas/viya/config/etc/cas/default/logconfig.trace.xml」設定檔的記錄等級皆為「Trace」,以利查看更多執行詳細資訊,像是當我們設定記錄檔等級為「Trace」,並且重新啟動 CAS 伺服器之後,我們就能夠從「cas.log」記錄檔中查看所有 CAS 伺服器所執行「caslaunch」的完整指令,此時當我們將「caslaunch」的完整指令至對應的 CAS 伺服器執行時就能夠發現更多相關的錯誤訊息,像是以「cas」帳號執行完整指令,此時就會發現「UseHostToken specified in non-root launcher」的錯誤訊息。

重新啟動 CAS 伺服器

1
# /etc/init.d/sas-viya-cascontroller-default restart

查看 CAS 記錄檔

1
2
3
4
5
# cd /opt/sas/viya/config/var/log/cas/default
# ll -ltr
# vi cas_<yyyy-mm-dd>_<server>_<number>.log
# vi caslaunch_default_controller_daemon.log
# vi caslaunch_default_controller_daemon.err

設定 CAS 伺服器記錄檔等級

1
# vi/opt/sas/viya/config/etc/cas/default/logconfig.trace.xml

最後若還是有問題,則請設定 CAS 伺服器相關權限,透過權限的設定我們能夠了解 CAS 伺服器執行「caslaunch」工具主要是透過是以「cas」帳號 SSH 遠端無密碼連線至所有 CAS 伺服器,並且透過「root」帳號進行執行,所以若是部署的儲存空間設為「nosuid」將會導致無法正常執行。

設定 CAS 伺服器相關權限

1
2
3
4
5
6
# chown root:root /opt/sas/viya/home/SASFoundation/utilities/bin/caslaunch
# chmod u+s /opt/sas/viya/home/SASFoundation/utilities/bin/caslaunch
# chown cas:sas /opt/sas/viya/config/etc/cas/default/node.lua
# chown cas:sas /opt/sas/viya/config/etc/SASSecurityCertificateFramework/private/cas/shared/ -R
# chown cas:sas /opt/sas/viya/config/etc/SASSecurityCertificateFramework/tls/certs/cas/shared/default/ -R
# chown cas:sas /opt/sas/viya/config/etc/SASSecurityCertificateFramework/tokens/cas/shared/default/ -R

總結當我們部署 SAS Viya 3.4 時除了注意設定參數和網路連線之外,我們必須確認部署的儲存空間沒有設為「nosuid」,否則將會導致 CAS 伺服器無法正常啟動。

相關資源