2010/08/13

安裝 TKG 網格機器

主題:在 Ubuntu 9.10 環境 ( x86_32 或 x86_64 ) 安裝 Globus Toolkit 4。

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

零、環境說明

TKG 網格主機,作業系統的預設使用者:
user008

# user008 的密碼為 TKG 的專用密碼。
# 請詢問老師或學長姐。

---------

TKG Globus 網格使用者名稱:
user008

# user008 的密碼為 TKG 的專用密碼。
# 請詢問老師或學長姐。

---------

「TKG Globus 網格使用者 user008」映對到「TKG 網格主機作業系統使用者 user008」。

「TKG Globus 網格使用者 user008」使用網格主機作業系統中的 user008 帳號存取主機資源。

---------

安裝過程中,需要設定密碼或要求輸入密碼的地方,請都使用 TKG 的專用密碼。

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

一、網路設定

執行:
sudo su -

執行:
vim /etc/network/interface

將 eth0 的內容改為如下:
auto eth0
iface eth0 inet static
address 192.168.100.(主機號碼)
netmask 255.255.255.0
network 192.168.100.0
broadcast 192.168.100.255
gateway 192.168.100.1
dns-nameservers (資管系 DNS 主機位址)

執行:
/etc/init.d/networking restart

執行:
vim /etc/hostname

將內容修改為:
im(主機號碼).im.ncue.edu.tw

存檔離開,執行:
reboot

重開機之後,使用以下指令檢查一下主機名稱:
/bin/hostname

使用以下指令檢查一下網路設定:
ifconfig

然後執行:
ping 192.168.100.1
ping (資管系 DNS 主機位址)

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

二、下載相關檔案

執行:
cd /opt

執行:
scp -r user008@192.168.100.1:/opt/globus_ubuntu /opt

執行:
cd /opt/globus_ubuntu

執行:
ls -lh

顯示:
apache-ant-1.7.1-bin.tar.gz
globus_simple_ca_502cf2ea_setup-0.19.tar.gz
grid-mapfile
gt4.0.8-all-source-installer.tar.gz
gt4.2.1-all-source-installer.tar.gz
jdk-6u17-linux-i586.bin
jdk-6u17-linux-x64.bin
junit-4.3.1.jar
ld.so.conf
mpich.tar.gz
pre-requisites.sh
profile
xinetd.d_gsiftp
xinetd.d_gsigatekeeper

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

三、安裝必備軟體 ( prerequisite softwares )

執行:
cd /opt/globus_ubuntu

執行:
./pre-requisites.sh

系統進行安裝確認時,請輸入:Y

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

四、獨立安裝必備軟體:Java 與 Apache Ant

Java 的安裝。

執行:
cd /opt/globus_ubuntu

如果是 x86_32 環境請執行:
./jdk-6u17-linux-i586.bin

如果是 x86_64 環境請執行:
./jdk-6u17-linux-x64.bin

顯示:
Java 的 license terms,請壓一下 q,然後輸入 yes,按 enter。
Java 自解壓縮安裝完成後,請壓幾下 enter 結束安裝。

執行:
mv jdk1.6.0_17 ../java

---------

Apache Ant 的安裝。

執行:
cd /opt/globus_ubuntu

執行:
tar zxvf apache-ant-1.7.1-bin.tar.gz

執行:
mv apache-ant-1.7.1 ../ant

執行:
cp junit-4.3.1.jar ../ant/lib/

---------

匯入環境變數。

執行:
cd /opt/globus_ubuntu

執行:
more profile >> /etc/profile

執行:
source /etc/profile

# 先忽略 -su: /opt/globus/etc/globus-user-env.sh: No such file or directory 錯誤。

測試 Java,執行:
java -version

測試 Apache Ant,執行:
ant -version

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

五、安裝 Globus Toolkit

# 研究室舊有的網格使用的是 Globus Toolkit 4.0.* 版本的。
# Globus Toolkit 4.0.* 與 Globus Toolkit 4.2.* 是不相通的。

執行:
cd /opt/globus_ubuntu

執行:
tar zxvf gt4.0.8-all-source-installer.tar.gz

執行:
mkdir /opt/globus

執行:
cd /opt/globus_ubuntu/gt4.0.8-all-source-installer

執行:
./configure --prefix=/opt/globus

執行:
make | tee gt_make.log

# 編譯如果出現問題,請追蹤一下 gt_make.log 檔案,尋找錯誤訊息。

編譯完成,執行:
make install

安裝完成,執行:
cd /opt/globus_ubuntu

執行:
more ld.so.conf >> /etc/ld.so.conf

執行:
ldconfig

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

六、設置 Grid Security Infrastructure

# 由於 TKG 已有架設好的 SimpleCA Server ( 192.168.100.1 ),
# 直接使用 TKG 的 globus_simple_ca_502cf2ea_setup-0.19.tar.gz 檔案。

執行:
cp /opt/globus_ubuntu/globus_simple_ca_502cf2ea_setup-0.19.tar.gz /opt/globus/

執行:
cd /opt/globus

如果是 x86_32 環境,執行:
gpt-build globus_simple_ca_502cf2ea_setup-0.19.tar.gz gcc32dbg

如果是 x86_64 環境,執行:
gpt-build globus_simple_ca_502cf2ea_setup-0.19.tar.gz gcc64dbg

gpt-build 完成後,執行:
gpt-postinstall

執行:
/opt/globus/setup/globus_simple_ca_502cf2ea_setup/setup-gsi -default

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

七、設置 gsiftp 與 gsigatekeeper

執行:
cd /opt/globus_ubuntu

