배치 파일(.BAT)을 실행 파일(.EXE)로 변환 - Bat To Exe Converter 1.6 (GUI 전용)

윈도우즈/OS 일반|2016. 4. 26. 14:18
반응형

1. Bat To Exe Converter 1.6 소개

보통은 배치 파일을 굳이 실행 파일(executable)로 만들어야 할 이유는 없습니다. 배치 파일 상태로 두더라도 실행에 큰 문제가 없기 때문입니다. 그럼에도 불구하고, 이러한 작업이 필요한 경우가 있습니다.

이유는 여러 가지가 있을 수 있습니다. 실행 코드를 숨기고 싶다거나, 좀 더 멋있게 보이고 싶다거나 하는 이유도 있을 수 있을 것입니다. 배치 파일이 실행될 때에는 항상 콘솔 창(=도스 창)이 보이기 때문에, 이를 보이지 않기 위해서 이 방법을 쓸 수도 있겠습니다.

필자의 경우, 배치 파일을 관리자 권한 하에서 실행하도록 하기 위해 이 방법을 사용하였습니다. 배치 파일 상태에서는, 실행되면서 관리자 권한으로 실행될지 여부를 묻도록 처리할 수가 없고, 사용자가 직접 "관리자 권한으로 실행" 옵션을 주어 실행을 해야 합니다. 그러나 관리자 권한이 필요한 배치 파일을 탐색기 실행 확장에 등록하여 사용하게 되면 이 방법으로 관리자 권한을 줄 수가 없기 때문에, 반드시 실행 파일의 형태로 변환하여 사용할 필요가 있었습니다.

이런 경우 사용할 수 있는 BAT TO EXEC 변환기는 의외로 상당히 역사가 깊습니다. (^^) 그리고 이 글에서 소개하는 프로그램은 그런 변환기 중 하나입니다.

하단의 링크는 이 블로그 계정에 등록된 파일입니다. 위의 제작사 홈페이지에서 직접 다운로드 받으실 것을 강력하게 권장하지만, 혹시 링크가 깨진 경우에는 아래의 복사본을 다운로드 받으셔도 됩니다.

다운로드 (크기: 582KB)

프로그램을 다운로드 받으면 32비트 버전과 64비트 버전이 함께 들어 있으므로 적절한 버전을 사용하면 됩니다.

프로그램을 실행한 결과. 여러 가지 설정을 할 수 있지만, 그냥 상단의 파일 선택 창에 배치 파일만 선택한 후 하단의 Compile 버튼을 눌러도 된다.
프로그램을 실행한 결과. 여러 가지 설정을 할 수 있지만, 그냥 상단의 파일 선택 창에 배치 파일만 선택한 후 하단의 Compile 버튼을 눌러도 된다.

여러 가지 유용한 옵션을 제공하고 있는데, 눈에 띄는 것은 콘솔 창을 숨길지 여부 설정, 관리자 권한이 필요한지 여부 설정, 코드 암호화 설정 등입니다. Versioninformations 탭에서는 실행 파일의 아이콘도 설정할 수 있고, 실행 파일 정보를 입력할 수도 있습니다.

2. 참고 - 악성 코드 진단 문제

많은 종류의 악성 코드 퇴치 프로그램에서 이 프로그램이 생성하는 파일(*.tmp)을 악성코드로 진단할 수 있습니다. 사실 이 프로그램 뿐만 아니라, 현존하는 거의 대부분의 BAT TO EXE 변환기는 (프로그램 그 자체이건, 그 프로그램의 생성물이건) 대다수의 악성 코드 퇴치 프로그램에 의해 악성 코드로 진단되고 있습니다.

필자가 생각하기에는, 실제로 그 프로그램이 악성코드일 수도 있지만, 많은 경우 그 변환기를 이용하여 제작된 악성 코드가 존재하기 때문에, 악성 코드 퇴치 프로그램이 이 악성 코드를 진단하는 과정에서 동일하거나 유사한 코드를 가지고 있는 변환기 그 자체 또는 그 변환기를 이용하여 만들어진 다른 실행 파일들을 아울러 악성 코드로 진단하는 것이 아닌가 합니다. 또는, 프로그램의 동작 방식(스스로 실행 가능한 바이너리를 시스템상에 생성)이 전형적인 트로이 목마(Dropper) 프로그램과 유사하기 때문에 이를 악성코드로 진단하는 것일 수도 있습니다.

실제로, 과거에는 BAT2EXEC 라는 툴을 이용하여 파괴적인 동작을 하는 배치 파일을 실행 파일(.COM 파일)로 변환한 형태의 트로이 목마 프로그램이 다수 존재하였던 시기도 있었습니다. 요즘은 그 자체가 파괴적인 행동을 하기보다는, 이들 배치 파일을 이용하여 트로이 목마 프로그램 등 악성 코드를 시스템에 설치하는 종류의 악성 코드가 이들 툴을 이용하여 제작될 것으로 생각됩니다.

