disaster recovery solution

41
異地備援解決方案 李智 – Rich Lee

Upload: rich-lee

Post on 15-Jun-2015

174 views

Category:

Documents


0 download

DESCRIPTION

異地備援解決方案

TRANSCRIPT

Page 1: Disaster Recovery Solution

異地備援解決方案

李 智 – Rich Lee

Page 2: Disaster Recovery Solution

2

異地備援解決方案分析

利用網路來同步異動遠地儲存設備,達到備援目的之解決方案有以下重大缺點:

儲存設備必須要同廠牌。企業無法依價格效能比購買,甚至受制於廠商。

與遠地服務器必須要同廠牌,同作業系統,二進位碼必須要相容。企業無法依價格效能比購買,甚至受制於廠商。

儲存設備必須要同廠牌。企業無法依價格效能比購買,甚至受制於廠商。

與遠地服務器必須要同廠牌,同作業系統,二進位碼必須要相容。企業無法依價格效能比購買,甚至受制於廠商。

由於儲存設備間同步類似於鏡射〈Mirror〉,對於各種暫存資料、可由應用系統再製之衍生資料,亦一併同步至遠地。對於異動頻繁熱磁區,更因前次同步尚在途中,而新異動又起,造成企業網路塞爆,頻寬欲求不滿,致使通信費用居高不下。

又因鏡射同步有在途延遲隱憂,倘於同步過程中,發生災難,剛異動資料磁區在途中遺失,則遠地儲存設備狀態亦處於暫態,結果往往造成遠地應用系統無法讀取關鍵磁區,根本喪失備援回復能力。

雖然儲存設備鏡射有非同步機制,它能降低頻寬發生尖峰機率,充分利用費率成本較低時段進行同步,但是再未全部完成遠地同步前,發生不可回復之災難而丟失磁區資料,極有可能造成遠地服務器因為磁區被破壞而無法提供服務之窘境。

Page 3: Disaster Recovery Solution

3

異地備援使用異質平台誘因

Page 4: Disaster Recovery Solution

應用系統異質平台遠地部署

Page 5: Disaster Recovery Solution

5

應用系統異質平台遠地部署

開發人員依循應用系統設計生命週期,經常困擾於重複性工作,一時之疏忽與惰性養成,常造成各應用系統環境不一致。更因隨時間逝去,人事異動等因素,甚至無法判定系統版本,造成系統運維困擾。

在應用系統設計生命週期中,粗分為以下步驟:

1. 需求與塑模〈Modeling〉

2. 設計與開發

3. 開發環境部署

4. 單元測試

5. 運行環境部署

6. 需求變更,再復始至〈1〉

Page 6: Disaster Recovery Solution

6

Page 7: Disaster Recovery Solution

7

應用系統異質平台遠地部署

在設計生命週期中,自然會產生大量的暫態資料、衍生資料、測試資料,如果採取儲存設備異地備援解決方案,備援成本十分昂貴,理由已見於前述。

真正解決之道,係將運行環境部署工作自動化,並讓暫態資料、衍生資料在遠地編譯連結產生,縮短備源時間,降低網路通信成本。

平台情境如下:

應用系統為 Oracle Pro*C,使用 make 建置。

本地開發與運行環境為 HP-UX本地開發工具為 HP C 編譯器

遠地開發與運行環境為 IBM AIX遠地開發工具為 IBM XL-C 編譯器

部署需求如下:

本地端應用系統原始程式當異動時,需同步遠地開發環境。

當本地端應用系統使用 make 時,遠地開發環境需同時建置。

Page 8: Disaster Recovery Solution

8

應用系統異質平台遠地部署檔案同步機制

Page 9: Disaster Recovery Solution

9

應用系統異質平台遠地部署檔案同步機制

使用 unison:它是一套跨平台之間目錄檔案同步系統,提供單向複寫、雙向同步功能,遠地檔案版本衝突解決機制。

