2012年12月5日

備援機制: TIPTOP 主機虛擬化

公司的 ERP 系統能夠允許中斷多久呢 ?
有沒有想過當 TIPTOP 主機掛了該怎麼辦,
中斷的時間的長短其實就取決在能夠花費多少金額。
最好就是 HA 再加上異地備援啦,當然也是所費不貲囉~~

在有限的資源下當然就是將 TIPTOP 主機虛擬化是最經濟的作法。
當 ERP 系統發生無法立即排除的情況時,
就可以馬上啟動虛擬的 TIPTOP 主機,再還原備份的檔案和資料庫,
就足以應付急迫的公司作業。

再來就是說明如何將目前的 TIPTOP 主機做線上遷移到虛擬主機,
Linux 的好處就是所有的設定都是文字檔,不像 windows 還有 register 註冊資料庫 。
所以只要檔案複製過去就可以使用了。
要先切換到 root 的使用者。

1. 把 TIPTOP 主機的資料 image 到檔案,先用 df -h 查看 partition 的空間大小,
    或是佔用的空間有多少。

2. 將磁碟、partition 或是建立空的映象檔做 image,以下二選一即可 。
    A.假設將 sda1 的 partition 做成 sda.img 映象檔,執行 dd if=/dev/sha1 of=/u2/sda1.img 。
        (此指令是破壞性磁碟指令,需注意。如果 sda1 為 100G,就會建立 100G 的檔案)
    B.或是建立空的 image 檔,再做資料同步複製也可以。
       建立空的 20 G 大小的 image 檔: dd if=/dev/zero of=/u2/sda1.img bs=1G count=20。
       格式化成 ext3 格式:mkfs.ext3 sda1.img。
       掛載到 \mnt 目錄: mount /u2/sda1.img /mnt。
       同步複製: rsync -av /u1/* /mnt。

3.  將檔案傳到虛擬主機上,然後轉換成 vhd 檔,利用 vhdtool.exe (需下載)做 convert。
     指令:   vhdtool /convert sda1.vhd。

4.  建立新的 guest virtual machine , 建立傳統網路卡需綁網卡的 mac ,並掛載 vhd 檔。

5.  開機,可以開啟喔~~~完成一半了。

6.  再來就是修改設定檔了。我會做下列的修改。
     修改登入是 text mode: vi /etc/init.tab 的 id:5:initdefault: 將 5 改為 3。
     設定網卡: vi /etc/sysconfig/network-scripts/ifcfg-eth0
      (應該會有一個 bak 檔,直接複製就好 cp ifcfg-eth0.bak ifcfg-eth0 )
     修改開機掛載的磁碟,有可能原本是 sda1 變成 hda1,先用 fdisk -l 查看 。
     設定開機自動掛載: vi /etc/fstab,將 sda 改為 hda。

7.   如果虛擬主機的記憶體設定太小,Oracle 有可能會開不起來,
      因為 SGA 設定必須在 tmpfs (ram disk) 以內,
      查看 tmpfs 空間: df -h 。
      到原本的 TIPTOP 主機查看 Global SGA memory ,
      進入 sqlplus 執行 show parameter mem,查看 memory_target 和 memory_max_target。
      然後再修改 tmpfs 的大小,執行: vi /etc/fatab ,在tmpfs 加上 size=4G。

8. 重新啟動,完成。記得千萬要隔離二台主機的網路,不然 mac 位置一樣會造成異常。

9. 平時就保持 Standby 的狀態,有問題時,將備份的程式直接蓋過去,就不多說明了。

10. 再來就是將 DB 也直接 import 進去,備援主機就完成。

如果能夠將資料庫獨立出去是最好了,還原就快多了,
平常第二台 Oracle 主機待機,利用第一台 Oracle 主機的 redo log 或 archive log 做資料的同步。
資料有損失的時間點就可以大幅的減少。
只需要修改 oracle 的連線檔:/u2/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora
就可以切換到第二台 Oracle 主機做存取。

如果想要把測試區和標準區的資料庫刪除來節省磁碟空間和記憶體空間的,
在 Oracle 10g 以後就有提供 drop database 的指令,
以 sys 身份用 sysdba 的方式來登入 sqlplus,
sqlplus sys/sys as sysdba
alter database close;        關閉 database
alter system enable restricted session;        改為 restrict 模式
drop database;        刪除資料庫
刪除資料庫會連同 dbf 檔和 control file、redo file 全部刪除。

因為是 RHEL 5.5 版架設在 Hyper-V 上,所以需安裝 Linux Integration Services v2.1。
# mkdir /media/cdrom
# mount /dev/cdrom /media/cdrom
# mkdir /opt/linux_ic_v21_rtm
# cp -R /media/cdrom/* /opt/linux_ic_v21_rtm
# cd /opt/linux_ic_v21_rtm
# make
# make install
# reboot
下載 adjtimex RPM 套件確保時間的準確性
# rpm -ivh /media/cdrom/Server/adjtimex-1.20-2.1.x86_64.rpm

因為是 P2V 所以需要將 /boot/grub/grub.conf 的 hda=noprobe hdb= norpobe 去掉,不然會無法開機。
然後再放 RHEL 5.5 或是 CentOS 5.5 的安裝光碟重新編譯 Kernel。
1. 使用安裝光碟開機
2. 進入救援模式,輸入 linux rescue
3. chroot /mnt/sysimage 指令將目前的檔案系統環境,由光碟掛載點切換回虛擬主機的硬碟掛載點
4. cd /boot 指令切換目錄
5. ls /lib/modules」指令或「cat /etc/grub.conf」指令查看檔案內容來得知Linux核心版本
6. mkinitrd –v –f initrd-2.6.18-194.el15.img 2.6.18-194.el15
7. 重新開機

取消螢幕保護
修改 /etc/rc.d/rc.local 加入 setterm -powersave off -blank 0

備註:如果想要修改 IP ,需修改以下的檔案:
/etc/hosts
/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/network
/etc/resolv.conf
/u1/genero/fgl/etc/fglprofile
/u1/genero/fgl.ws/etc/fglprofile
/u1/genero/fgl.dev/etc/fglprofile
/u1/topprod/tiptop/bin/tiptop_env
/u1/usr/tiptop/.rhosts
license.sh 或是修改 cl_user.4gl

其他 License 相關問題就不在此說明了。

10 則留言:

  1. hi 張先生
    請問一下因為我們公司也想做虛擬化,想問一下你們的虛擬化是請鼎新作還是請外面的公司做,因為我們有請其他家廠商來評估但是好像都沒辦法虛擬化,都要跟鼎新配合才可以,不知你們是否有其他廠商,如果方便的話是否可以可以介紹給我
    我的email:leo@jdco.com.tw,謝謝您

    回覆刪除
    回覆
    1. 應該是只能找鼎新,4js 的 License 是綁網卡的 mac address,要做虛擬主機備援就要再買一套的 License。
      我們是自已做虛擬化,把網路切開當 IT 開發機,用 Linux 指令就可以 P2V 到 Hyper-V 。

      刪除
  2. hi 張先生
    喔也就是我可以自己虛擬化,但是要切開網路段,缺點就是無法同步資料,沒錯吧
    leo

    回覆刪除
    回覆
    1. 只要在虛擬機再多加一片網路卡,原本綁 License 的網卡設定為 Hyper-V 內部網路,
      另一張網卡設定為公司 LAN 就可以用此 IP 來連 TIPTOP,也可以做到資料庫同步,程式檔案同步,
      當有問題的時候把 License 的網卡改為公司 LAN 就可以做到手動的即時備援。

      刪除
  3. hi 張先生
    謝謝您的解答,那可否再請教一下,我們公司的版本是5.1版,你們的版本呢?是否也可以呢?如果虛擬主機掛掉你們有測試過復原時間多久嗎
    leo

    回覆刪除
    回覆
    1. TIPTOP 5.X 的架構都一樣,
      通常只要 TIPTOP 是 Linux OS 應該都是可以虛擬化。
      不建議把 DB 放在 VM ,I/O 頻繁會讓效能很差。
      虛擬化 AP 的部份可以做到即時轉移故障時也不會斷線,現今免費 VM 都已有此功能。

      刪除
  4. hi 張sir
    謝謝你的解答,因為我們公司目前是linux和db都是在同一台上面,所以做VM才要做再一起,除非重新安裝並且再買一台主機,是這樣嗎,那如果是這樣那DB也可以同步嗎

    回覆刪除
    回覆
    1. 可以 DB 或 AP 移到另一台主機或 VM 上, DB 可選擇 Windows , AP 可移到多台 VM 上,
      可不用重裝保留著以防不時之需。
      DB 同步方式很多種,可以 google 看什麼方案比較適合貴公司所需。
      先用 PC 做 lab 試試。

      刪除
  5. 張先生您好!
    請教一下,是否可以請您說明一下DB及AP要怎麼分開的教學.謝謝!

    回覆刪除
  6. 請問dd或rsync時,是線上做還是要進入救援模式,謝謝解答

    回覆刪除