이 프로그램도 많은 악성 코드 퇴치 프로그램이 중간 생성물(*.tmp)을 악성 코드로 진단합니다. 특히 외산 악성 코드 퇴치 프로그램인 BitDefender 엔진에서도 이를 악성코드로 진단하고 있기 때문에, 국내에서 많이 사용되고 있는 알약 등의 악성 코드 퇴치 프로그램에서도 (이들 프로그램이 BitDefender 엔진을 사용하는 관계로) 이 파일을 악성 코드로 진단할 것으로 예상됩니다. V3의 경우, 이 중간 생성물을 Dropper/Win32.Mudrop 으로 진단하여 필자가 직접 안철수연구소에 문의하였으며, 악성코드라고 판단하기 애매한 점이 있어 진단 제외하였다는 회신을 받았습니다.

안철수연구소에서 돌아온 확인결과 회신.
안철수연구소에서 돌아온 확인결과 회신.



[출처] http://www.nightowl.pe.kr/blog/article/426

반응형

'윈도우즈 > OS 일반' 카테고리의 다른 글

Wowza streaming 삭제  (0) 2018.01.04
원격에서 서버 리부팅하기  (0) 2017.01.19
포트 사용 프로세스 확인  (0) 2015.12.29
cwrsync 설정  (0) 2015.01.27
IIS 자동백업 설정  (0) 2015.01.27

댓글()

lsyncd 설정

리눅스/OS 일반|2016. 4. 25. 15:52
반응형

서버 파일의 실시간 동기화에 사용되는 lsyncd를 이용해 파일 동기화 설정을 했다. lsyncd는 rsync를 이용해 파일이 추가되면 거의 실시간으로 백업 서버에 파일이 백업된다. lsyncd는 리눅스 커널의 inotify로 파일시스템의 변경사항을 체크하여 변경사항이 생기면 rsync를 호출하여 백업 서버로 동기화 하는 데몬이다.

1. lua 설치

lsyncd는 설정 파일에 lua 언어의 문법을 사용한다. 따라서 lua 패키지를 설치한다.

2. lsyncd 설치

만약 yum repo 리스트에 epel 리스트가 없으면 설치가 되지 않는다. 아래와 같이 epel repo를 설치한다.

위는 centos6 64비트 epel repo를 설치한 것이다. 버전이 다르다면 그 버전에 맞게 설치를 해줘야 한다.

3. rsync 설정은 백업 서버에서 해준다. 설정법은 이전 포스트 http://ncube.net/10831 를 참고하면 된다. 다만 rsync.conf 파일 설정에서 마스터 서버에서 백업서버로 파일을 동기화하는 것이므로 쓰기 권한이 있어야 한다. 아래와 같이 read only 설정을 no 로 변경한다.

4. lsyncd 설정

서버 환경에 맞게 적절히 설정은 수정한다.  설정 항목 중 192.168.0.3::www1-data 는 백업 서버의 ip와 rsync.conf 에서 설정한 서비스 이름이다.

5. lsyncd 시작

더미 파일을 생성하여 동기화 테스트를 해본다. 만약 정상적으로 동기화가 되지 않는다면 /var/log/lsyncd/lsyncd.log 파일에서 로그를 확인하여 수정해야 한다. 실제로 테스트를 해보니 실시간으로 동기화가 되지는 않는 것 같다. 추가적인 설정이 있는 것인지 모르겠으나 보통 10 ~ 20초 정도의 딜레이가 있는 듯 하다. 테스트한 서버의 문제일 수 있다. 추가적으로 lsyncd 설정에서 동일 서버에서 백업을 실행한다면 아래와 같이 lsyncd.conf 파일을 설정하면 된다.

데이터 백업때문에 정말 많은 자료를 찾아보는 것 같다. 아직도 갈 길이 너무도 먼 서버관리.. 흐~

lsyncd 문서 : https://github.com/axkibe/lsyncd/wiki/Manual-to-Lsyncd-2.1.x



[출처] http://linuxforge.tistory.com/106

반응형

댓글()

Darwin Streaming Server 6.0.3 설치 (스트리밍 서버)

리눅스/OS 일반|2016. 4. 12. 10:02
반응형

# 사용자 및 그룹추가

groupadd qtss

adduser qtss -g qtss

 

# 폴더이동

cd /usr/local/src

 

# 설치파일 다운로드

wget http://server.opendocs.co.kr/DarwinStreamingSrvr6.0.3-Source.tar

wget http://server.opendocs.co.kr/dss-6.0.3.patch

wget http://server.opendocs.co.kr/dss-hh-20080728-1.patch

 

// 64bit 환경에서는 아래 네 줄 추가로 실행하고 진행해야 함 (동훈 추가)

# wget http://www.abrahamsson.com/dss-6.0.3-x86_64.patch

# patch -p0 < dss-6.0.3-x86_64.patch

# wget http://www.abrahamsson.com/DarwinStreamingServer-6.0.3-2.src.rpm

# rpm -Uvh DarwinStreamingServer-6.0.3-2.src.rpm

 

# 압축해제 & 패치실행

tar xvf DarwinStreamingSrvr6.0.3-Source.tar

patch -p0 < dss-6.0.3.patch

patch -p0 < dss-hh-20080728-1.patch

 

# 빌드

cd DarwinStreamingSrvr6.0.3-Source

./buildtarball

 

# 설치

cd DarwinStreamingSrvr-Linux

./Install

 

# 관리자 아이디 비밀번호입력

Please enter a new administrator user name: {아이디 입력}

Please enter a new administrator Password: {비밀번호 입력}