它可以指定需要同步的檔案型態,如:*.pc。需要部署於兩地服務器中。

使用 rsync:它是一套跨平台〈*nix〉之間目錄檔案同步系統,提供一個非常快速的檔案傳輸方法, 使兩地服務器間目錄檔案同步,它傳送兩地檔案異動部份,而非每次都整份傳送,因此速度相當地快。

它無法指定需要同步的檔案型態,因此在 Makefile 要將各種暫存檔、衍生檔規劃在不同步之目錄中。

需要部署於兩地服務器中。

使用 ftp/sftp:遠地需要啟動 ftp/sftp 服務。

先設計好 ftp/sftp 命令稿,將要同步的目錄檔案型態,產生壓縮檔,ftp/sftp 傳送至遠地服務器相應目錄下。

以應用系統為對象,對於簡單目錄結構,同步檔案數不多者適用。

在遠地 Makefile 中,要先解壓縮檔後才真正建置。

在本地 Makefile remote 工作項目中,先執行ftp/sftp 命令稿,再執行 rmake_client〈看後面說明〉。

使用 HTTP:本地需要啟動 HTTP 服務,設定只接受來自遠地服務器 IP 之請求。

先設計好命令稿,將要同步的目錄檔案型態,產生壓縮檔,複製至 HTTP 服務相應目錄下。

以應用系統為對象,對於簡單目錄結構,同步檔案數不多者適用。

在遠地 Makefile 中,要先使用 wget 工具取回壓縮檔,並解開至相應目錄下後才真正建置。

在本地 Makefile remote 工作項目中,先執行選檔並壓縮之命令稿,再執行 rmake_client〈看後面說明〉。

Page 10: Disaster Recovery Solution

10

應用系統異質平台遠地部署同步建置機制

遠地建置請求程式〈rmake_client〉:部署於本地服務器〈HP-UX〉配合本地應用程式 Makefile 設計

Makefile 至少有下列工作項目〈make Tasks〉:

default:編譯/連結test:配合測試資料單元測試install:本地部署

remote:遠地部署,在本地佈署至運行環境並啟用無誤後,採用 rsync 目錄檔案同步機制者,執行此項工作前需先檔案同步完成。採用其他機制者,將檔案同步命令稿先於 rmake_client 即可。

用法:rmake_client -h {遠地服務器名稱} -n {TCP 埠號} -u {遠地帳號識別碼} -d {遠地應用系統目錄} -c {遠地建置命令稿} -p {遠地建置命令稿參數} -l {遠地建置命令槁輸出列緩衝區 KB} 使用範例:rmake_client -h aix -u 1000 -d /home/app -c /usr/bin/make -p install TCP 埠號預設為 82 遠地建置命令槁輸出每一列緩衝區大小預設為 1 KB 遠地建置命令稿參數若有多個時,使用 ‘^’ 取代空白。如:”aaa 111 bbb” 指定為“aaa^111^bbb”

Page 11: Disaster Recovery Solution

11

應用系統異質平台遠地部署同步建置機制

遠地建置服務程式〈rmake_server〉:

部署於遠地服務器〈IBM AIX〉配合 inet 或 xinet 機制,接聽建置請求

服務程式會轉換指定之帳號識別碼建置 應用系統

