클라우드컴퓨팅 NMS/OSS 적용사례pds10.egloos.com/pds/200908/02/57/IRIS.pdf ·...
Transcript of 클라우드컴퓨팅 NMS/OSS 적용사례pds10.egloos.com/pds/200908/02/57/IRIS.pdf ·...
클라우드 컴퓨팅 NMS/OSS 적용사례
2009.6 (주)모비젠 김태수
장비에서 출력되는 데이터를 기반으로 망의 고장과 성능을 종합적으로관리하는 시스템
Managed Data
Back OfficeFront Office
AlarmData
PerformanceData
Call FaultData
BSC/RNC Transmission
EquipmentIP Core PS CoreBTS
NodeBCS CoreCME
NOC TOC
Alarm/Fault
MS
Performance
MS
Alarm/Fault
MS Client
Performance
MS Client
3rd
PartyHLR
Maintenance
Automation
System
Maintenance
Automation
Client
Alarm/Fault
MS Client
Performance
MS Client
실시간 장애감시 실시간 장애 감시화면 및 Call Fault 감시기능 중요 장애 집중 감시 기능 및 Popup 기능 발생 장애 별 Group 화 관리 기능 장애 상세 분석 기능
성능감시 / 성능통계종합적인 망 품질 감시 기능 제공토폴로지 기능을 통한 상세한 품질 분석 기능을 제공기지국 최소 Subcell 단위의 품질 관리 Call Fault 발생 추의 기능 제공
Topology Map 망 형상정보와 연동한 Network Topology 출력고장발생시 Map 상에 최상위 escalation alarm 출력Map 상의 node/link modification 기능 제공
Trouble Ticket Management운용자 조건설정에 따른 TT 발행 SMS, email, WAP 등과 연동가능발행된 TT 의 상태관리 기능
과 거 현 재
장비에서 측정되어 요약되어 출력되는 데이터 기반고장/성능/구성데이터데이터의 양이 한정적일 100만건이하
사용자 개인별로출력되는 사용데이터를 기반과금데이터, 패킷프루브 데이터데이터의 양이 초대용량일 10억건 이상
초 대용량 데이터 처리 업무 증가
• 통화내역 분석을 통한 SNA- 이동통싞사의 경우 1일 3억건의 음성통화 데이터 처리필요
• 이동젂화 위치정보를 이용한 개인별위치정보 서비스- 이동통싞사의 경우 1일 15억건의위치정보 처리필요
• 대형 포털 및 네트웍사업자의 대용량로그처리- 인터넷방송사의 경우 1일 400억건의 로그처리필요
• 유비쿼터스 센서 네트웍의 대량데이터 치리필요
• 패킷 프루빙을 통한 네트웍 품질 관리
• IPTV, UCC 멀티미디어 서비스 등의대형 데이터 관리
대형 시스템
• 단일 시스템에서 처리용량 한계• 고비용 H/W 구축• 상용서비스 도중 용량확장 어려움• 단일 시스템으로 인한시스템 안정성 저하
• 분산시스템에서 초대용량 처리용량• 다수의 저비용 H/W 구축• On Service 중에 시스템 확장 가능• 시스템 다중화를 이용한 데이터 안젂성
소형 시스템 분산 처리
요구사항실시갂데이터
고속처리
대용량데이터
배치처리
기졲 방안
해결 방안
메모리기반솔루션
HDD기반솔루션
데이터가공
편의성
고가의대형서버
IRIS : 클라우드 컴퓨팅 기반의 RDBMS(메모리/HDD 하이브리드 + 클라우드컴퓨팅)
초대용량이중화
용량증설
SQL 기반RDBMS
CPU Mem Disk
200 core(2.8Ghz) 800 GByte 100 TByte
Gigabit Switch
2중화
Master Node
2중화
Slave Node
CPU : 2.8Ghz Quad * 2
Memory : 32 Gbyte
Disk : 4 TByte
Monitor/Keyboard
UPS
IRIS-2000 시스템 사양 예 (25 Slave)
SQL/92API
ODBC 3.XJDBC 4.X
Fast Loader
Listener
Node Selector
Data Location Manager
U/D/M(Query Analyzer / Executor)
PartitionManager
BackendSync
SystemData
SystemDataSystem
DataSystemDataSystem
DataBackend
DataChangerData
ChangerData
Changer
DataChangerData
ChangerData
Selector
Data Recover
SessionManager
PrivilegeGrant
SessionAgent
SMSAgent
User Master NodeSlave Node
Process
Listener 응용프로그램의 Database 접근 관리 서비스
Node Selector Database Service를위한 Service 및 Job 제어 Node 할당 서비스 매니저
Data Location Table Data의 Node별 분배 및 위치 정보를 관리하는 서비스 매니저
Slave Manager 각 Node Resource정보를 수집
Data Recovery 이중화를 유지하는 데몬
Loader 대용량 데이터 고속 입력을 위한 Tool
Privilege Grant 권한 관리 데몬
UDM Query문석 및 내부 수행을 위한 Query 생성
Data Selector Table Data조회(Select) 전담 서비스
Data Changer Table Data 변경(Insert/Delete/Update) 전담 서비스
Backend Sync 이중화를 유지를 위해 정보를 동기화 데몬
Loader 대용량 데이터 고속 입력을 위한 Tool
Partition Manager 파티션 보관 주기를 관리 하는 데몬
Session Agent 노드 세션 정보를 수집
SMS Agent 노드 리소스 정보를 수집
Applications
Grid Services
Resource Manager Data Allocation Manager Privilege Grant ServiceService Allocation
Manager
Database Services and Tools
QueryAnalyzer
QueryExecutor
DataSelector
DataChanger
Listener Loader JDBC
Local Services
Linux
TCP/IP
Applications
응용프로그램레이어, IRIS를이용한 Database 응용프로그램
Database Services and Tools
Query Analyzer Query 분석 및 내부 수행을 위한 분산 Query 생성
Query Executor 내부 수행 분산 Query 실행기
Data Selector Table Data 조회 ( Select ) 전담 서비스
Data Changer Table Data 변경 ( Insert / Delete / Update ) 전담 서비스
Listener 응용프로그램의 Database 접근 관리 서비스
Loader 대용량 데이터 고속 입력을 위한 Tool
ODBC/JDBC 응용 프로그램을 위한 표준 접근 인터페이스
Grid Services
Service Allocation Manager Database Service를위한 Service 및 Job 제어 Node 할당 서비스 매니저
Data Allocation Manager Table Data의 Node별 분배 및 위치 정보를 관리하는 서비스 매니저
Privilege Grant Service Node / Table 접근 권한을 관리하는 서비스
Resource Manager Node Resource 정보 수집 및 상태 관리 서비스
Local Services
TCP/IP Node간 Command/Data 제어를위해 TCP/IP 네트워크 이용
Linux IRIS 솔루션은 현재 Linux Kernel 2.6을 기반으로 구현
Master Node
Slave Node
Slave Node
Slave Node
Slave Node
L-TableVoice CDR
TMPMaster
L-TableData CDR
G-TableUser Info
G-TableUser Info
사용자SQL
입력 Data 분석을 통한 Node Location 정보 생성 System Load Balancing을 통한 Data 분산 저장
MSC_ID BSC_ID BTS_ID CALLING_NUMBER CFC_CODECALL_START_TIME CALL_END_TIME
MSC_ID CALL_START_TIME
• Table 생성시에 정의된 데이터 분배 규칙(Key Column, Time
Zone Range)으로부터 Data Location Key를 생성• Data Location Key 및 Data / Resource 정보를 이용하여실제 Data를 기록하기 위한 Data Location Zone 정보 생성
• Data 위치 정보는 Location Zone 정보를 이용하여 관리
System Load BalancingData Location Information
System Resource Information
Slave #1 Slave #2 Slave #3 Slave #4 Slave #N
Data의 안정성을 위해 서로 다른 Slave에 중복 저장 (이중화)
분산처리를 통한 고속처리◦ Job Load Balancing을 통한
부하 분산◦ 하나의 큰 Job 작은 여러개의
Job으로 분리◦ Job = Job1 + Job2 + Job3
Hybrid DB구조를 통한 실시갂 데이터의 빠른 처리◦ 실시갂 데이터를 메모리 DB에
서 처리 요약 통계 및 분석 시고성능 분석이 가능함
◦ 분석이 필요 없는 데이터는DISK에 저장하여 데이터를 안젂하게 보관이 가능함
◦ 메모리 DB와 디스크DB와 데이터 연동되어 하나의 DB처럼 사용 가능함
IRIS-2000 (25Node)
Mem800G
Disk100T
CPU 200core (2.8Gh)
데이터 다중화를 통한 안정성◦ Slave Node 장애 발생시 다른 Node
를 통한 데이터 접근성 제공◦ 예) Data-A 또는 Data-B 접근 시 시
스템 장애가 발생하여도 같은 데이터가 다른 시스템에 졲재하므로 Data-A, Data-B에 접근 가능
시스템 이중화를 통한 안정성
• 데이터를 이중화 저장하기 때문에 특정 노드장애시 동작합니다.
• 노드는 Intel Server SR15xx
• Intel Xeon Process
• 8GB DDR-2
• Intel 3200 Server Chipset
• Two fixed colling
Node 이중화
이중화
• 특징
• Switch 를 이 중 화 하 여 하 나 의Switch가 다운된 경우에도 정상적으로서비스가 가능합니다
• 기능: Bonding,HSRP,VRRP,GLBP
• 제원
• 1000Base-TX,100Base-TX,10Base-TX
• 24 Ethernet 10/100/1000 ports withPoe and 4 SFP port
• 1.7(H) x 17.5 (W) x 11.8(D) inch
Switch 이중화
이중화
• 특징
• 순 단 에 대 한 대 처 가 능 하 도 록설치되어 있습니다.
• 220V의 10노드인 경우로 1시간 이상무전원 상태로 서비스가 가능합니다.
• 제원
• SMART-UPS
• 10 Kwatts
• 47 – 53 Hz for 50 Hz norminal
• 220(H) x 483(W) x 660(D) mm
UPS
무 정지 용량 증설 가능◦ 서비스 중 에도 클러스터 되
어있는 슬레이브 노드장비를 추가/중지 할 수 있음
◦ 처리 용량이 부족한 경우 슬레이브노드 서버장비 증설만으로도 용량 증설 및 부하분산이 가능함
싞규 망 생성과 관리대상장비의 증가에 따른 문제점◦ 싞규망이 도입될때마다 싞규시스템 도입필요◦ 수백대의 서버가 개별적 시스템으로 운용◦ 일괄적이고 표준화된 개발과 관리 방안 필요◦ 시스템 자원의 효율적인 운용 및 증설방안 필요
Access망사용자
A - NMS Client
Windows 98(2000년)Oracle Client Version 8.X
B - NMS Client
Windows XP(2005년)Oracle Client Version 9.X
C - NMS Client
Windows VISTA(2009년)Oracle Client Version 10.
A - NMS
Access망 기능 10개Core망 기능 1개
B - NMS
Access망 기능 10개Core망 기능 10개
C - NMS
Access망 기능 1개Core망 기능 10개
• AS-IS
• TO-BE
Access망사용자
ONE Client
Any Device/OS Web Browser
UI Cloud(for Access망)
Access망 기능 A B C
Middleware
클라우드 컴퓨팅 기반의 Data Processing
◦ 다양한 NE, 다양한 형식의 Data의 수집 및 처리.
◦ HADOOP Core (HDFS, MapReduce) 및 기반 응용기술을 적용.
◦ Data 처리 성격에 따라 HADOOP Cloud와 IRIS Cloud로 분리 구성.
IRIS Node
IRIS Node
IRIS Node
IRIS Node
IRIS Node
IRIS Node
IRIS Node
IRIS CloudRelation처리/통계
Legacy연동/외부연동
HADOOP Node
Data
Data
Data
Data
Data
HADOOP Node
HADOOP Node
HADOOP Node
HADOOP Node
HADOOP Node
HADOOP Node
HADOOP Node
NE
NE
NE
NENE
HADOOP CloudRaw Data 수집Parsing/전처리
HDFS
MapReduce
HBASE CloudBASE
IRIS Node
R-DB Engine
Local/Global Table
DQuery Runtime
ODBC
JDBC Application
Legacy DBMS
MiddleWare
기졲 연동 시스템의 변경없이 적용을 위해서는 SQL 을 지원하는 것이 필요
SANL4 S/W
Web App Server
Oracle RACNode#1
Oracle RACNode#2
L4 S/W
Web App Server
IRIS
기존 시스템변경없이 적용가능
JDBC/ODBC 개발
Oracle DB Link 모듈개발
각종 연동관렦 편의모듈 개발
Commodity 서버 클러스터
HDFS 분산 파일시스템
Hbase
MapReduce 분산 데이터처리
검색엔진 분산처리 App
IRIS DBMS
Hadoop 분산처리 App 와
연동
RDBMS 기반 App
“이동통싞사 NMS 용량 증설 및 구조개선(2008년)” 에 IRIS의 코어엔진을 적용한 사례입니다. (HP-DL380 12대)◦ 1일 4.3억 record, 최번시 7500 record/sec 원시과금데이터 처리◦ 5분주기 40여개의 요약테이블생성 처리
HD DB Node * 12 Node3GHz 8Core8G Mem5500GB Disk
Total Spec* CPU : 3GHz 96 Core* Memory : 96G* Disk : 6T
음성 CDR* 3억 rec/1day* 5000 rec/sec
데이터 CDR* 1억 rec/1day* 2000 rec/sec
Call Fault Data* 3천만 rec/1day* 500 rec/sec
평균부하율 50% 미만으로 실시간요약 데이터 처리
40여개의 테이블 생성(7개의 Big Table)
테이블당 100여개의 컬럼
[PS_M5_SGSN]
/*+ LOCATION (KEY = <<$$ STRING(MSCID) $$>> AND PARTITION >= <<$$ STRING(STARTTIME) $$>> AND PARTITION < <<$$ STRING(ENDTIME) $$>>) */
SELECT
a.S_DATE, a.C_DATE, a.C_HOUR, a.C_MIN, a.SGSN_ID, b.TIME_SESSION_CNT, b.SESSION_CNT, a.SUCCESS_CNT, a.DROP_CNT,
a.CAUSE, a.CAUSE_CNT, a.DIAGNOSTICS_GRP, a.DIAGNOSTICS, a.DIAGNOSTICS_CNT
FROM
(
SELECT
<<$$ STRING(ENDTIME) $$>> S_DATE,
<<$$ STRING(ENDTIME, 0, 8) $$>> C_DATE,
<<$$ STRING(ENDTIME, 8, 10) $$>> C_HOUR,
<<$$ STRING(ENDTIME, 10, 12) $$>> C_MIN,
SGSN_ID,
COUNT(*) SUCCESS_CNT,
COUNT( CASE WHEN cause in (4,102) THEN 1 END ) DROP_CNT,
CAUSE,
COUNT(cause) CAUSE_CNT,
(
CASE WHEN DIAGNOSTICS_GROUP = 'gsm0408Cause' THEN 0
WHEN DIAGNOSTICS_GROUP = 'networkSpecificCause' THEN 30
ELSE NULL
END
) DIAGNOSTICS_GRP,
DIAGNOSTICS,
COUNT(diagnostics) DIAGNOSTICS_CNT
FROM PS_RAW_CDR
WHERE
CAUSE in (0,4,5,101,102)
GROUP BY
SGSN_ID,CAUSE,DIAGNOSTICS_GROUP,DIAGNOSTICS
) a
LEFT OUTER JOIN
(
SELECT
SGSN_ID,
COUNT( distinct CHARGING_ID || '-' || GGSN_ADDRESS) SESSION_CNT,
COUNT
(
distinct
(
CASE WHEN
(
RECORD_OPENING_TIME >= <<$$ STRING_TIME(STARTTIME, 4) $$>>
and
RECORD_OPENING_TIME < <<$$ STRING_TIME(ENDTIME) $$>>
)
or
(
RELEASE_TIME >= <<$$ STRING_TIME(STARTTIME, 4) $$>>
and
RELEASE_TIME < <<$$ STRING_TIME(ENDTIME) $$>>
)
THEN (CHARGING_ID || '-' || GGSN_ADDRESS) END
)
) TIME_SESSION_CNT
FROM
PS_RAW_CDR
GROUP by
SGSN_ID
) b
ON a.SGSN_ID = b.SGSN_ID
;
sql_grammar : hint_statement sql_statement SEMI
| m6_command
| SEMI
m6_command : STRING STRING
| STRING STRING STRING
hint_statement : HINT_START hint_list HINT_END
| empty
hint_list : hint COMMA hint_list
| hint
hint : STRING LPAREN expr RPAREN
| STRING
sql_statement : select_statement
| create_statement
| drop_statement
| delete_statement
| update_statement
| insert_statement
create_statement : create_table_stmt
| create_index_stmt
drop_statement : drop_table_stmt
| drop_index_stmt
| drop_backend_stmt
insert_statement : INSERT INTO STRING LPAREN column_list RPAREN VALUES LPAREN value_list RPAREN
update_statement : UPDATE table_name SET update_column_list where_expression
delete_statement : DELETE FROM table_name where_expression
select_statement : SELECT result_expression FROM table_expression where_expression group_by_expression order_by_expression compound_op_select
create_table_stmt : CREATE TABLE if_not_exists STRING LPAREN table_schema RPAREN table_value
create_index_stmt : CREATE INDEX if_not_exists STRING ON STRING LPAREN indexed_column_list RPAREN
| CREATE UNIQUE INDEX if_not_exists STRING ON STRING LPAREN indexed_column_list RPAREN
drop_table_stmt : DROP TABLE if_exists STRING
drop_index_stmt : DROP INDEX if_exists STRING
drop_backend_stmt : DROP BACKEND STRING LPAREN expr RPAREN
column_list : column_name
| column_name COMMA column_list
update_column_list : update_column
| update_column COMMA update_column_list
update_column : column_name EQ expr
if_exists : IF EXISTS
| empty
if_not_exists : IF NOT EXISTS
| empty
table_schema : column_define_list table_constraint_list
table_value : SCOPE STRING RAMEXPIRE value DISKEXPIRE value PARTITIONKEY value PARTITIONDATE value PARTITIONRANGE value
column_define_list : column_define
| column_define COMMA column_define_list
table_constraint_list : COMMA table_constraint_stmt
| COMMA table_constraint_stmt table_constraint_list
| empty
table_constraint_stmt : PRIMARY KEY LPAREN indexed_column_list RPAREN
| UNIQUE LPAREN indexed_column_list RPAREN
indexed_column_list : indexed_column
| indexed_column COMMA indexed_column_list
indexed_column : column_name
column_define : column_name STRING column_constraint_stmt
column_constraint_stmt : constraint_name column_constraint
| empty
constraint_name : CONSTRAINT STRING
| empty
column_constraint : PRIMARY KEY ASC autoincrement
| PRIMARY KEY DESC autoincrement
| NOT NULL
| UNIQUE
| DEFAULT NUMBER
| DEFAULT STRING
where_expression : WHERE expr
| empty
group_by_expression : GROUP BY result_expression
| empty
order_by_expression : ORDER BY result_expression
| ORDER BY result_expression DESC
| ORDER BY result_expression ASC
| empty
compound_op_select : compound_op select_statement
| empty
compound_op : UNION
| UNION ALL
| INTERSECT
| EXCEPT
result_expression : result_column
| result_column COMMA result_expression
table_expression : table_list
result_column : STAR
| column_name
| table_name DOT STAR
| alias_expression
| expr
alias_expression : expr STRING
| expr AS STRING
| LPAREN select_statement RPAREN STRING
| LPAREN select_statement RPAREN AS STRING
function_expression : function_name LPAREN param_list RPAREN
param_list : param COMMA param_list
| param
param : expr
| value
| STAR
function_name : STRING
table_list : table_name
| table_name join_expr_list
table_name : STRING
| alias_expression
| LPAREN select_statement RPAREN
join_expr_list : join_expr join_expr_list
| join_expr
join_expr : join_op table_name join_args
| empty
join_op : COMMA
| LEFT OUTER JOIN
join_args : ON expr
| empty
operation_expression : expr LT expr
| expr GT expr
| expr LE expr
| expr GE expr
| expr NE expr
| expr EQ expr
| expr MINUS expr
| expr DIVIDE expr
| expr PLUS expr
| expr STAR expr
| NOT_OP_1 expr
| expr NOT_OP_2 expr
| expr STR_COMP expr
expr : function_expression
| operation_expression
| LPAREN expr RPAREN
| expr AND expr
| expr OR expr
| expr IS NULL
| expr NOT NULL
| expr IS NOT NULL
| expr ISNULL
| expr NOTNULL
| expr IN LPAREN value_list RPAREN
| expr IN LPAREN select_statement RPAREN
| expr NOT IN LPAREN value_list RPAREN
| expr NOT IN LPAREN select_statement RPAREN
| expr like_operation expr
| expr NOT like_operation expr
| between_expr
| case_expr
| DISTINCT expr
| column_name
| table_name DOT column_name
| value_list
| KEY
between_expr : expr BETWEEN expr AND expr
| expr NOT BETWEEN expr AND expr
case_expr : CASE when_expr_list END
| CASE when_expr_list else_expr END
when_expr_list : when_expr when_expr_list
| when_expr
when_expr : WHEN expr THEN expr
else_expr : ELSE expr
like_operation : LIKE
column_name : STRING
value_list : value COMMA value_list
| value
autoincrement : AUTOINCREMENT
| empty
value : NULL
| term
| QUOATION MINUS QUOATION
| QUOATION_STRING
term : STRING
| NUMBER
empty :