Re-enter the new administrator password: {비밀번호 확인}

 

# 외부접속시 포트허용

firewall-cmd --zone=public --permanent --add-port=554/tcp

firewall-cmd --zone=public --permanent --add-port=1220/tcp

firewall-cmd --reload

 

# 서버 시작시 자동실행

cd /etc/init.d

wget http://server.opendocs.co.kr/dssd

chmod 755 dssd

chkconfig dssd on

service dssd restart


# 실행 파일이 실행되지 않을때 (동훈 추가)

# /etc/init.d/dssd restart

-bash: /etc/init.d/dssd: /bin/bash^M: bad interpreter: 그런 파일이나 디렉토리가 없음


vim 편집기에서 아래 명령을 수행 후 재시도

:set fileformat=unix



* 첨부파일

darwinstreamingserver-6.0.3-2mdv2009.1.x86_64.rpm

dss-6.0.3.patch

dss-hh-20080728-1.patch


반응형

댓글()

iptables 구동 잘 안될때 명령어로 셋팅하기

리눅스/Security|2016. 4. 11. 09:37
반응형

스크립트 만들어서 실행하면 빠르게 적용됩니다.


# vi set_iptables.sh



iptables -F

iptables -X

iptables -A INPUT -i lo -j ACCEPT

iptables -A INPUT -d 0.0.0.0/0.0.0.0 -p tcp -m tcp ! --tcp-flags SYN,RST,ACK SYN -j ACCEPT

iptables -A INPUT -d 0.0.0.0/0.0.0.0 -p udp -m udp --dport 53 -j ACCEPT

iptables -A INPUT -s 0.0.0.0/0.0.0.0 -p udp -m udp --sport 53 -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

iptables -A OUTPUT -p udp -m udp --dport 20 -j ACCEPT

iptables -A OUTPUT -p tcp -m tcp --dport 21 -j ACCEPT

iptables -A OUTPUT -p tcp -m tcp --dport 22 -j ACCEPT

iptables -A OUTPUT -p udp -m udp --dport 53 -j ACCEPT

iptables -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT

iptables -A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT

iptables -A OUTPUT -p tcp -m tcp --dport 3389 -j ACCEPT


반응형

댓글()

MySQL Cluster 구성

리눅스/MySQL|2016. 3. 31. 16:41
반응형

1. 안내


1) Cluster 소개


MySQL Cluster 는 기존의 MySQL Replication 의 단방향 데이터 전송 시스템 (Master – Slave) 의 단점을 보완하고 보다 안전하고 활용성 높은 시스템 구현이 가능하게 해줍니다. 대체로 Cluster 로 묶여진 서버는 Multi Master 서버로 활용되어 어느 서버에서 데이터가 입력, 수정, 삭제 되더라도 다른 데이터 서버로의 갱신이 신속히 이루어집니다.

또한 Replication 에서와는 다르게 장애 발생시, 장애 포인트를 인지하여 스스로 복원하는 기능을 제공하고 있어 무정지 DB시스템을 원하는 고객에게 권장할만 합니다. 다량의 접속이 이루어져 DB 서버가 다운되어도 또 다른 서버로 서비스를 유지하기 위한 시스템으로 보면 됩니다.



2) Replication Cluster 의 특징 (장단점)


Replication

Cluster

장점

단점

장점

단점

Slave 서버에 데이터를

실시간 백업

Master 서버 다운시

백업 및 업데이트 연산

불가

99.999%고가용성

구현, 무정지 DB 시스템

구축, 운영 가능

데이터를 메모리에 저장

하므로 많은 메모리 필요

여러대의 Slave 서버

이용해 부하분산 가능

Master 서버 다운시

수동 복구

자동 FailOver

구성을 위해 최소 3대의

서버 필요


무정지 시스템 운영을 위해 최소 6대의 서버 필요

Cluster에 비해 적은 수의

서버로 시스템 구성 및

부하분산 가능

(최소 2)

binlog 관리 필요

Sql, Data 노드를

복수개로 구성, 부하분산

노드 추가를 위해

클러스터 재시작 필요


Slavemaster 쿼리

처리량을 따라가지

못할경우 일관성 오류

발생 가능





3) Cluster 구성도




































그림에서 표현된 것과 같이 MySQL Cluster 는 총 3종류의 요소로 구성이 되며 각각의 역할은 아래와 같습니다.


- Management 서버 (이하 MGM 서버)

Cluster 를 구성하는 서버를 전체적으로 관리 합니다. (DATA 서버 및 SQL 서버 다운 여부 체크)


- DATA 서버

입력된 데이터를 저장하는 역할을 합니다. 또한 데이터를 메모리에 적재하여 SQL 서버가 Application

으로부터 요청받은 정보를 신속히 응답할 수 있도록 해줍니다.

Cluster 초기버전에서는 메모리에 적재하여 사용했었지만, MySQL 5.1 이후 버전부터는 하드디스크를

기반으로 저장하는것이 가능해졌습니다.


- SQL 서버

SQL을 이용하는 Application 의 요청(조회, 갱신, 삭제 등)에 응답하며, 변경되는 데이터 정보를 DATA

서버로 전달하여 모든 SQL 서버가 동일한 데이터로 응답할 수 있도록 합니다.




