OS

 Virtual box

 guest OS

 윈도우 10

 5.0.12

 우분투 14.04 LTS


먼저 virtual box(이하 vb라 부름)에서 우분투 14.04 LTS vm을 생성한 뒤, 설정 - 네트워크로 이동합니다.

다음에 연결됨의 속성을 브리지 어댑터로 변경하고 무작위 모드의 속성을 가상 머신에 허용으로 바꿉니다.

 

확인을 누른 후, 해당 vm 을 실행합니다.

 

아래와 같은 명령어를 쳐서 interfaces를 텍스트 편집기로 실행합니다.

1
$ sudo vi /etc/network/interfaces 
cs

 

정상적으로 열렸을 시, 아래와 같이 보입니다.

# This file describes the network interfaces available on your system

# and how to activate them. For more information, see interfaces(5).

# The loopback network interface

auto lo

iface lo inet loopback

# The primary network interface

auto eth0

iface eth0 inet dhcp

 

이 내용들을 다음과 같이 수정 및 추가해줍니다.

# This file describes the network interfaces available on your system

# and how to activate them. For more information, see interfaces(5).

# The loopback network interface

auto lo

iface lo inet loopback

# The primary network interface

auto eth0

iface eth0 inet static

address 10.101.30.124

gateway 10.101.30.1

netmask 255.255.255.0


address는 해당 vm에서 사용할 ip입니다.

gateway는 address 대역대에서 (x.x.x.1)을 gateway로 지정합니다. 

netmask는 255.255.255.0으로 설정합니다.

저장을 한 다음, 아래의 명령어를 실행시키면 다음과 같이 보입니다.

$ sudo vi /etc/resolv.conf

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)

#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN

 

여기에 nameserver를 추가시킵니다.

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)

#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN4

nameserver 164.124.101.2

 

고정 IP를 사용하는 것이 아닌 유동 IP를 사용할 때 nameserver는 보통 168.126.63.1을 적으면 사용 가능합니다.


다음 vm을 재부팅 시키면 ip가 변경된 것을 확인할 수 있습니다.


여기서 vm의 ip를 변경하고 아웃바운드가 가능하게 하려면 로컬에서 cmd를 실행시켜 잡혀있는 서브넷마스크, 게이트웨이, 동일한 대역대의 ip로 설정해야 합니다.

 

 



Download

https://coreos.com/os/docs/latest/booting-with-iso.html 경로에서 Stable 이미지를 다운로드 받아야합니다.

 Install

이미지를 로드한 후 실행하면 콘솔화면이 나옵니다. CoreOS는 따로 설치 화면이 없고 ISO 파일로 부팅한 coreos-install 명령을 사용하여 하드디스크에 설치하는 방식입니다. (VirtualBox, VMWare 에서도 테스트가능합니다.)

Step1

https://discovery.etcd.io/new?size=3 URL를 접근하여 토큰을 발급받습니다.  size는 클러스터 숫자만큼 입력하시면 됩니다. 한대로 설정하고자 하면 1을 입력하면 됩니다. 기본적으로 Cluster의 기본은 3이기때문에 아래의 샘플에는 3으로 하였습니다.

Step2

ssh-rsa 기반으로 로그인 할 수 있게 하기 위한 설정입니다. 상황에 따라 Username 과 Password방식으로 수정할 수 있습니다. 아래의 명령어로 ssh-rsa키를 생성합니다.

$ ssh-keygen -t rsa -c <사용자>
Enter file in which to save the key (/home/user/.ssh/id_rsa): [저장할 경로를 입력합니다 (입력하지 않으면 기본으로 설정됩니다)] <return>
Enter passphrase (empty for no passphrase): [SSH 키 비공개키를 입력합니다. 10~30글자 권장(입력하지 않아도 됩니다)] <Type the passphrase>
Enter same passphrase again: <Type the passphrase>
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is: 0b:fa:3c:b8:73:71:bf:58:57:eb:2a:2b:8c:2f:4e:37

Step3

CoreOS 이미지파일 부팅 후 아래의 설정대로 cloud-config.yaml 파일을 생성합니다. cloud-config 의 자세한 옵션은 공식 문서 를 참고하세요

#cloud-config

ssh_authorized_keys:
  - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDN.... #/home/user/.ssh/id_rsa.pub 파일의 내용을 입력하세요.