xinet 設定範例如下: service rmake {disable = no server = /usr/local/bin/rmake_server flags = REUSE # only_from = 127.0.0.1 log_on_failure += USERID # port = 82 # id = rmake-server socket_type = stream protocol = tcpuser = root wait = no}

Page 12: Disaster Recovery Solution

12

應用系統異質平台遠地部署

採用此種結合應用系統設計生命週期之解決方案,非但降低異地備援及應用系統派送成本,且提高運維品質與風險,相較於儲存設備備援機制,實在優點甚多。更不用說,儲存設備備援機制無法解決遠地開發中心部署多點外地運行環境 所衍生之相關需求。

Page 13: Disaster Recovery Solution

應用系統異質平台遠地部署實例

Page 14: Disaster Recovery Solution

14

實例 – 系統說明

/usr/local/bin:

rmake-client

用戶程式根目錄:$HOME/src

/usr/local/bin:

rmake-server

proc-make

/etc/services:

rmake – tcp - 9010

/etc/inetd.conf:

rmake – /rmake-server

用戶程式根目錄:$HOME/src

近端資料庫HP-UX

遠地資料庫AIX

Page 15: Disaster Recovery Solution

15

實例 – 用戶說明

HP-UX 帳號:ho

程式目錄:$HOME/src/程式代碼

程式代碼目錄:

Makefile

sync_files.sh

remote_task.sh

程式代碼.pc

yt12db

yt12sq

AIX 帳號:HO

密碼:HO

UID:208

程式目錄:$HOME/src /程式代碼

程式代碼目錄:

Makefile

程式代碼.pc

yt12db

yt12sq

Page 16: Disaster Recovery Solution

16

實例 – 用戶說明

HP-UX (Makefile)

include $(ORACLE_HOME)/precomp/lib/env_precomp.mk

CC=cc

.SUFFIXES: .pc .c .o

.pc.c:$(PROC_64) $(PROCFLAGS) iname=$*

.pc.o:$(PROC_64) $(PROCFLAGS) iname=$*$(C2O_64)

.c.o:$(C2O_64)

clean:rm -f *.o *.lis *.c yt12db

test:./yt12db < t1.0980708.txt

sync:./sync_files.sh

remote:./remote_task.sh

remote_build: sync remote

yt12db:$(MAKE) -f Makefile [email protected] EXE=$@ buildtouch *

build: $(OBJS)$(DEMO_PROC_BUILD_SHARED_64)

Page 17: Disaster Recovery Solution

17

實例 – 用戶說明

HP-UX (sync_files.sh)

#!/bin/sh

REMOTE_HOST='10.66.6.91'REMOTE_USER='HO'REMOTE_PASS='HO'

PROJECT_NAME=yt12db

# Sync Source Filesftp -n -i -v $REMOTE_HOST <<!quote user $REMOTE_USERquote pass $REMOTE_PASSbincd src/$PROJECT_NAMEput $PROJECT_NAME.pcbye!

Page 18: Disaster Recovery Solution

18

實例 – 用戶說明

HP-UX (remote_task.sh)

#!/bin/sh

REMOTE_HOST=10.66.6.91PROJECT_NAME=yt12db

RMAKE_UID=208RMAKE_PORT=9010RMAKE_HOME=/home/HO/src/$PROJECT_NAMERMAKE_CMD=/usr/local/bin/proc-makeRMAKE_PARAMS="Makefile^$PROJECT_NAME"RMAKE_BUFSIZE=1

$HOME/bin/rmake-client -h $REMOTE_HOST -n $RMAKE_PORT \-u $RMAKE_UID -d $RMAKE_HOME \-c $RMAKE_CMD -p $RMAKE_PARAMS \-l $RMAKE_BUFSIZE

Page 19: Disaster Recovery Solution

19

實例 – 用戶說明

AIX (/etc)

/etc/services

rmake 9010/tcp

/etc/inetd.conf

rmake stream tcp nowait root /usr/local/bin/rmake-server rmake-server

Page 20: Disaster Recovery Solution

20

實例 – 用戶說明

AIX (/usr/local/proc-make)#!/bin/sh

export PATH=/opt/freeware/bin:/usr/vacpp/bin:/usr/vac/bin:/usr/bin:/etc:/usr/sbin:/usr/ucb:$HOME/bin:/usr/bin/X11:/sbin:/usr/local/bin:.

export ORACLE_SID=chttestexport ORACLE_BASE=/ora11g/app/oracleexport ORACLE_HOME=$ORACLE_BASE/product/11.1.0export PATH=$ORACLE_HOME/bin:$PATHexport LIBPATH=/opt/freewarel/libexport LD_LIBRARY_PATH=/usr/lib:/opt/freeware/lib:$ORACLE_HOME/lib

/usr/bin/make -f $1 $2

Page 21: Disaster Recovery Solution

21

實例 – 用戶說明

AIX (Makefile)include $(ORACLE_HOME)/precomp/lib/env_precomp.mk

CC=xlc_rLFLAGS64=-q64

.SUFFIXES: .pc .c .o

.pc.c:$(PROC_64) $(PROCFLAGS) iname=$*

.pc.o:$(PROC_64) $(PROCFLAGS) iname=$*$(C2O_64)

.c.o:$(C2O_64)

clean:rm -f *.o *.lis *.c yt12db

test:./yt12db < t1.0980708

yt12db:$(MAKE) -f Makefile [email protected] EXE=$@ buildtouch *

build: $(OBJS)$(DEMO_PROC_BUILD_SHARED_64)

Page 22: Disaster Recovery Solution

異質平台資料庫系統備援

Page 23: Disaster Recovery Solution

23

Enterprise Application Integration (EAI)

Page 24: Disaster Recovery Solution

24

Java Management eXtensions (JMX)

Page 25: Disaster Recovery Solution

25

資料庫表格 Trigger

Page 26: Disaster Recovery Solution

異質平台資料庫系統備援-EAI

Page 27: Disaster Recovery Solution

27

Data ChannelsTable synchronizations are grouped into independent channels

Guaranteed DeliverySynchronized data is guaranteed to arrive at the target destination.

If a synchronization fails, the same batch of data will be retried until it succeeds or manual intervention is taken.

All other data synchronization is halted for the failed channel only.Transaction Aware

Data updates are recorded and replayed with the same atomicityCentralized Configuration

All configuration is downloaded from a central registration serverMultiple Deployment Options

Standalone engine, web application, embedded software component

Page 28: Disaster Recovery Solution

28

Data Filtering and ReroutingAllows for localized passwords and sensitive data filtering/routing

HTTP TransportPluggable transport defaults to Representation State Transfer (REST-style) HTTP services

Payload CompressionOptionally compresses data on transport

Notification SchemesPush (trickle-back data) or Pull (trickle-poll data) changes

Symmetric Data ProtocolA fast streaming data format that is easy to generate, parse, and load

Plug-In APIAdd customizations through extensions and plug-in points

Page 29: Disaster Recovery Solution

29

Two-Way Table SynchronizationThe same table can be synchronized both to and from the host system while avoiding update loops

Database VersioningSpecify data synchronization by version of target database

Auto Database CreationOptionally allow creating and upgrading of database schema

EmbeddableSmall enough to embed or bootstrap within another application (i.e. a POS application)

Multiple SchemasSupports multiple database schemas naturally through the existence of Data Channels

Page 30: Disaster Recovery Solution

30

異質平台資料庫系統備援-EAI

Primary Key UpdatesCaptures the "before" and "after" data being changed, allowing updates to primary key data

Remote ManagementAdministration through a Java Management Extensions (JMX) console

Remote Database AdministrationSQL can be delivered and run at remote databases via the synchronization infrastructure

Initial Data Load - Prepare the satellite database with an initial or recovery load of data

Page 31: Disaster Recovery Solution

Daffodil Replicator

Page 32: Disaster Recovery Solution

32

Bi-directional Data Synchronization – Daffodil Replicator supports bi-directional data synchronization. It allows you to synchronize all the datasources used in the replication process. It maintains data integrity by updating all the changes made at one end to another end and vice versa in the replication process.

Supports replication across heterogeneous database – Daffodil Replicator supports replication among different databases. For example, you can use one database as Daffodil DB and another as SQL Server in the same replication process.

Supports unlocking – Daffodil Replicator does not set any lock while retrieving and merging changes to the database.

Security – Daffodil Replicator enables you to replicate data in a secure environment using HTTPS (HTTP over SSL).

Conflict detection and resolution – Daffodil Replicator provides conflict detection and resolution functionalities that allow you to make changes in the same table stored at different locations. For example, Lets assume emp table is stored at Database A and Database B. An employee (named as James) address is changed. It is updated in Database A but not in Database B. Therefore, a conflict occurs between the emp table stored at Database A and Database B. In such a case of conflicts, Daffodil Replicator automatically manages consistency between the data based on the settings specified by the user at the time of creating job or subscription.

Partial Replication – Daffodil Replicator also allows you to replicate only a part of the database in place of replicating the whole database. For example, you can replicate some tables from a database selecting the table names. In addition, you can replicate some rows and columns from a database using filtering.

Page 33: Disaster Recovery Solution

33

Replication between two JDBC DataSources

Daffodil Replicator retrieves changes directly from a JDBC DataSource and merges it into another JDBC DataSource.

Page 34: Disaster Recovery Solution

34

Replication between a JDBC DataSource and Replication DataSource

Daffodil Replicator retrieves changes from Replication DataSource.

Replication DataSource retrieves changes from a JDBC DataSourceand writes it into a XML file.

Daffodil Replicator reads the XML file and merges the changes into another JDBC DataSource.

Page 35: Disaster Recovery Solution

35

Replication between two Replication DataSources

A Replication DataSource retrieves/merges changes to another Replication DataSource in the form of XML file through FTP Server. Daffodil Replicator controls the process of retrieving and merging changes.

Page 36: Disaster Recovery Solution

異質平台資料庫系統備援實例

Page 37: Disaster Recovery Solution

37

整體架構圖

Page 38: Disaster Recovery Solution

38

整體架構說明

Oracle/HP 扮演 Active 角色連接 L5~7 Switch

IP=10.0.0.1建置本地資料表格異動記錄機制

Oracle/AIX 扮演 Standby 角色連接 L5~7 Switch

IP=10.0.0.2建置遠地資料表格異動同步機制

建置資料庫容錯監控機制

建置網路容錯互動機制

L5~7 Switch 扮演 網路容錯 角色建立 10.0.0.1/10.0.0.2 叢集

產生對外產生服務 IP=10.0.10.1

資料庫客戶端使用服務 IP 與資料庫互動

提供 網路容錯 API (Web Service/Socket)

Page 39: Disaster Recovery Solution

39

情境說明

資料庫客戶端使用服務 IP 與資料庫互動初時 Oracle/HP 工作正常提供資料庫服務

當資料表格發生異動〈新增/修改/刪除〉時

資料表格異動記錄機制,利用 Trigger 記錄資料表格異動

Trigger 與原資料錄為同一交易, 當原資料錄 Rollback 時,異動記錄亦隨之 Rollback , 保全資料交易一致性。

初時 Oracle/AIX 工作正常

依 HP 負載設定同步頻率

定期讀取 HP 異動記錄,更新本地資料庫

記錄本地資料庫更新記錄

當 HP 資料庫服務失敗時

AIX 上之網路容錯機制,調用網路容錯 API 通知 Switch HP 已死

L5~7 Switch 收到通知後,更換服務 IP 指向至 10.0.0.2當 HP 資料庫服務回復時

依據 AIX 上本地資料庫更新記錄,回存異動資料至 HP

若 HP 資料庫全毀時,再由 AIX Export/Import 至 HP

Page 40: Disaster Recovery Solution

40

實戰

適用於資料交易量大,異動頻率高之表格資料量少,異動頻率較低之表格,可由資料庫備份取得對於非資料異動之改變,則必須使用異動同步工具實施對於使用 JDBC 應用系統,另有其他資料複寫機制無論備援機制多強,來源資料庫之備份永遠是最後一道安全防線

Page 41: Disaster Recovery Solution

41

Q & A