4) 매뉴얼 테스트 환경


MGM 서버, DATA 서버, SQL 서버의 역할을 나누어 여러대의 서버에 설치가 가능합니다. 굳이 한 대 또는 두 대의 서버에 설치를 모두 할 수 있으나 그러한 구성은 무의미하며, 효율적 관리 및 활용을 위해 최소 3대 이상으로 구성하여 사용하게 됩니다.

(MGM 1, DATA & SQL 서버 2)


그러나 이렇게 3대로 구성한 시스템에서도 MGM 서버가 다운되면, 모든 시스템이 마비되기 때문에 MGM 서버도 2중화를 해야 비로소 온전한 무정지 시스템이 구현되는 것 입니다.

(MGM 2, DATA & SQL 서버 2/ 여기서 MGM 서버 1대는 Standby Server 로 활용)


본 매뉴얼 작성을 위해 구성했던 테스트 서버 환경은 3대이며 아래와 같습니다.



[MGM 서버]

- DATA & SQL 서버 관리용

- IP : 192.168.56.11

- CentOS 6.7 (64bit)

- MySQL Cluster 7.4.10



[DATA & SQL 서버1]

- 서비스용

- IP : 192.168.56.12

- CentOS 6.7 (64bit)

- MySQL Cluster 7.4.10



[DATA & SQL 서버2]

- 서비스용

- IP : 192.168.56.13

- CentOS 6.7 (64bit)

- MySQL Cluster 7.4.10



* SQL 서버는 mysqld 데몬이 구동되는 서버를 말합니다.

* MySQL Cluster 7.4.10 MySQL 5.6.28 을 포함하고 있습니다.



본 매뉴얼은 최소한의 설치 및 설정 방법만 기술하였으므로 설명이 부족한 부분이 있을 수 있습니다. 기타 필요 사항은 검색을 통하여 확인하시기 바랍니다.





2. 설치


설치는 MGM, DATA & SQL 서버 모두 동일합니다.


1) Cmake 설치


# yum -y install gcc* g++*


# cd /usr/local/src


# wget http://pkgs.fedoraproject.org/lookaside/pkgs/cmake/cmake-2.8.5.tar.gz/3c5d32cec0f4c2dc45f4c2e84f4a20c5/cmake-2.8.5.tar.gz


# tar xvzf cmake-2.8.5.tar.gz


# cd cmake-2.8.5


# ./bootstrap


# make


# make install



2) JDK 설치


MySQL Cluster JDK 를 사용 합니다. 본 매뉴얼에서 설치하려는 MySQL Cluster 7.4.10 버전의 경우 JDK 1.8 버전 이상을 필요로 합니다.


# wget http://uni-smr.ac.ru/archive/dev/java/bulk/jdk-8u77-linux-x64.rpm


설치전에 기존버전을 삭제하고 진행합니다.


# yum -y remove java


# rpm -ivh jdk-8u77-linux-x64.rpm


설치된 JDK 버전을 확인해봅니다.


# java -version


java version "1.8.0_77"

Java(TM) SE Runtime Environment (build 1.8.0_77-b03)

Java HotSpot(TM) 64-Bit Server VM (build 25.77-b03, mixed mode)



3) MySQL Cluster 설치


MySQL을 구동하고 관리할 계정을 생성합니다.


# groupadd -g 400 mysql


# useradd -u400 -g400 -d /usr/local/mysql -s /bin/false mysql


문서 작성일 (2016.3.29) 기준 가장 최신버전인 MySQL Cluster 7.4.10을 다운로드 받아 설치합니다.


# wget http://download.softagency.net/MySQL/Downloads/MySQL-Cluster-7.4/mysql-cluster-gpl-7.4.10.tar.gz


# tar xvzf mysql-cluster-gpl-7.4.10.tar.gz


# cd mysql-cluster-gpl-7.4.10


# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DENABLED_LOCAL_INFILE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DSYSCONFDIR=/etc -DMYSQL_TCP_PORT=3306


# make


# make install



4) DB 생성 및 기본보안 설정


# cp -arp scripts/mysql_install_db /usr/local/mysql


# cd /usr/local/mysql


# rm -rf data


# perl ./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data


# chown -R mysql:mysql /usr/local/mysql


# chown -R mysql.mysql /usr/local/mysql/data


(MGM 서버에서는 config.ini 파일 생성)

# cp share/mcc/tst/example_config.ini /etc/config.ini


(DATA & SQL 서버에서는 my.cnf 파일 생성)

# cp support-files/my-default.cnf /etc/my.cnf


# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld


# chmod 700 /etc/init.d/mysqld


# chown root.root /etc/init.d/mysqld


# chkconfig --add mysqld


# chmod 711 /usr/local/mysql


# chmod 700 /usr/local/mysql/data


# chmod 751 /usr/local/mysql/bin


# chmod 750 /usr/local/mysql/bin/*


# chmod 755 /usr/local/mysql/bin/mysql


# chmod 755 /usr/local/mysql/bin/mysqldump





3. 설정


MGM 서버와 DATA & SQL 서버의 설정 방식이 다릅니다.

주의해서 해당 서버에 맞게 설정하시기 바랍니다.


1) MGM 서버


# vi /etc/config.ini


[NDBD DEFAULT]