coreos:
  etcd2:
    # generate a new token for each unique cluster from https://discovery.etcd.io/new?size=3
    # specify the initial size of your cluster with ?size=X
    discovery: https://discovery.etcd.io/<token>
    # multi-region and multi-cloud deployments need to use $public_ipv4
    advertise-client-urls: http://<host_ip>:2379,http://<host_ip>:4001
    initial-advertise-peer-urls: http://<host_ip>:2380
    # listen on both the official ports and the legacy ports
    # legacy ports can be omitted if your application doesn't depend on them
    listen-client-urls: http://0.0.0.0:2379,http://0.0.0.0:4001
    listen-peer-urls: http://<host_ip>:2380
  units:
    - name: etcd2.service
      command: start
    - name: fleet.service
      command: start
    - name: flanneld.service
      command: start
      drop-ins:
      - name: 50-network-config.conf
        content: |
          [Service]
          ExecStartPre=/usr/bin/etcdctl set /coreos.com/network/config '{"Network":"10.1.0.0/16", "Backend": {"Type": "vxlan"}}'

Step4

위의 파일을 저장하셨다면 아래의 명령어로 실제 설치를 진행하시면 됩니다.

$ sudo coreos-install /dev/sda -C stable -c cloud-config.yaml

Step5

CoreOS를 Clustering 하시려면 위의 작업을 클러스터(Step1 의 size만큼) 할 노드만큼 반복해주세요. 

Step6

위의 작업이 끝나셨으면 재부팅해주세요.

$ sudo reboot 

참고


'CoreOS' 카테고리의 다른 글

[CoreOS]CoreOS란?  (0) 2017.01.28
[CoreOS] cloud-config 파일 유효성 검사  (0) 2017.01.28
[CoreOS] CoreOS 업데이트  (0) 2017.01.28
[CoreOS] CoreOS 설치  (0) 2015.11.14
Vagrant 사용하지 않고 CoreOS 3대 클러스터링하기 (VirtualBox)  (0) 2015.11.14
Kubernetes  (0) 2015.11.14

Mac OS  X El Caption

VirtualBox 5.0.8

core OS stable (766.5.0)


먼저 같은 세팅의 vm 3대를 설치한다. (설치법을 모르면 coreos 설치 페이지 확인)


그리고 아래와 같이 각 vm의 설정-네트워크에 들어가보면 nat로 연결이 되어있는 부분을 브리지 어댑터로 변경한다.

(윈도우의 경우 호스트 전용 어댑터도 가능)

그런 다음, ifconfig로 ip를 확인하면 10.0.2.15가 아닌 각 고유의 ip로 변경이 되어있다.

나머지 2대의 vm에도 적용한 다음, 아래의 명령어를 각 vm마다 입력한다.


etcd -name 활성화되어있는 vm 이름 -initial-advertise-peer-urls http://활성화 되어있는 vm ip:2380 

-listen-peer-urls http://활성화 되어있는 vm ip:2380 

-listen-client-urls http://활성화 되어있는vm ip:2379,http://127.0.0.1:2379 

-advertise-client-urls http://활성화 되어있는 vm ip:2379 

-initial-cluster-token etcd-cluster-1

-initial-cluster 활성화 되어있는 vm 이름=http://활성화 되어있는 vm ip:2380,다른 vm 이름1=http://다른 vm ip 주소:2380,다른 vm 이름2=http://다른 vm ip 주소2:2380 -initial-cluster-state new


이 코드를 각 머신의 ip에 맞게 입력을 한 뒤, 터미널 (윈도우의 경우 putty)로 맨 마지막에 입력한 vm에 ssh로 접근한다.

다음 $ sudo systemctl start fleet.service 로 fleetctl을 사용할 수 있도록 fleet.service를 실행한 다음,

$ sudo fleetctl list-machines로 클러스터링이 되었는지 확인한다.


아래는 성공한 결과이다.



'CoreOS' 카테고리의 다른 글

[CoreOS]CoreOS란?  (0) 2017.01.28
[CoreOS] cloud-config 파일 유효성 검사  (0) 2017.01.28
[CoreOS] CoreOS 업데이트  (0) 2017.01.28
[CoreOS] CoreOS 설치  (0) 2015.11.14
Vagrant 사용하지 않고 CoreOS 3대 클러스터링하기 (VirtualBox)  (0) 2015.11.14
Kubernetes  (0) 2015.11.14

function sortNumber(a,b){//콜백함수

    // 위의 예제와 비교해서 a와 b의 순서를 바꾸면 정렬순서가 반대가 된다.

    return b-a;

}

