기본 콘텐츠로 건너뛰기

Cloud Native Computing 정의

 CNCF(Cloud Native Computing Foundation)에서 다음과 같이  Cloud Native Computing를 정의하고 있다. “Cloud Native technologies empower organizations to build and run scalable applications in mordern, dynamic environments such as public, private, and hybrid clouds. Containers, service meshes, immutable infrastructure, and declarative APIs exemplify this approach.”
최근 글

NIST Cloud Computing 정의

NIST(National Institute of Standards and Technology)에 따른 Cloud Computing 정의는 다음과 같다. Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction. This cloud model is composed of five essential characteristics, three service models, and four deployment models. 클라우드 컴퓨팅은 최소한의 관리 노력으로 신속한 프로비저닝, 출시할 수 있는 구성 가능한 컴퓨팅 자원(예, 네트워크, 서버, 스토리지, 애플리케이션, 및 서비스)의 공유 풀 모델로  유비쿼터스, 편리성, 요구에 따른 네트워크 접근을 가능 하게 한다.  클라우드 모델은 5가지 필수 특징, 3가지 서비스 모델, 4가지 배포 모델로 구성된다. 5가지 특징  - On-Demand  - Broad Network Access  - Resource Pooling  - Rapid Elasticity  - Measured Service 3가지 Service Model  - SaaS(Software as a Service)  - PaaS(Platform as a Service)  - IaaS(Infrastructure as a Service) 배포 모델  - Private Cloud...

인코딩, 암호화, 해싱 차이

인코딩 인코딩은 주어진 입력을 변환하는 것을 의미한다. 예를 들어 문자열을 반대로 하는 x라는 함수가 있다면 함수 x -> y는 ABCD를 DCBA로 변환한다. 암호화 암호화는 출력을 얻기 위해 입력 값과 키를 모두 제공하는 인코딩의 특별한 유형이다. 키를 통해 누가 출력에서 입력을 얻을 수 있는지 선택할 수 있다. 암호화를 함수로 표현하는 가장 간단한 형식은 다음과 같다.  (x, k) -> y 여기에서 x는 입력이고 k는 키를 y는 암호화된 결과를 의미한다. 이러한 방식으로 키가 알려진 함수를 통해 출력에서 (y, k) ->x에서 입력을 얻을 수 있다. 이렇게 역으로 메시지를 얻는 것을 복호화라고 한다. 암호화에서 사용된 키가 복호화에 사용된 키와 동일하다면 일반적으로 대칭키라고 한다.  암호화 ((x, k1) -> y)와 복호화((y, k2) -> x)와 같이 두 개의 다른 키가 사용되는 경우 비대칭 암호화가 수행되었다고 한다. (k1, k2)를 키쌍이라고 한다. 암호화에 사용되는 k1을 공개키라고 하며 k2를 개인키라고 한다. 개인 키 소유자만 데이터를 복호화 할 수 있다.  해싱 해싱은 함수가 단방향인 점을 제외하면 인코딩의 특별한 유형이라고 할 수 있다. 즉 해시 함수의 출력 y에서 입력 x를 반환할 수 없다. 하지만 출력 y가 입력 x에 해당하지는 확인하는 방법이 있기 때문에 해싱을 인코딩 및 매칭을 위한 함수 쌍으로 볼 수 있다. 해싱이 x->y이면 일치하는 함수 (x,y) -> boolean이다.  때로 해싱 함수 (x, k) -> y 입력에 임의의 값을 사용할 수 있다. 이 값을 솔트(Salt)라고 한다. 솔트는 해싱 함수를 보다 강력하게 만들어 출력을 통해 입력을 얻기 힘들게 만든다.

Mac에서 Wireshark 설치

맥 (OS X El Capitan)에서 Wireshark를 사용하고 싶다면 CLI를 통한 간단한 방법은 brew를 통해 설치하는 것이다. 단순히 다음과 같은 명령을 실행해 주면 된다. brew install wireshark  --with-qt --with-qt는  GUI 모드를 포함하여 설치하는 것으로 GUI 모드를 원치않는다면 해당 옵션을 삭제하면 된다. 정상적으로 설치가 완료되면 CLI를 통해 tshark 명령을 실행할 수 있다. --with-qt 옵션을 주지 않았다면 thsark만을 실행할 수 있을 것이다. tshark -i eth0 [thsark 실행화면] GUI로 실행하고 싶다면 프롬프트에서 다음과 같이 실행하면 된다. wireshark-qt [wireshark-qt 실행화면] GUI를 통해 패킷을 수집하고자 한다면 Capture 버튼 옆에 인터페이스를 선택한 후 Capture 버튼을 선택하고 상단의 왼쪽에 있는 Start capturing packets라고 툴팁이 나오는 버튼을 클릭하면 패킷 수집이 시작된다. 수집 옵션을 설정하고자 한다면 Capture Filter에 옵션을 설정하면 된다. [wireshark-qt 패킷 수집화면]

Zabbix 한글 설정