NoOfReplicas: 2 // Cluster 내 저장된 테이블에 대한 복사본 수

DataDir: /usr/local/mysql/data

FileSystemPath: /usr/local/mysql/data

DataMemory: 600M // 데이터를 저장할 물리적 메모리 용량

IndexMemory: 100M // 인덱스를 저장할 물리적 메모리 용량

BackupMemory: 64M


[MGM DEFAULT]

PortNumber: 1186

DataDir: /usr/local/mysql/data


[NDB_MGMD]

NodeId: 1 // NodeId NDBD, API 를 포함하여 유일한 번호로 설정해주어야 함

HostName: 192.168.56.11 // MGM 서버 IP

ArbitrationRank: 1


[NDBD] // DATA 서버(NODE) 섹션

NodeId: 2

HostName: 192.168.56.12 // DATA 서버 IP


[NDBD]

NodeId: 3

HostName: 192.168.56.13 // DATA 서버 IP


[API] // SQL 서버(NODE) 섹션

NodeId: 12

HostName: 192.168.56.12 // SQL 서버 IP


[API]

NodeId: 13

HostName: 192.168.56.13 // SQL 서버 IP



2) DATA & SQL 서버


# vi /etc/my.cnf


[mysqld]

ndbcluster

ndb-connectstring=192.168.56.11 // MGM 서버 IP

datadir=/usr/local/mysql/data

basedir=/usr/local/mysql

port=3306

socket=/tmp/mysql.sock


[mysql_cluster]

ndb-connectstring=192.168.56.11 // MGM 서버 IP


[mysql]

socket=/tmp/mysql.sock


[client]

socket=/tmp/mysql.sock





4. 구동


구동 방법 또한 MGM 서버와 DATA & SQL 서버가 다릅니다.

주의해서 해당 서버에 맞게 구동하시기 바랍니다.


전체적인 데몬 구동 순서는 'MGM 서버 > DATA 서버 > SQL 서버(MySQL)' 입니다.


1) MGM 서버


# /usr/local/mysql/bin/ndb_mgmd -f /etc/config.ini –initial


참고로 중지 방법은 아래와 같습니다.


# /usr/local/mysql/bin/ndb_mgm -e shutdown



2) DATA & SQL 서버


DATA 데몬 (NetworkDatabase) 구동


# /usr/local/mysql/bin/ndbd -c 192.168.56.11:1186


2016-03-29 16:21:33 [ndbd] INFO -- Angel connected to '192.168.56.11:1186'

2016-03-29 16:21:33 [ndbd] INFO -- Angel allocated nodeid: 12


SQL 데몬 구동


# /etc/init.d/mysqld start





5. 확인


구동이 잘 되고 있는지는 MGM 서버에서 명령어를 통해 확인이 가능합니다.


# /usr/local/mysql/bin/ndb_mgm -e show


Connected to Management Server at: localhost:1186

Cluster Configuration

---------------------

[ndbd(NDB)] 2 node(s)

id=2 @192.168.56.12 (mysql-5.6.28 ndb-7.4.10, Nodegroup: 0, *)

id=3 @192.168.56.13 (mysql-5.6.28 ndb-7.4.10, Nodegroup: 0)


[ndb_mgmd(MGM)] 1 node(s)

id=1 @192.168.56.11 (mysql-5.6.28 ndb-7.4.10)


[mysqld(API)] 2 node(s)

id=11 @192.168.56.12 (mysql-5.6.28 ndb-7.4.10)

id=12 @192.168.56.13 (mysql-5.6.28 ndb-7.4.10)



이제 클러스터링 동작 여부를 확인하기 위해 DATA & SQL 서버에 접속하여 아래와 같이 DB table 생성을 해봅니다.


# mysql -p


mysql> create database sysdocu;


mysql> use sysdocu;


mysql> create table example (id int) engine=ndb;


테이블을 직접 생성하지 않은 또다른 DATA & SQL 서버에서 테이블 생성 여부를 확인하면 됩니다.



* 주의 사항

cluster 사용시 단 한가지 주의할 점은 테이블이 반드시 ndb 타입이어야 클러스터링이 됩니다.

(MyISAM, InnoDB 는 동기화되지 않음)





6. 장애 복구 (테스트)


서버는 구성해놓은 채로 당분간 운영이 되겠지만, H/W적인 장애나 S/W적인 이유에서 장애를 일으켜 서비스가 되지 않는 소지가 분명히 존재합니다. 여러가지 경우에 따른 대처 방법을 기술해 놓았습니다.



1) DATA & SQL 1번 서버 다운시


- 상황 : DATA & SQL 1번 서버 (192.168.56.12) 를 완전히 다운시켜놓고 DATA & SQL 2번 서버

(192.168.56.13) 의 데이타를 갱신해보았다. 그 후에 DATA & SQL 1번 서버를 정상 부팅

하였을 경우, 데이타는 갱신이 되어있을까?


- 결과 : 그동안 DATA & SQL 2번 서버에 누적되어있던 데이터가 DATA & SQL 1번 서버에도 적용

이 되었다.


- 이유 : DATA 서버가 한 개 더 있기 때문이다. (DATA & SQL 2번 서버의 ndbd 데몬)

이를 통해 그동안 누적된 데이터가 다운에서 복귀한 서버로 자동 동기화가 된다.