var numbers = [20, 10, 9,8,7,6,5,4,3,2,1];

alert(numbers.sort(sortNumber)); // array, [20,10,9,8,7,6,5,4,3,2,1]



numbers는 객체이다. (배열객체)

sort(sortNumber()); -->sortNumber가 콜백함수이다. 


이것이 콜백이다.(콜백이 가능한 이유: 자바스크립트에서는 함수가 값이기 때문이다.)

(여기서 sort는 함수가 아닌 메소드라고 한다.), 배열이나 sort는 자바스크립가 기본적으로 가지고 있는 기능이기에 내장객체, 내장메소드, 빌트인 객체, 빌트인 메소드라 한다. 

우리가 만드는 객체, 메소드, 함수는 사용자 정의 객체, 사용자 정의 함수라 한다.


2. 비동기 처리

cf.) 글작성->이메일 발송-> 작성완료: 순차적작성을 동기식 처리라고 한다. 

글작성하고 이메일 발송 부분은 예약하고 작성완료(to do)를 하면 순식간에 일이 처리된다. 내부적으로는 예약 부분을 백그라운드에서 비동기적으로 처리

웹페이지에 표시되지않은 데이터를 화면에 표시할 수 있는 이유는 내부적으로 화면에 표시된 정보를 서버에 요청해서 화면에 표시한 것이다.(웹페이지 리로드 없이 작업한 것임)

클릭시 웹페이지가 변경되지 않고 서버와 웹브라우저가 조용히 통신하는 기법을 Ajax라고 한다.

콜백은 비동기처리에서도 유용하게 사용된다. 시간이 오래걸리는 작업이 있을 때 이 작업이 완료된 후에 처리해야 할 일을 콜백으로 지정하면 해당 작업이 끝났을 때 미리 등록한 작업을 실행하도록 할 수 있다. 

다음 코드는 일반적인 환경에서는 작동하지 않고 서버 환경에서만 동작한다. 동영상을 참고한다.




자바스크립트 콜백

http://yubylab.tistory.com/49

스플렁크 개요

Splunk는 모든 머신 데이터를 실시간으로 collecting하고 Indexing하고 Reporting하는 End-to-End Solution. 모든 머신 데이터를 제한 없이 처리 할 수 있습니다. 사용자가 원하는 데이터를 즉시 분석할수 있으며, 원하는 Reporter, Dashboard를 추가적인 개발없이 구성 할 수 있습니다.

또한 통계적 명령들을 조합하여 여러가지 Query문으로 Search가 가능하며 Query문의 자동완성 기능까지 갖추고 있어 사용하기 매우 편리합니다. 하지만 상당히 높은 가격대가 높다는 단점이 있습니다.


특징

머신 데이터(machine data)를 강력한 통찰력으로 변환

 모든 소스의 머신 데이터(machine data)를 실시간으로 수집하고 인덱싱합니다. 이를 통해 데이터를 검색, 모니터링, 분석 및 가상화하여 새로운 통찰력과 인텔리전스를 얻을 수 있습니다.

세부적인 가시성, 포렌식 및 문제 해결을 위한 정보 인덱싱

사용자와 사용자의 팀이 검색 결과를 공유

컴플라이언스 대응을 입증하기 위한 임시 보고서 생성

보안 사고, 서비스 레벨 및 기타 주요한 성능 메트릭 모니터링 위한 대화식 대시보드 생성

사용자 트랜잭션, 고객 행동, 시스템 작업, 보안 위협 및 부정행위 등 실시간 분석


데이터 인덱싱

 로그, 클릭스트림 데이터, 구성, 센서 데이터, 트랩 및 경고, 변경 이벤트, 진단 명령 결과, API 및 메시지 대기열의 데이터, 사용자 지정 애플리케이션의 멀티라인 로그에 이르기까지 형식이나 위치에 관계없이 모든 머신 데이터(machine data)를 인덱싱합니다. 사전 정의된 스키마 없이 모든 소스, 형식 및 위치에서 데이터를 인덱싱할 수 있습니다. 그 인덱싱 결과를 문제 해결, 보안 사고 조사, 네트워크 모니터링, 컴플라이언스 보고, 비즈니스 분석 및 기타 중요한 용도로 사용할 수 있습니다.