Zabbix는 기본적으로 언어를 선택할 수 있도록 되어 있으며 언어 설정은 Zabbix 메뉴중 우측 상단의 Profie에서 설정가능하다. Zabbix를 설치한 후 언어 설정을 위해 Profie를 클릭해보면 다음과 같은 화면을 볼 수 있다. Language 항목에서보면 English (en_GB)라고 기본적으로 선택되어 있는 것을 볼 수 있으며 "You are not able to choose some of the languages, because locales for them are not installed on the web server"라는 붉은색 글을 볼 수 있다. Locale가 추가 안되어 있다면 추가하도록 하자. ubuntu에서 추가 방법은 다음과 같다. sudo locale-gen ko_KR.UTF-8 위 명령을 실행 후 /etc/default/locale 파을 열어 다음과 같이 수정한다. LANG=ko_KR.UTF-8 LANGUAGE="ko_KR:ko:en_US:en" ... 위와 같이 LANG, LANGUAGE를 변경하고 저장한 후 프롬프트에서  locale를 실행 후 정상적으로 ko가 추가 되었는지 확인한다. 한글이 추가되었다면 다시 Zabbix Profile로 돌아가서 Language에 Korean (ko_KR)이 추가 되었는지 확인한다. 아마도 여러분들은 Korean (ko_KR)이 추가가 됐을 것이라는 희망을 가지고 보겠지만 안타깝게도 Korean (ko_KR)은 보이지 않을 것이다. Zabbix에서 한글을 보기위해서는 아직 수정해 주어야하는 부분이 남아있다. Zabbix는 Locale이 정상적으로 설치되어 있다고 할지라도 php 코드에서 이를 보여지지 않도록 하고 있기 때문에 php 소스코드를 수정해 주어야한다. /usr/share/zabbix/include/locale.inc.php 파일을 열어 Korean이라고 되어 있는 부분을 다음과 같이 수정한다. ...

Am I VM?(imvirt)

Cloud를 운영하다보면 VM에서 특정 애플리케이션을 실행할 때 실행되는 호스트가 VM인지 아닌지에 따라 다른 루틴을 작성해야 한다. 이때 간단히 사용할 수 있는 툴이 perl 스크립트로 작성된 imvirt이다. 이름을 보면 이 글의 제목이 왜 Am I VM인지 알 수 있을 것이다. imvirt는 옵션 지정 없이 사용 가능하며 dmidecode를 통해 가상화 기술을 검출한다. 0.9.6이상의 버전에서 검출되는 가상화 기술은 다음과 같다. 계열 검출된 컨테이너 Physical 일반적인 서버이거나 검출된 컨테이너가 없는 경우 Virtual 검출되지 않은 컨테이너에서 실행되고 있는 가상 머신 HVM: <signature> 알려지지 않은 하이퍼바이저의 시그니처 VirtualBox 버추얼박스 Microsoft 식별할 수 없는 마이크로소프트 기반 가상화 Microsoft Hyper-V 마이크로소프트 Hyper-V/Virtual Server Microsoft VirtualPC 마이크로소프트 Virtual PC VMware VMware Virtual Platform VMware (Express|ESX Server | GSX Server|Workstation) VMware Virtual Platform OpenVZ OpenVZ/Virtuosso QEMU QEMU/KVM  UML 사용자 모드 리눅스 Xen Xen hypervisor Xen (PV|HVM) Xen hypervisor lguest Lguest (x86 하이퍼바이저) ARAnyM Atari Running on Any Machine LXC Linux Containers Parallels Parallels Workstation imvirt는 기본 설치 프로그래임이 아니기 때문에 별도로 설치해주어야한다. 설치방법은 ubuntu인 경우 다음과 같이 명령어를 실행하면 된다. sudo apt-get install imvirt 설치가 되었다면 단순히 imvir...

서버설정시 물리적인 포트 찾기 (ethtool 활용 팁)

네트워크 인터페이스가 10여개 이상인 서버에서 작업을 하다보면 많은 삽질이 인터페이스 찾는데서 발생한다. 모니터를 통해 서버 네트워크 인터페이스를 설정한 후 랙 뒤로 가게되면 10여개나 되는 인터페이스 중 어떤 인터페이스에 설정 했는지 알 수 없어 초보자들이 하는 삽질은 1번 인터페이스 부터 네트워크케이블을 연결한 후 다시 랙 앞으로가 명령어를 통해 해당 인터페이스가 연결 되었는지 확인 하는 것이다. for ( i=0; i<N; i++ )    if(i = 0) 네트워크 설정;    i port에 네트워크 케이블 연결    네트워크 연결 상태 검사    if (설정된 NIC가 살았는가? == alive)       작업 종료 최대 N번까지 실행되는 이 삽질은 서버가 하나라면 운동삼아 하겠지만 많은 서버를 설정해야 하는 경우 여간 귀찮은 작업이 아닐 수 없다. 이러한 삽질은 ethtool을 사용하면 줄일 수 있다. 방법은 간단하다.   네트워크 인터페이스 설정   ethtool -p eth0 time   time 미 설정시 무한 반복됨   랙뒤로 가서 반짝거리는 포트에 네트워크 케이블 연결 ethtool을 지원하지 않는 하드웨어가 있을 수 있지만 대부분 사용하는데 문제는 없을 것으로 본다.