그러므로 서비스용도인 SQL 서버는 물론이고, DATA 서버도 자동 동기화를 위하여 2대 이상

의 서버에 구성하는것을 추천한다. (DATA & SQL 서버 형식으로)


- 복구 절차 : 다운된 서버를 부팅하고 데몬 가동만 하면 되므로 특별한 조치가 없다.

데몬 구동은 'ndbd > mysqld ' 순서로 진행한다.



2) DATA & SQL 1, 2번 서버의 ndbd 데몬 종료시 (DATA 서버를 없애는 것)


- 상황 : 그럴일은 거의 없겠지만, DATA & SQL 1번 서버, DATA & SQL 2번 서버의 mysqld 데몬

은 살아 있으면서 ndbd 데몬만 두 서버에서 모두 종료 했을때, 데이터가 동기화 되는가?


- 결과 : ERROR 1296 (HY000): Got error 4009 'Cluster Failure' from NDBCLUSTER 라는 메세지

를 뿌리며 select, insert 등의 모든 쿼리가 실행되지 않았다.


- 이유 : DATA 서버 없이는 어떠한 SQL 서버도 데이타 입출력이 되지 않기 때문이다.

(SQL 서버는 무용지물 상태가 됌)


- 복구 절차 : DATA & SQL 서버마다 'ndbd 시작 > mysqld 재시작' 순서로 진행한다.



3) MGM 서버 다운시


- 상황 : DATA SQL 서버를 관리하는 MGM 서버가 다운되었을 경우 데이터가 동기화 되는가?


- 결과 : 2)번 테스트 때와 마찬가지로 ERROR 1296 (HY000): Got error 4009 'Cluster Failure'

from NDBCLUSTER 라는 메세지 를 뿌리며 select, insert 등의 모든 쿼리가 실행되지 않았다.


- 이유 : MGM 서버 없이는 어떠한 SQL 서버도 데이타 입출력이 되지 않기 때문이다.

(SQL 서버는 무용지물 상태가 됌)


- 복구 절차 : MGM 서버의 ndb_mgmd 시작 > DATA 서버의 ndbd 재시작 > SQL 서버의 mysqld

재시작



4) ndbd 데몬 시간차 다운시 (주의해서 잘 볼것! 중요함!)


- 상황 : DATA & SQL 1번 서버, 2번 서버의 ndbd 데몬만 시간차를 두고 종료할 것이다. 테스트를 위

한 순서는 아래와 같다.


현재 SQL 서버의 테이블 내 레코드 값이 '10' 이라고 하였을때를 가정한다.

(data 1 : ON, sql 1 : ON, data 2 : ON, sql 2 : ON, record : 10)


DATA & SQL 1번 서버의 ndbd 를 종료한다.

( data 1 : OFF, sql 1 : ON, data 2 : ON, sql 2 : ON, record : 10)


DATA & SQL 2번 서버에서 레코드 값을 '15' 로 변경한다.

( data 1 : OFF, sql 1 : ON, data 2 : ON, sql 2 : ON, record : 15)


DATA & SQL 2번 서버의 ndbd 를 종료한다.

( data 1 : OFF, sql 1 : ON, data 2 : OFF, sql 2 : ON, record : ??)


지금 시점에는 레코드를 읽을 수 없다. DATA 서버 둘 중 하나를 구동해야 서비스가 지속될 수

있는데, 현재 DATA 1번 서버에 저장되어있는 레코드 값은 '10' 이고, DATA 2번 서버에 저장되

어 있는 레코드 값은 '15' 이다. 어느 DATA 서버의 ndbd 를 구동 하느냐에 따라 데이터가 다르

게 나타날 수 있는것이다. 당연히 최근 종료된 ndbd 데몬을 구동해야 최근 데이터가 유지된다.

(실수로 오래전 종료된 ndbd 데몬을 먼저 구동했을 경우, 최대한 빨리 최근 종료된 ndbd 데몬

가동할 수 있도록 한다.)


DATA 서버의 ndbd 데몬을 구동 했다면, SQL 서버의 mysqld 데몬도 재구동 해준다.

(그래야 MGM 서버가 SQL 서버를 빨리 인지해 조금이라도 빨리 서비스를 제공할 수 있게

된다.)


- 복구 절차 : 어느 DATA 서버가 마지막 까지 살아있었는지 알고 있을 경우, 그 서버의 ndbd 데몬을

먼저 가동시킨다. 그리고 나서 모든 SQL 서버의 mysqld 데몬을 가동하도록 한다.


반응형

댓글()

VirtualBox 디스크 용량 늘리기(LINUX)

리눅스/OS 일반|2016. 3. 29. 13:20
반응형

보통 VirtualBox 로 가상머신을 만들게 되면 용량이 작아 리눅스 OS의 경우 SWAP파티션을 제외하고 / (통) 파티션을 잡는게 일반적입니다.

기존에 IDCHOWTO에서 VirtualBox 로 가상머신 용량 늘리기에 대해 두 차례 다루었지만

가상머신 리눅스 OS를 기준으로 자세히 다룬 내용이 없어서 추가로 작성하게 되었습니다.

용량 증설 방법은 의외로 간단하게 진행이 됩니다.