검색 및 조사

 동일한 인터페이스를 사용하여 실시간 및 이력 데이터를 검색합니다. 유사한 검색 명령어를 사용하여 검색을 정의하거나 제한 또는 확장합니다. 또한 통계 보고 명령어를 사용하고, 트랜잭션 개수 업데이트, 매트릭 계산, 롤링 시간 윈도우 내에서 특정 조건을 찾을 수 있습니다. 검색 길잡이는 자동 완 성 및 상황별 도움말을 제공하므로 SPLTM(Search Processing Language)의 강력한 기능을 모두 활용할 수 있습니다.


검색 결과 활용

 실시간으로 검색 결과를 활용할 수 있습니다. 결과의 타임라인을 줌인하거나 줌아웃하여 동향을 신속히 포착할 수 있습니다. 클릭만으로 결과를 즉시 볼 수 있고 불필요한 항목을 제거하여 방대한 데이터에서 필요한 정보를 얻을 수 있습니다. 예를 들면, 장애 접수 티켓에 대한 문제 해결, 보안 경고 발생과 관련된 조사 또는 단순한 데이터 검색 등 모든 상황에 대해 분 단위의 답변을 얻을 수 있습니다.


의미있는 데이터 구현

 Splunk Enterprise는 자동으로 머신 데이터(machine data)에서 정보를 추출합니다. 필드 및 데이터 소스를 식별하고 이름 및 태그를 지정하여 더 많은 정보와 의미를 추가할 수 있습니다. 외부 자산 관리 데이터베이스 및 구성 관리 시스템과 사용자 디렉토리에서 얻은 정보를 추가할 수도 있습니다. 기본 머신 데이터(machine data)에서 관계를 설명하는 데이터 모델을 쉽게 정의하여 사용자가 검색 언어를 배우지 않고도 강력한 보고서를 작성할 수 있는 피벗 인터페이스를 제공합니다.


이벤트의 상관관계 추적

 Splunk Enterprise 검색은 관련 없어 보이는 이벤트나 작업 간의 관계를 쉽게 설정하거나 찾을 수 있습니다. 시간, 외부 데이터, 위치, 하위 검색 또는 조인을 기반으로 머신 데이터(machine data)를 상관하고 관련 이벤트를 트랜잭션 또는 세션으로 식별합니다. 동향과 특성을 보고서 및 대시보드로 시각화합니다.


모니터링 및 경고

 검색을 실시간 경고로 전환함으로써 이메일 또는 RSS를 통해 자동으로 통보하거나 교정 작업을 수행하고, SNMP 트랩을 시스템 관리 콘솔로 보내거나 서비스 데스크에 자동으로 티켓을 생성할 수 있습니다. 경고는 다양한 임계값, 동향 기반 조건 및 기타 복합 검색을 기준으로 발생시킬 수 있습니다. 경고 시 추가 정보를 확보하여 더 신속하게 근본 원인을 분석하고 문제를 해결할 수 있습니다.


보고 및 분석

조직의 모든 사용자가 신속하게 데이터를 분석할 수 있습니다. 보고서, 고급 그래프 및 차트를 작성하여 중요한 동향을 파악하고 고급 시각화를 생성해 주므로 이를 통해 빠른 통찰력을 제공받을 수 있습니다.




새로운 예측 시각화 : 최고점과 최저점을 예측하여 시스템 자원을 계획하거나 부하량 예측 가능

피벗 인터페이스 : 사용자가 검색 언어를 배우지 않고서도 머신 데이터(machine data) 조작 및 상호작용을 통해 풍부한 정보가 있는 강력한 보고서 작성

대시보드 통합 및 PDF 파일로 공유




가격

스플렁크 라이선스를  한번구입하면 추가비용 들지 않습니다. (유저, 검색, 변경, 리포트, 대시보드 의 양에 상관 X)



                                                                                                                   


ELK 소개

ELK는 Elastic search, Log stash, Kibana의 약자입니다. 각각의 소개는 다음 링크에서 자세히 설명하고 있습니다.

     -  Elastic search

     -  Log stash

     -  Kibana


ELK는 다음과 같은 구조로 동작하고 있습니다.






차이점

Splunk와 ELK Stack은 End-to-End Solution이라는 면에서는 비슷할지 모르나, Splunk보다 기능적으로 부족합니다.

몇가지 예를 들자면 다음과 같다.

1. Splunk는 Query문의 자동완성 기능이 매우 잘되어있으나, Kibana는 이전에 사용했던 검색어에 대해서만 Query문의 자동완성을 지원 합니다.