執行:
cp xinetd.d_gsiftp /etc/xinetd.d/gsiftp

執行:
cp xinetd.d_gsigatekeeper /etc/xinetd.d/gsigatekeeper

執行:
/etc/init.d/xinetd restart

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

八、主機認證與使用者認證

TKG 網格主機認證:

# TKG 網格 SimpleCA Server 為 192.168.100.1,主機名稱是 im1.im.ncue.edu.tw。
# SimpleCA Server 的管理者為 im1.im.ncue.edu.tw 作業系統中的 root 帳號。

執行:
scp user008@192.168.100.1:/etc/hosts /etc/hosts

執行:
vim /etc/hosts
# 將本機的 IP 與 hostname 對映寫入並存檔。
# 例如:192.168.100.256 im256.im.ncue.edu.tw im256

確認主機名稱符合格式,執行:
hostname

# 以 TKG 網格為例,名稱應該是 im主機號碼.im.ncue.edu.tw 這樣的格式。
# 若主機名稱有出入,請修改 /etc/hostname 並重新開機。

切換到 root 身份,執行:
cd /etc/grid-security/

執行:
grid-cert-request -host `hostname`

以上指令會在 /etc/grid-security 底下產生:
hostcert.pem
hostcert_request.pem
hostkey.pem

將 hostcert_request.pem 傳送到 im1 (192.168.100.1),執行:
scp hostcert_request.pem user008@im1:~/temp/

# 對 hostcert_request.pem 檔進行認證,需要登入到 SimpleCA Server 進行操作。
# 請另外開啟一個 SSH 連線,以 user008 帳號登入 im1 (192.168.100.1)。

@im1 執行:
sudo su -

@im1 執行:
cd /home/user008/temp

@im1 執行:
grid-ca-sign -in hostcert_request.pem -out hostcert.pem

回到認證中的網格主機,切換到 root 身份,執行:
cd /etc/grid-security/

從 SimpleCA Server 將認證產生的 hostcert.pem 取回,執行:
scp user008@im1:~/temp/hostcert.pem /etc/grid-security/hostcert.pem

---------

TKG 網格使用者認證:

# TKG 網格中只有一個「網格使用者 user008」,因此直接取用認證過 user008 身份的驗證檔案即可。

執行:
su - user008

執行:
cd /home/user008

執行:
scp -r user008@im1:~/.globus /home/user008/

執行:
grid-proxy-init

顯示:
Your identity: /O=ncue/OU=tkgroup/OU=im.ncue.edu.tw/OU=im.ncue.edu.tw/CN=user008
Enter GRID pass phrase for this identity: # 輸入 TKG 專用密碼

grid-proxy-init 順利初始化,代表認證成功。

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

九、關於 grid-mapfile

執行:
sudo su -

# 為了讓網格中其他的機器也可以透過作業系統的 user008 帳號來運用本機資源

執行:
cp /opt/globus_ubuntu/grid-mapfile /etc/grid-security/

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

十、安裝 MPICH

執行:
cd /opt/globus_ubuntu/

執行:
tar zxvf mpich.tar.gz

執行:
mkdir /opt/mpich

執行:
cd mpich-1.2.7p1/

x86_32 環境執行:
./configure --prefix=/opt/mpich/ --with-device=globus2:-flavor=gcc32dbg

x86_64 環境執行:
./configure --prefix=/opt/mpich/ --with-device=globus2:-flavor=gcc64dbg

執行:
make | tee mpich_make.log

執行:
make install

執行:
su - user008

執行:
cp /opt/mpich/examples/cpi.c .

執行:
mpicc cpi.c -o cpi

在同一個目錄底下,執行:
vim machines

編寫 machines 檔,內容是:
"本機的 hostname" 1

編輯完成後,執行:
grid-proxy-init

Grid Proxy 起始化後,執行:
mpirun -np 1 cpi

順利的話,螢幕會印出 Pi 的值與執行的主機名稱。

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

附錄:

pre-requisites.sh 內容:
#!/bin/bash
sudo apt-get upgrade
sudo apt-get update
sudo apt-get install \
openssh-server \
libssl-dev \
zlib-bin \
zlib1g \
zlib1g-dev \
gcc \
g++ \
xinetd \

echo "*** DO NOT FORGET JAVA SDK & APACHE-ANT :-) ***"

globus_ubuntu/profile 內容:
export ANT_HOME=/opt/ant
export JAVA_HOME=/opt/java
export MPICH_HOME=/opt/mpich
export GLOBUS_LOCATION=/opt/globus
export PATH=$GLOBUS_LOCATION/bin:$GLOBUS_LOCATION/sbin:$MPICH_HOME/bin:$ANT_HOME/bin:$JAVA_HOME/bin:$PATH
source $GLOBUS_LOCATION/etc/globus-user-env.sh

xinetd.d_gsiftp 內容:
service gsiftp
{
disable = no
instances = 100
socket_type = stream
wait = no
user = root
env += GLOBUS_LOCATION=/opt/globus
env += LD_LIBRARY_PATH=/opt/globus/lib
server = /opt/globus/sbin/globus-gridftp-server
server_args = -i
log_on_success += DURATION
nice = 10
}

xinetd.d_gsigatekeeper 內容:
service gsigatekeeper
{
disable = no
socket_type = stream
protocol = tcp
wait = no
user = root
env = LD_LIBRARY_PATH=/opt/globus/lib
server = /opt/globus/sbin/globus-gatekeeper
server_args = -conf /opt/globus/etc/globus-gatekeeper.conf
}

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

Reference:
01. http://tkg.im.ncue.edu.tw/