방법을 먼저 설명 드리면, vboxmanage 라는 명령을 이용해 파일 사이즈를 먼저 변경합니다.

그 다음 가상머신을 부팅하여 로그인하면 여전히 용량이 그대로인것을 알 수 있는데 resize2fs 명령을 통해

늘어난 디스크영역까지 파티션을 재설정 해주면 끝나게 됩니다.

 

1. 파일 사이즈 변경

스크린샷, 2016-04-07 16-33-18

현재 가상머신의 HDD  사이즈는 5G 로 되어있습니다. 이것을 10G로 늘려보겠습니다.

root 사용자로 전환한 뒤, 아래와 같이 가상머신 디렉토리에서 .vdi 파일 사이즈를 변경합니다.

 

# vboxmanage modifyhd CentOS6.7.vdi –resize 10240

스크린샷, 2016-04-07 16-37-22

이것만으로 간단히 HDD가 늘어난것을 확인할 수 있습니다.

스크린샷, 2016-04-07 16-49-19

하지만 리눅스 파티션이 늘어난것은 아니기때문에 서버에 로그인해서 파티션 영역을 재설정 해주어야 합니다.

 

2. 가상머신에 로그인하여 용량 확인

# df -h

용량 늘지 않은것이 확인됐습니다. 그럼 현재 설정된 파티션을 추가된 디스크의 영역까지 새로 잡아 설정을 해보도록 합니다.

스크린샷, 2016-04-07 16-50-20

# fdisk /dev/sda

d (파티션 삭제)
2 (/dev/sda2 삭제)
n (새로운 파티션 생성)
p (Primary 파티션 선택)
2 (2번 파티션 지정)
엔터 (실린더 처음값 default)
다시 엔터 (실린더 맨마지막값 default)
w (변경사항 기록)
 
# reboot

시스템이 리부팅되면, 아래와 같이 resize2fs 명령을 수행합니다.

# resize2fs /dev/sda2

스크린샷, 2016-04-07 16-53-18

용량이 증설된것을 확인하였습니다.


반응형

댓글()

VirtualBox 게스트들간의 통신을 위한 네트워크 설정

리눅스/OS 일반|2016. 3. 28. 10:34
반응형

1. VirtualBox의 메뉴에서 [파일] - [환경설정] - [네트워크] - [호스트 전용 네트워크] 탭에서 우측의 '추가' 버튼을 눌러

vboxnet0 항목을 만듭니다.

그리고 우측 아이콘 맨 아래 '편집' 버튼을 눌러 아래와 같이 셋팅합니다.


1) '어댑터' 탭

IPv4 주소 : 192.168.56.1    // 원하는 대역을 설정할 수 있음

IPv4 서브넷 마스크 : 255.255.255.0

IPv6 주소 : (빈값)

IPv6 네트워크 마스크 길이 : 0


2) 'DHCP 서버' 탭

[서버 사용] 체크박스 해제



2. 가상머신의 메뉴에서 [설정] - [네트워크] 를 누르고 아래와 같이 셋팅합니다.


1) 어댑터1

[네트워크 어댑터 사용하기] 체크

다음에 연결됨 : NAT


2) 어댑터2

[네트워크 어댑터 사용하기] 체크

다음에 연결됨 : 호스트 전용 어댑터

이름 : vboxnet0    // 메인 셋팅에서 생성했던 '호스트 전용 네트워크'


* 같은 네트워크로 묶을 가상머신들은 모두 2번 항목과 동일하게 설정합니다.



3. 가상머신 서버 부팅 후 네트워크 설정을 합니다.


# vi /etc/sysconfig/network-scripts/ifcfg-eth0


DEVICE=eth0

ONBOOT=yes

BOOTPROTO=dhcp 


vi /etc/sysconfig/network-scripts/ifcfg-eth1


DEVICE=eth1

ONBOOT=yes

BOOTPROTO=static

IPADDR=192.168.56.11

NETMASK=255.255.255.0

# GATEWAY 없음


* 같은 네트워크로 묶을 가상머신들은 모두 3번 항목과 동일하게 설정합니다. (당연한 말이지만 가상머신별 IP는 다르게 해주세요)



반응형

댓글()

FireFox에 HttpFox 사용하기

리눅스/OS 일반|2016. 2. 5. 13:37
반응형

Firefox에는 부가 기능이 있다.

HttpFox 를 사용하면

해당 접속하는 페이지에 오고가는 Context 메시지를 볼 수 있다.
보기에는 한 화면에서 같은 URL에 정보를 가져오는 것 같지만
광고 또는 기사들은 외부 링크에서 가져오는 부분이 많다

Firefox를 설치 후


1. 상단바에 Firefox 주황색 버튼을 클릭 후 부가기능을 클릭!!






2. 검색 입력란에 httpfox 기입 후 돋보기 아이콘을 클릭한다.

    HttpFox 나타난다. 설치하기 버튼을 클릭한다




3. 다시시작을 해야지만 해당 기능을 쓸수 있음





4. 설치가 끝났지만 화면이 표시되는 부분이 없다,,, 설치가 된 건지 어떻게 실행을 하는 건지 파악하기 힘들다
    그 이유는 Firefox는 기본값으로 부가 기능 모음이 표시되지 않는다.
    설정에 부가 기능 모음을 클릭을 하면 된다