2. Splunk는 한개의 그래프에 한개의 Query 결과가 붙는 형태인 반면, Kibana는 한개의 Dashboard에 한개의 Query가 붙는 형태로 이를 공유하여 사용하기 때문에 하나의 Dashboard가 다양한 데이터를 가지고 표현할 수가 없다.

'LogSystem' 카테고리의 다른 글

Logstash 설치 및 사용법  (0) 2016.07.14
Elasticsearch 설치 및 사용법  (0) 2016.07.14
ELK와 스플렁크  (0) 2015.11.14
루씬(Lucene)이란?  (0) 2015.11.14
Full text index란?  (0) 2015.11.14
노드 생성, 동작 원리 및 shard란?  (0) 2015.11.14

1) 소개

루씬(Lucene)은 자바로 개발된 오픈소스 정보검색(IR, Information Retrieval) 라이브러리입니다. 루씬은 강력한 기능을 포함하고 간단해서 많은 IT업계에서 사용하고 있습니다.

루씬은 독립된 프로그램이 아닌 소프트웨어 라이브러리이기 때문에 루씬을 설치 후, 바로 검색서비스를 실행할 수 있는 것이 아닌, 사용자가 루씬 라이브러리를 사용해 검색서비스, 어플리케이션을 구현해야 합니다.

루씬을 사용할 때, 검색에 대한 전문적인 지식을 반드시 알 필요가 없고, 꼭 필요한 몇 가지 클래스들의 사용법만 익히면 색인과 검색 기능을 직접 추가할 수 있습니다.


2) Indexing과 검색이 적용 가능한 사례

이메일 검색: 저장된 메시지를 검색할 수 있고 새로 도착한 메시지를 색인에 추가할 수 있는 이메일 어플리케이션

온라인 문서 검색 : 온라인 문서 또는 저장된 출판물을 검색할 수 있는 CD기반이나 웹 기반 또는 어플리케이션에 포함된 문서 판독기

웹 페이지 검색 : 사용자가 방문한 모든 웹 페이지를 색인화하기 위해 개인 검색 엔진을 만들 수 있는 웹 브라우저 또는 프록시 서버

내용 검색 : 저장된 문서에서 특정 내용을 검색할 수 있는 애플리케이션

버전 관리 및 컨텐트 관리 : 문서나 문서 버전을 색인화해서 쉽게 검색할 수 있는 문서 관리 시스템

뉴스 및 유선(wire) 서비스 : 뉴스가 도착했을 때 기사를 색인할 수 있는 뉴스 서버나 릴레이 서버

> 각각에 대한 전용 라이브러리가 존재하는 것이 아닌, 루씬을 사용해 개발할 수 있는 영역입니다.


3) 루씬의 기능

 색인을 저장할 수 있는 곳

RAMDirectory: 컴퓨터의 메인 메모리를 색인 장소로 사용

FSDirectory: 디스크의 파일 시스템에 색인을 저장 (가장 많이 사용)

JDBCDirectory: DB를 색인 저장소로 사용하는 방법. 일반적으로 지원하지는 않지만 별도의 루씬 샌드박스라는 것을 통해 지원


 색인 기능 지원

 검색 기능 지원

 다양한 나라의 Full Text 분석기 지원 (한글 x)

 Hadoop을 분산 파일 시스템으로 사용할 수 있음

4) 해석(parse)의 필요성

실전에서는 단순한 문자열 색인보다 다양한 문서를 indexing하고 검색하는 작업이 빈번

XML, PDF, HTML, MS WORD와 같이 다양한 문서들을 색인화 하기 위해 각각의 문서를 루씬의 Analyzer가 이해할 수 있도록 해석(parse)해서 텍스트로 추출해 내는 과정이 필요






5) 결론

Full Text를 검색하는데 효율적

Full Text(Contents)와 text를 단어로 쪼개는 방법(Analyzer)을 제시하면 알아서 index를 구성해주고 빠른 검색 결과를 얻을 수 있다.

'LogSystem' 카테고리의 다른 글

Elasticsearch 설치 및 사용법  (0) 2016.07.14
ELK와 스플렁크  (0) 2015.11.14
루씬(Lucene)이란?  (0) 2015.11.14
Full text index란?  (0) 2015.11.14
노드 생성, 동작 원리 및 shard란?  (0) 2015.11.14
Elastic search란?  (0) 2015.11.14

+ Random Posts