5. 변화가 없어지만 하단에 길다란 작은 바가 생긴다. 작은 아이콘이 있는데 저거를 클릭을 해줘야 프레임이 하나가 더 생긴다.

    이제 Start 버튼을 클릭하여 구동을 해보자

   




6. 네이버를 접속을 해 본다. 하단 프레임에 다른 URL에 정보를 가져오는 것으로 확인을 할 수 있다.

   



[출처] http://blog.daum.net/mania1001/504

반응형

댓글()

리눅스 캐시 메모리 비우기

리눅스/OS 일반|2016. 1. 13. 14:51
반응형

명령어[편집]

  • pagecache 해제
echo 1 > /proc/sys/vm/drop_caches
  • dentries, inodes 해제
echo 2 > /proc/sys/vm/drop_caches
  • pagecache, dentries, inodes 모두 해제
echo 3 > /proc/sys/vm/drop_caches

실행예시[편집]

[root@zetawiki ~]# cat /proc/sys/vm/drop_caches
0
→ drop_caches의 기본값은 0 (=캐시 메모리를 drop하지 않음)
[root@zetawiki ~]# free -m
             total       used       free     shared    buffers     cached
Mem:          3881       1183       2698          0        156        617
-/+ buffers/cache:        408       3472
Swap:         6063          0       6063
→ 버퍼 156MB, 캐시 617MB 사용중
[root@zetawiki ~]# echo 3 > /proc/sys/vm/drop_caches
[root@zetawiki ~]# cat /proc/sys/vm/drop_caches
3
→ drop_caches를 3으로 조정 (=pagecache, dentries, inodes 캐시 메모리 영역을 해제)
[root@zetawiki ~]# free -m
             total       used       free     shared    buffers     cached
Mem:          3881        365       3516          0          0         21
-/+ buffers/cache:        342       3538
Swap:         6063          0       6063
→ 버퍼 0MB, 캐시 21MB 로 줄어듬.

[출처
http://zetawiki.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_%EC%BA%90%EC%8B%9C_%EB%A9%94%EB%AA%A8%EB%A6%AC_%EB%B9%84%EC%9A%B0%EA%B8%B0


반응형

댓글()

IIS 7.5 + PHP 연동

윈도우즈/IIS|2015. 12. 30. 12:58
반응형

IIS 7.5 + PHP 연동


1. IIS 역할 추가시 CGI 설치
php_1.jpg 


2. PHP 다운 후 적당한 위치에 압축 해체 (Non Thread Safe – Zip Version 다운로드)
- PHP Download : https://windows.php.net/downloads/releases/archives/

(압축된 NTS 버전 받아서, 압축 해제후 C:\PHP 로 이동)


3. PHP 폴더 내부의 php.ini-production 파일을 php.ini 이름으로 복사
- php.ini 파일에서 아래 항목들 주석 제거 및 수정
extension_dir = "./ext"
extension=php_gd2.dll 

extension=php_mysql.dll    // mysql 연동 필요시 추가

extension=php_mysqli.dll   // mysql 연동 필요시 추가


4. IIS 관리자에서 웹사이트 추가
php_2.jpg 


5. 처리기 매핑  모듈 매핑 추가
php_3.jpg 

php_4.jpg 

[모듈 매핑 추가]

요청 경로 : *.php

모듈 : FastCgiModule

실행 파일 : C:\PHP\php-cgi.exe

이름 : FastCgi


[요청 제한]

[체크] 요청이 다음에 매핑되는 경우에만 처리기 호출

[체크] 파일 또는 폴더

php_5.jpg  
 


6. IIS 재시작 후 테스트용 phpinfo.php 파일 생성 후 테스트
php_6.jpg 
php_7.jpg 



* 접근이 안될경우 확인사항

- 높은 버전의 php 에서 phpinfo 화면이 뜨지 않을 경우 php.ini 설정파일 옵션 short_open_tag = On 으로 수정

- 접근정책에 등록된 사용자가 디렉토리 접근권한이 있는지 확인해야 함 (보안 탭에서 확인)

- X64 기반의 OS에서 호환문제로 인해 FastCgi 에러(Err code : 500) 발생하게 되며, 이런 경우 vcredist_x86 패키지 설치로 해결 가능

   http://www.microsoft.com/ko-kr/download/details.aspx?id=29

vcredist_x86.exe



[출처] http://faq.hostway.co.kr/Windows_Web/3011



반응형

댓글()

포트 사용 프로세스 확인

윈도우즈/OS 일반|2015. 12. 29. 11:48
반응형


한 번에 해결되는 옵션이 있습니다.

netstat -anb



두 차례에 걸쳐 보려면 아래처럼..


C:\Users\zetawiki>netstat -ano | findstr :873
  TCP    0.0.0.0:873            0.0.0.0:0              LISTENING       328
  TCP    [::]:873               [::]:0                 LISTENING       328


C:\Users\zetawiki>tasklist | findstr 328
rsync.exe                      328 Services                   0      4,880 K

 

[출처] http://zetawiki.com/wiki/%EC%9C%88%EB%8F%84%EC%9A%B0_%ED%8F%AC%ED%8A%B8_%EC%82%AC%EC%9A%A9_%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4_%ED%99%95%EC%9D%B8


반응형

댓글()