분류없음2018.03.20 05:47

HAProxy  설치하기

 

이번 포스팅은 HAProxy을 설치에 대해서 알아봅니다.

설치 환경은 Cent OS 7.3이며, HAProxy는 Stable 최신 버전인 1.8.4 입니다.

HAProxy를 설치하는 방법은 Yum Repo를 통한 설치와 직접 최신 소스를 이용한 설치 방법으로 가능합니다.

 

HAProxy 설치 : yum

yum install haproxy

yum을 이용하여 설치하는 경우에는 최신 버전이 적용되지 않음.

현재(2018년 3월 20일)기준 Yum Repo의 haproxy는 1.5.18 제공.

yum repo version 확인

[root@zigi-cent ~]# yum info haproxy
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * epel: ftp.riken.jp
Available Packages
Name        : haproxy
Arch        : x86_64
Version     : 1.5.18
Release     : 6.el7
Size        : 834 k
Repo        : base/7/x86_64

 

최신 버전의 HAProxy를 사용하고자 할 때에는  yum을 이용하지 않고 직접 최신 소스를 다운받아서 컴파일을 해서 설치 필요

이 경우에는 직접 컴파일을 통해서 설치하기 위한 필수 패키지가 사전에 설치되어 있어야 함.

사전 패키지 설치

yum install gcc pcre-static pre-devel

 

HAProxy 사이트에서 현재 최신 Stable 버전이 1.8.4를 다운로드

HAProxy 파일 받기

[root@zigi-cent ~]# wget https://www.haproxy.org/download/1.8/src/haproxy-1.8.4.tar.gz
--2018-03-19 20:05:17--  https://www.haproxy.org/download/1.8/src/haproxy-1.8.4.tar.gz
Resolving www.haproxy.org (www.haproxy.org)... 51.15.8.218
Connecting to www.haproxy.org (www.haproxy.org)|51.15.8.218|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2049789 (2.0M) [application/x-tar]
Saving to: ‘haproxy-1.8.4.tar.gz’

100%[===========================================================================>] 2,049,789   1.03MB/s   in 1.9s

2018-03-19 20:05:21 (1.03 MB/s) - ‘haproxy-1.8.4.tar.gz’ saved [2049789/2049789]

 

다운로드 받은 haproxy 파일의 압축 해제

HAProxy 압축 풀기

tar xzvf haproxy.tar.gz

 

압축을 풀고 HAProxy를 수동으로 진행

HAProxy 설치

[root@zigi-cent haproxy-1.8.4]# make TARGET=linux2628
gcc -Iinclude -Iebtree -Wall  -O2 -g -fno-strict-aliasing -Wdeclaration-after-statement -fwrapv    -Wno-unused-label       -DCONFIG_HAP_LINUX_SPLICE -DTPROXY -DCONFIG_HAP_LINUX_TPROXY -DCONFIG_HAP_CRYPT -DENABLE_POLL -DENABLE_EPOLL -DUSE_CPU_AFFINITY -DASSUME_SPLICE_WORKS -DUSE_ACCEPT4 -DNETFILTER -DUSE_THREAD -DUSE_SYSCALL_FUTEX  -DCONFIG_HAPROXY_VERSION=\"1.8.4-1deb90d\" -DCONFIG_HAPROXY_DATE=\"2018/02/08\" -c -o src/ev_poll.o src/ev_poll.c
gcc -Iinclude -Iebtree -Wall  -O2 -g -fno-strict-aliasing -Wdeclaration-after-statement -fwrapv    -Wno-unused-label       -DCONFIG_HAP_LINUX_SPLICE -DTPROXY -DCONFIG_HAP_LINUX_TPROXY -DCONFIG_HAP_CRYPT -DENABLE_POLL -DENABLE_EPOLL -DUSE_CPU_AFFINITY -DASSUME_SPLICE_WORKS -DUSE_ACCEPT4 -DNETFILTER -DUSE_THREAD -DUSE_SYSCALL_FUTEX  -DCONFIG_HAPROXY_VERSION=\"1.8.4-1deb90d\" -DCONFIG_HAPROXY_DATE=\"2018/02/08\" -c -o src/ev_epoll.o src/ev_epoll.c
..후략..

 

[root@zigi-cent haproxy-1.8.4]# make install
install -d "/usr/local/sbin"
install haproxy  "/usr/local/sbin"
install -d "/usr/local/share/man"/man1
install -m 644 doc/haproxy.1 "/usr/local/share/man"/man1
install -d "/usr/local/doc/haproxy"
for x in configuration management architecture peers-v2.0 cookie-options lua WURFL-device-detection proxy-protocol linux-syn-cookies network-namespaces DeviceAtlas-device-detection 51Degrees-device-detection netscaler-client-ip-insertion-protocol peers close-options SPOE intro; do \
        install -m 644 doc/$x.txt "/usr/local/doc/haproxy" ; \
done

Target의 경우에는 설치하고자 하는 운영체제에 따라서 다르지만, 일반적으로 2628 옵션을 사용

2628 linux 커널 2.6.28 혹은 3.x, 그 이상의 버전에서 사용하는 옵션.

설치가 끝난 후, 설치된 haproxy 버전을 다음과 같이 확인하며 최신 1.8.4이 설치된 것을 확인 가능

HAProxy 버전 확인

[root@zigi-cent haproxy-1.8.4]# haproxy -v
HA-Proxy version 1.8.4-1deb90d 2018/02/08
Copyright 2000-2018 Willy Tarreau <willy@haproxy.org>

 

컴파일해서 설치한 경우에는 추가적으로 필요한 디렉토리와 통계 파일을 생성하는 다음의 작업 필요

필요 디렉토리 및 파일 생성

[root@zigi-cent haproxy-1.8.4]# mkdir -p /etc/haproxy
[root@zigi-cent haproxy-1.8.4]# mkdir -p /var/lib/haproxy
[root@zigi-cent haproxy-1.8.4]# touch /var/lib/haproxy/stats

HAProxy 명령 수행을 위한 심볼릭 링크 생성

필요 디렉토리 및 파일 생성

[root@zigi-cent sbin]# ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy

HAProxy를 서비스로 등록

서비스 등록(권한 변경 포함)

[root@zigi-cent haproxy-1.8.4]# cp ~/haproxy-1.8.4/examples/haproxy.init /etc/init.d/haproxy
[root@zigi-cent haproxy-1.8.4]# chmod 755 /etc/init.d/haproxy
[root@zigi-cent haproxy-1.8.4]# systemctl daemon-reload

HAProxy 서비스 시작

HAProxy 서비스 기동

[root@zigi-cent sbin]# systemctl start haproxy

 

[root@zigi-cent sbin]# systemctl status haproxy.service
● haproxy.service - SYSV: HA-Proxy is a TCP/HTTP reverse proxy which is particularly suited for high availability environments.
   Loaded: loaded (/etc/rc.d/init.d/haproxy; bad; vendor preset: disabled)
   Active: active (running) since Mon 2018-03-19 20:42:49 UTC; 3min 38s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 8211 ExecStart=/etc/rc.d/init.d/haproxy start (code=exited, status=0/SUCCESS)
 Main PID: 8216 (haproxy)
   CGroup: /system.slice/haproxy.service
           └─8216 /usr/sbin/haproxy -D -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid

Mar 19 20:42:49 zigi-cent systemd[1]: Starting SYSV: HA-Proxy is a TCP/HTTP reverse proxy which is particularly suited for high availability environments....
Mar 19 20:42:49 zigi-cent haproxy[8215]: Proxy stats started.
Mar 19 20:42:49 zigi-cent haproxy[8211]: Starting haproxy: [WARNING] 077/204249 (8215) : parsing [/etc/haproxy/haproxy.cfg:28] : the 'clitimeout' direc... versions.
Mar 19 20:42:49 zigi-cent haproxy[8211]: [WARNING] 077/204249 (8215) : parsing [/etc/haproxy/haproxy.cfg:29] : the 'srvtimeout' directive is now deprec... versions.
Mar 19 20:42:49 zigi-cent haproxy[8211]: [WARNING] 077/204249 (8215) : parsing [/etc/haproxy/haproxy.cfg:30] : the 'contimeout' directive is now deprec... versions.
Mar 19 20:42:49 zigi-cent haproxy[8211]: [  OK  ]
Mar 19 20:42:49 zigi-cent systemd[1]: Started SYSV: HA-Proxy is a TCP/HTTP reverse proxy which is particularly suited for high availability environments..
Hint: Some lines were ellipsized, use -l to show in full.

 

Posted by 네떡지기
DevOps/Automation2017.02.16 19:38

이번 포스팅은 예전에 정리했던 Ansible 관련한 내용 중에 Install이 빠져 있어서 현재 기준으로 간단하게 포스팅을 합니다.

아마 Ansible을 이용한 다른 포스팅을 시작하게 될 듯 싶어서, 다시 설치를 하는 김에  기존에 설치 내용이 포스팅에 없어서, 

정리를 해봅니다.

  - 기존 포스팅은 ZIGISPACE.NET에서 ansible로 검색하시면 됩니다! ^^


 

 

* 설치환경 : CentOS 7

 

1. Extra Packages for Enterprise Linux 

 Fedora를 쓰는 경우에는 직접 Ansible이 설치가 가능하지만, Fedora 계열의 Redhat이나 CentOS 등을 사용하는 경우에는

먼저 epel-release RPM을 설치.

   * epel = Extra Packages for Enterprise Linux

 rpm -iUvh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-9.noarch.rpm 

 

2. Yum을 이용해서 Ansible을 설치.

 sudo yum install ansible

 

3. Ansible 설치 확인

 ansible --version

 

○ 각 Distro에 따른 Ansible 설치는 아래의 홈페이지를 확인하시면 됩니다.

  - Ansible 설치 : http://docs.ansible.com/ansible/intro_installation.html#id13

 

 

Posted by 네떡지기
DevOps/Automation2016.08.09 17:01

Today key : Puppet, 퍼펫, manifest, autumation, 자동화, ruby, resource, title, attribute, value, 명세서

 

지난 번에 이은, Puppet의 2번째 포스팅입니다.

사실 이번 포스팅은 예전에 정리했던 Automation for Networker 주제의 포스팅을 다시 재가공하였습니다.

기존에 포스팅한 것보다는 조금 내용이 변경 혹은 추가 되었습니다. 

앞으로 몇 번에 걸쳐서 추가 포스팅이 되지 않을까? 싶습니다.

단지, 포스팅 전에 테스트와 무작정 정리한 걸 다시 포스팅 용으로 작성 하는 데 시간이 걸려서.

언제 올라올지는 모르겠지만.. 멀지 않은 시일 내에 또 올리도록 하겠습니다.

그리고 혹시 잘못되거나 수정해야 할 부분이 있으면 덧글 부탁드립니다! ^^

 


 

Puppet Part 2 .

 

 

Manifest

    - Puppet languatge 파일로, '.pp' 확장자를 가진다.

    - Target 시스템에 적용되어야 하는 Resource Value 지정하는 일종의 명세서 같은 역할.

    - UTF8 인코딩 사용

    

    

Manifest 기본 구성 형식

  

Node 'Node_Name'

Resource { 'TITLE':

   ATTRIBUTE => VALUE,

   ...

}

 

Node

   - 다수의 Puppet Agent 적용 시에, 각 Node를 구분하기 위한 Keyword이며 이는 Device의 Hostname을 Node 뒤에 써주면 해당

   - Hostname에을 가진 Device에 대해서만 해당 Attribute가 적용

 

Resource

   - Puppet이 관리하는 Configuration의 구성요소, File, Service, Package, User등의 Type과 Attribute를 갖는다.

   - Defined Type Custom resource type 있음.

    

 

TITLE

  - 하나의 Resource Type에서 유일한 이름으로 사용 되어야 .

  - 중복된 TITLE 사용 시에는 Manifest 컴파일 시의 에러 발생

  - 서로 다른 Resource 간의 TITLE 중복은 가능.  (Ex. package 'ntp', service 'ntp'

  - Resource Type 따라서 Target System 특정 Resouce 뜻하기도 하며(이러한 경우의 'namevar' 속성이라고 ),

    단순히, '이름' 뜻하기도 .

  - namevar 경우에는 하나의 resource type 하나의 값을 뜻하는 경우도 있지만, 어떤 경우의 namevar 해당 이름만으로는

    명확하게 없는 경우가 있다. 예를 들어서, service mysql Target System 내에 설치된 mysql 서비스로 명확하지만,

    package mysql mysql 받아오는 방법에 따라서 다를 있다. (ex. Yum, gem .. )

  Ex) File  : File의 절대 경로/파일명

        Package / Service : 실제 패키지나 서비스

 

Attribute

    - 해당 Resource의 설정되어야 하는 속성

    - manifest에서 target system 적용하고자 하는 속성 값을 선언
    -
소문자로 쓰여지고, " " 사용하지 않음.

 

VALUE

    - 특정 Resource의 Attribute에 적용되는 내용, 상태 등을  나타내는 값.

 

 

지정 가능한 Resource Types

 

 

 

 

Resource 

 

File Resource

  path : 파일에 대한 경로 지정. 만약 속성을 선언하지 않으면 default Title path 값으로 갖게 .

  ensure : 지정된 파일의 생성 , 어떤 종류인지 지정. (present, absent, file, directory, link)

  contents : 실제 파일의 내용. 속성은 source  / target 속성과 함께 사용할 없음.

  source : 복사할 파일의 Source 지정. 속성은 contents / target 속성과 함께 없음.

                   puppet, file, http 지정 가능.  Ex) 'puppet:///modules/nfs/conf'

  target : link 생성 , 사용. Symlinks type 지원. (link 생성 시의 원본 경로)

                 contents, source 속성과 함께 사용 없음.

 

file { '/temp/blog':

    content => 'http://zigispace.net',

}

 

file { '/etc/inetd.conf':

  ensure => '/etc/inet/inetd.conf',

}

 

file { '/etc/inetd.conf':

  ensure => link,

  target => '/etc/inet/inetd.conf',

}

 

 

package Resource

  provider: 동일한 패키지가 다양한 Source에서 관리되는 경우에 받아올 곳을 지정.

                     apt, dpkg, gem, rpm, pip, yum windows, zypper

 name : 패키지 . 만약 속성을 선언하지 않으면 default Title 패키지 명이 .

   ensure : 패키지의 상태. (Default : installed) . 특정 버전 지정 가능

                   present(installed), absent, purged, held, latest

  install_options  : 설치 시의 추가적인 옵션 지정. 옵션은 package-specific .

  source : 패키지를 가져오게 위치. Provider에서 자동으로 패키지를 다운 받을 없는 경우에 사용.

                  예를 들어서, yum이나 apt provider 지정할 경우에는 속성은 무시.

 

 

package { 'nginxrpm':

   ensure => installed,

   provider => 'rpm',

   source => 'http://nginx.org/packages/centos/7/noarch/RPMS/nginx-releas-centos-7-0.el7.ngx.noarch.rpm',

}

 

package { 'nginx':

   ensure => installed,

   require => Package['nginxrpm'],

 }

 

package { 'mysql':

  ensure          => installed,

  source          => 'N:/packages/mysql-5.5.16-winx64.msi',

  install_options => [ '/S', { 'INSTALLDIR' => 'C:\mysql-5.5' } ],

}

 

 

 

service Resource

  name : service . 만약 속성을 선언하지 않으면 default Title service명이 .

  ensure :  servicer running 상태인지 아닌지 지정.

                    running(true), stopped(false)

  enable : 시스템이 boot 시에 service 활성화 것인지 지정.

                   true, false, manual, mask

  path :  init scripts 대한 경로

 

 

 

service { 'httpd':

  ensure => running,

  enable => true,

}

service { 'sshd':

  ensure    => running,

  enable    => true,

  subscribe => File['/etc/ssh/sshd_config'],

}

service { 'ntp':
  name      => ntpd

  ensure    => running,
  enable    => true,
}

 

 

 

 

 

Posted by 네떡지기
DevOps/Automation2016.08.04 22:02

Today key : Puppet, 퍼펫, manifest, autumation, 자동화, 설치, install, master, agent 

 

이번 포스팅은 Puppet에 대한 포스팅입니다.

약 2년여전에 관련 Automation for Networker라는 주제로 포스팅을 할 때 ansible과 함께 잠깐 정리했던 내용을

다시 정리해보려고 합니다.  아무래도 제 포스팅이 대체로 제가 다시 보기 위해서 정리하면서 공유하는 게 목적이오니~

보시는 분들은 참고하시면 되겠습니다 ^^

그리고 혹시 잘못되거나 수정해야 할 부분이 있으면 덧글 부탁드립니다! ^^

 


 

Puppet를 사용하기 위한 요구사항

 

◇ 하드웨어

    · 최소 Puppet master server : 2CPU Core, 1GB RAM
    · 약 1,000 node 관리를 위해서 2-4 CPU Core, 최소 4 GB RAM.

 

◇ 지원 OS

    · Redhat Enterprise Linux 7,6,5

    · Debian 8 “Jessie”, Debian 7 “Wheezy”

    · Ubuntu 16.04 LTS “Xenial Xerus”, 15.10 “Wily Werewolf”, 14.04 LTS “Trusty Tahr” , 12.04 LTS “Precise Pangolin”

    · Fedora 23, 22

    · Windows Server 2012 R2, 2015, 2008 R2, 2012, 2008

    · Windows Vista, 7, 8, 8.1, 10

    · OS X 10.11 El Capitan, 10.10 Yosemite, 10.9 Mavericks

    · *SUSE Linux Enterprise Server, version 11 and higher

    · *Gentoo Linux

    · *Mandriva Corporate Server 4

    · *Arch Linux

    · *Oracle Solaris, version 10 and higher (Puppet performs limited automated testing on Solaris 11)

    · *AIX, version 5.3 and higher

    · *FreeBSD 4.7 and later

    · *OpenBSD 4.1 and later

    · *HP-UX

 

※ *표기는 Puppet Open-source 버전에서는 미지원하고, Puppet-Enterprise에서 지원.

 

 

Master와 Agent에 따른 지원 플랫폼 (PE 기준)

 

 

 

 

 

 

◇ 네트워크 요구사항

    · Firewall

       - Master Server는 8140 Service Port가 오픈되어야 함. (in-bound)

    · Name resolution

       - 모든 노드는 유일한 Hostname을 가지고 있어야 함.

       - 정방향, 역방향에 대한 DNS 모두 설정 필요.

           * DNS 미 사용시에는 Node의 Hosts 파일에 해당 내용이 포함되어 있어야 함.

 

◇ 기타 필요 패키지

    · Ruby 2.1.x, 2.0.x, 1.9.3

    · Facter 2.4.3 이상, Hiera 2.0.0 이상, json gem, rgen gem 0.6.6 이상

    · msgpack gem (Optional)

 

 


 

Puppet 설치

 

◇ 설치환경 및 패키지 (TEST 환경)

    · CentOS 7.2 (Master / Agent)

    · Puppet 4.5   

    · Hosts에 Node 정보 등록 (DNS 미사용)

   

 ◇ Package 레포지토리 설치 

    · rpm -Uvh https://yum.puppetlabs.com/puppetlabs-release-pc1-el-7.noarch.rpm

       - 각 Linux ~~ 및 버전별로 다름.

       - https://docs.puppet.com/puppet/latest/reference/puppet_collections.html

 


 

◇ Puppet package 설치 

    · yum install puppetserver

        - puppetserver 설치 시, dependency 때문에 puppet-agent도 함께 설치

        - 본 테스트 시에는 Master Node와 Agent Node의 설치는 동일하게 진행하였음. (여기까지 진행 후, VM 복제)

 

 

◇ Master와 Agent Config 설정

    · Hostname / Domain

        - Master : puppet

        - Agent : agent01

        - Domain : puppet.local

    · puppet.conf 설정

        - Master : [master] 섹션에 certname 추가

           [master]

           certname = puppet.puppet.local

        - Agent : [agent] 섹션에 certname 추가

           [agent]

           certname = agent01.puppet.local

    · DNS 혹은 hosts 파일에 master와 agent01 정보 추가 

    ·

 

 ◇  Puppet Master 노드 구동 

    ·  #puppet master --no-daemonzide -d -v

 

 

 

 

 ◇ Puppet Agent 노드 구동 

    ·  #Puppet agent --server master-fqdn --no-daemonize --verbose

 

 

 ◇ Puppet  인증 확인 

    · Master와 Agent 간의 통신을 위해서 인증 작업을 거쳐야 함.

    · Agent 등록 후(Agent가 Master에 접속 후), 현재 인증된 전체 리스트를 확인하기 위해서

      # puppet cert --all and --list 

      명령으로 확인을 하면, 아래와 같이 표기

      puppet.puppet.local (Master)에 대한 정보와 agent1.puppet.local(agent) 정보가 확인되는 데,

      아직 agent가 등록만 되고, 인증이 되지 않았기 때문에 Node 제일 앞에 '+' 표기가 agent1에는 되어 있지 않음 

 

 

 ◇ Puppet 인증 및 확인 

    · Master에서 agent1 Node 인증

      # puppet cert --sign agent1.puppet.local

    · 인증 후, 다시 인증된 리스트를 확인하면, agent1 node가 인증된 것을 확인 할 수 있음. (앞에 '+' 표기)

 

 

 ◇ Puppet Agent 노드 구동 

    · Agent 노드를 다시 실행해보면, 인증받은 인증서로 master와 통신을 성공하고, client가 동작하면서 catalog를 적용

 

 

 


 

Puppet Manifest 확인

◇ 기본 Manifest 테스트

    · /etc/puppetlabs/code/environments/production/manifest 디렉토리에 아래와 같은 manifests를 작성하고,

       agent를 재기동해보면, manifests가 agent1에 적용된 것을 확인할 수 있음.

      

node 'agent1' {

     file { '/zigi/osversion':

       content => $osname,

    }

 }

 

 

    ·  기타 manifest 적용하는 부분에 대한 내용은 이후 포스팅에서 다룰 예정이며,

        아래의 기존 포스팅에서도 일부 확인 가능합니다.

 

 

 

 

※ 기존 포스팅 확인 : http://zigispace.net/791

                            http://zigispace.net/789

 

 

Posted by 네떡지기
분류없음2015.11.03 01:38

Photon, VMware, Integrated, Container, install, git, iso, platform, os, 컨테이너, 포톤, vm웨어, Docker, rkt : Today Key

 

VMware의 Container 전략(?), 지원 방향(?)인 Photon에 대한 2번째 포스팅입니다.

지난 번에 설치해 본 Photon OS에 대해서 간략히 알아보고,

실제 Container 지원에 대한 내용인  vSphere Integrated Containers & Vmware Phton Platform에 대해서 각각 알아봅니다.

Photon OS에 대해서만 현재 TPv2로 나오고, 그 이외는 아직 출시가 되지 않았기 때문에 정리된 내용이 일부 실제 내용과

다를 수도 있지 않을까? 싶습니다.

혹시 수정해야 되는 내용이 있다면 알려주시면 감사하겠습니다.

 


 

 

 

 

Photon OS 란?
▪ vSphere에 최적화된 Linux Container host runtime
▪ 확장 가능하며, 매우 가벼우며 대부분의 Container 포맷을 지원
- Docker, Rocket(Core OS), Garden(Pivotal)
▪ 현재 OpenSource로 Photon v1.0 Tech Preview 2로 공개됨.

 

 

 

 


VMware의 Photon/Cloud Native App 관련 진행 일정
4월 : Cloud-Native Apps을 위한 새로운 오픈 소스 프로젝트를 Announce
           - Photon OS : Container에 최적화된 Linux distro.
           - Lightwave : Container와 CAN을 위한 인증 및 인증서 관리 시스템
5월 : Lightwave source를 Github를 통해서 release
6월 : AppCatalyst 발표. : CAN를 개발을 가속할 수 있는 fee Desktop hypervisor.
         Project bonneville  : vSphere에 Container가 통합될 수 있는 혁신적인 방안
         Open Container Initiative Founding members로 가입
 7월 : Cloud Native computing Foundation에 Founding members로 가입
 8월 : AppCatalyst와 Photon OS의 기술 Preview 2 release.
*dirstro : set of software components, often open source

 

 

Photon OS 설치를 위한 요구사항
•VMware vSphere 5.5 or VMware vSphere 6.0 installed
     ※ Photon OS가 Linux kernel 3.X로 설치되어야 하는 데, 5.5에서는 3.X 항목이 없어서 불가로 추정
     ※ VMworkstation의 경우네는 Ver.12에 Linux 3.X으로 설정하여 설치 가능하며, Photon 항목도 있음.
•ESXi host with recommended 2GB of free RAM
•ESXi host with recommended 2GB of free disk space
•Photon ISO
                                                                 【 Recommend 】   2 vCPU, 1024MB memory, 20GB hard disk. 

 

Photon 설치 파일
• Photon OS, Tech Preview 2 – Full ISO

         - Full Version 선택 시, Photon OS를 모두 선택 할 수 있음.
• Photon OS, Tech Preview 2 – Minimal ISO
• Photon OS, Tech Preview 2 - OVA
     ※초기에는 일반 ISO만 지원했으나, Minimal ISO와 OVA가 추가됨.

 

Photon OS 종류
• Photon Micro
• Photon Minimal
• Photon Full
• Photon OSTree Host
• Photon OSTree Server

 


 

 


 vSphere Integrated Containers & Vmware Phton Platform
    - VIC : Unified Hybrid Platform
    - Photon Platform : Cloud-Native Platform

 

 

 

vSphere Integrated Containers
▪ 기존 vSphere에서 Container를 관리할 수 있도록 확장
▪ 다양한 Feature Set 지원
     -  기존 ESXi에서 지원하던 다양한 기능을 지원 (DRS, vMotion, HA/DR, Storage & Network Integration)
▪ 기존 서비스에 대한 Re-Building이나, Re-Architecture가 필요하지 않음.
▪ Enterprise급의 Container Infrastructure를 구축 가능.
     - 개발자에게는 Container의 Portable, Fast, Lightweight의 장점을 가져다 주며,
       IT 운영자에게는 Security, Visibility, Management를 효과적으로 할 수 있도록 함.

▪ 다른 Container ecosystem 솔루션(CoreOS Tectonic, Docker, Kubernetes, Mesosphere Data Center OS, Pivotal CF)과

  손쉽게 통합 가능

 

 


 

 

Photon Platform
▪ Container와 CNA에 최적화 된 Platform
Core Components
   - Photon Controller(Host 컨트롤러, 스케쥴러)

       : Container의 분산컴퓨팅 관리, 스케쥴링 관리, 오케스트레이션
       : 단일 API 엔드포인트

             - 실제 Photon Controller가 내부적인 동작을 하는 것이 아니라, 기본 Container 기반의 ecosystem에 대한  API를 제공

               Photon Platform 사용자는 동일한 API 사용을 통해서 원하는 ecosystem을 그대로 사용 가능

       : 현재 미 출시

   - Photon Machine(Compute Host)
       : Photon OS, Microvisor(based on ESX)
         - Photon OS가 내장된 ESX기반의 Lightweight한 microvisor. 

 

Photon Platform 아키텍처

  

 

 

 

vSphere Integrated Containers와 Photon Platform 간의 비교

 


 

 

Posted by 네떡지기
분류없음2015.10.27 10:09

 

 

Photon, VMware, Container, install, git, iso, platform, os, 컨테이너, 포톤, vm웨어, Docker, rkt : Today Key

 

VMWare에서 Container를 위한 Container 전용 OS인 Photon을 VMWorld 2015에서 발표하였습니다.

Photon과 관련한 2가지 방향인 VIC와 Photon Platform은 곧 다음 포스팅에서(빠르면 이번 주내?) 다뤄질 예정이며..

우선 무작정 누구나 따라하기 쉬운 Photon OS 설치를 이번 포스팅에서 다뤄봅니다.

 

 


 

 

VMWare Photon OS 설치하기

 

Photon OS

VMWare에서 Container를 위한 내놓은 Container OS

ISO(Full, Minimal), OVA로 현재 제공되고 있음.

• 현재 Version은 Photon 1.0 TP2

 

설치

• 설치 시, Linux Kernel 3.X 64bit로 설치(혹은 Photon OS)

• 아래 설치 예제는 ISO Full Version으로 진행

 

 

 

 

 

 

• Photon 이미지를 실행하면 아래와 같이 Install 화면 표시

 

• Accept !

 

 

 

• Disk 선택.

 

• Disk 초기화

 

 

• Photon OS 종류 선택. 여기서는 Full Version으로 설치

  당연히, full 버전이 Micro나 MInimal 버전보다 많은 기능을 포함하고 있지만, 조금 무거운 이미지이다.

  하지만 기존 Linux OS에 비해서는 가볍다.

 

 

• Hostname 설정

 

• Root Password 설정

 

• 설치가 끝나면, 시스템 리부팅

 

 

 

• 설치가 완료.

 

 

 

 

• Photon의 현재 Version을 확인

 

 

• Photon에서 Docker를 활성화하고, VMware에서 CNA(Cloud Native Application) 예제로 올려놓은 이미지를 받아서 실행합니다.

 

 

 

• Photon OS에 Docker Container를 띄워서 웹서비스를 간단하게 올린 예제입니다.

 

 

• Photon 예제에서 사용한 이미지의 Linux 정보는 아래와 같습니다.

 

 

• 본 예제에서 설치한 Photon OS은 Full 버전입니다. 현재 사용량을 확인해보면 약 232M 정도입니다.

 

• Full Version의 경우에는 yum도 가능합니다.

 

 

• 다음은 Photon OS은 Minimal을 설치했을 때의 모습입니다. 현재 사용량을 확인해보면 약 46M 정도입니다.

 

 

• 다음은 Photon OS은 Micro를 설치했을 때의 모습입니다. 현재 사용량을 확인해보면 약 25M 정도입니다.

 

 

• 이상으로 아주 간단한 Photon OS의 설치와 간단한 CNA 예제를 실행해보았습니다.

  Photon에 대한 정리는 다음 포스팅에서 보다 자세히. ^^ 하도록 하겠습니다.

Posted by 네떡지기
분류없음2015.05.24 21:52

 


Docker, Openplatform, install, setup, image , container : today Key

 

개발자와 Sysadmin을 위해서 빌드(Build)하고, 이동(Ship)하고, 분산된 어플리케이션을 실행(Run)하기 위한 OpenPlatform인

Docker의 2번째 포스팅입니다.  이번 포스팅에서는 Docker를 사용하기 위해서 설치하고, 간단하게 Docker를 이용하여

Container를 만들어서, 동작/정지 등의 기본적인 기능을 수행해보며, 마지막에는 전체 Flow를 간단하게 알아봅니다. 


Last Updated : 2015. 08. 26  


 

 

Docker 설치하기 (Ubuntu 14.04 기준)

    - docker.io 패키지를 아래와 같이 설치

 

 

          ※  리눅스 배포판을 자동으로 인식해서 Docker를 설치하려면 다음과 같이 하면 된다.

                 wget  -q0- https://get.docker.com/  | sh

 

 


 

Docker 시작하기

 

•Docker에서 사용 가능한 이미지 조회

     -  # docker search TERM

   - 엡에서 설치 가능한 이미지 조회하기 : https://registry.hub.docker.com

   - 이미지 이름에 / 들어간 이미지의 경우에는 일반 User Docker Hub 업로드한 이미지로,

     공식 이미지의 경우에는 User명이 붙지 않음. 

 

 

[Web에서 확인]

 

 

 

 

•Docker 이미지 다운받기

    - Docker Hub에서 원하는 이미지를 다운 받고자 할 떄 사용.

    -  # docker pull <image_Repo>:<TAG> 

    - TAG는 Version이 되며, 미 지정시에는 Latest(최신 버전)으로 다운받게 된다.

 

•Docker 이미지 리스트 확인(Local)

    - 현재 Local 에 있는 Docker 이미지 정보 확인

    - # docker images 

 

 

 

 

   

•Container 생성하기

    - Docker Image와 Docker File을 가지고, Docker Container을 생성.

    - # docker run <option> <image_Repo | image ID> <runnning_process>

 

•Container 프로세스 확인

    - 현재 생성된 Container 확인.

    - default로는 현재 구동 중인 Container에 대한 정보만 표기되며, 정지된 Container까지 보려면, -a 옵션을 사용한다.

    - # docker ps <option> 

 

 

 

 

•Container 정지 / 시작 / 재시작

    - 생성된 Container를 시작(Start),정지(Stop),재시작(Restart)

    - # docker < start | stop | restart > <container_ID | NAMES>

 

 

 

•Container 삭제

    - 생성된 Container 삭제 (Container가 정지된 상태에서 삭제)

    - # docker rm <container_ID | NAMES>

 

 

 

•Docker 이미지 삭제

    - Docker 이미지 삭제 

    - # docker rmi <Repo:Tag | IMAGE_ID>

 

 


Docker Flow  

 

 

 

 

 

 

 

 

 

 

 

Posted by 네떡지기
DevOps/Automation2014.12.20 11:58

 


Puppet 2번째 입니다. ^^

Automation for Networker 시리즈의 3번쨰 포스팅이기도 합니다.

이번 포스팅에서는 Puppet를 설치해보고,

아주 간단하게 구조 확인 및 예제를 실행해보고, 작은 모듈로도 구성해 봅니다.


Puppet 설치하기

 

  1. 파일 Download : wget http://apt.puppetlabs.com/puppetlabs-release-precise.deb

 

 

  2. APT 설정 업데이트 : sudo apt-get update

 

  3. Install : sudo apt-get -y install puppet

                    ※ sudo yum install puppet   [ Yum 패키지 이용 시 ]

                         http://downloads.puppetlabs.com/windows  [ Windows의 설치패키지 이용 (MSI파일) ]

 

 

  4. Version 확인 : puppet --version

 


 

Manifest

    - Puppet 언어로 작성된 파일로, .pp 확장자를 가진다.

    - Resources와 Class를 선언하고, Variable, Function 등에 대한 설정을 한다.

    

 

Manifest 기본 구성 형식

  

Node 'Node_Name'

Resource { NAME:

   ATTRIBUTE => VALUE,

   ...
}

 

○ Node

    다수의 Puppet Agent 적용 시에, 각 Node를 구분하기 위한 Keyword이며 이는 Device의 Hostname을 Node 뒤에 써주면 해당

    Hostname에을 가진 Device에 대해서만 해당 Attribute가 적용된다.

 

○ Resource

     Puppet이 관리하는 Configuration의 구성요소, File, Service, Package, User등의 Type과 Attribute를 갖는다.

 

○ NAME

   Resource에서의  각 Instance와 구분용도로 쓰이는 이름

   Ex) File  : File의 절대 경로/파일명

         Package : 패키지

 

○ Attribute

    해당 Resource의 설정되어야 하는 속성   

    Ex) File : Content (File 내용 : overwirte), owner, group , mode

           Package : ensure  -  installed  : 미 설치 시 설치

                                            -  absent : 설치 시 삭제

                                            -  latest : 최신 버전 업데이트

                                            -  특정 버전 ID : 특정 버전으로 동기화

 

○ VALUE

    특정 Resource의 Attribute에 적용되는 내용, 상태 등을  나타내는 값.

   

 

 


Manifest  적용   

 

~$ puppet apply site.pp

 


Manifest 예제 보기

 - 첫 번째 Puppet의 예제는, 특정 디렉토리에 지정한 내용을 가지는 file을 생성합니다.

 - /tmp/zigi 라는 디렉토리에 'ZIGI Puppet Ex1'이라는 내용(content)을 가지는 파일을 생성하게 되는 데,

   만약 기존에 파일이 존재할 경우에는 지정한 내용(content)로 다시 쓰여지게(overwrite) 됩니다.

 

Manifest 코드)

file { '/tmp/zigi':
        content => "ZIGI Puppet Ex1\n",
}

 

Manifest 실행)

ubuntu@ip-172-31-19-29:~/Puppet$ puppet apply site.pp
Notice: Compiled catalog for ip-172-31-19-29.ap-northeast-1.compute.internal in environment production in 0.04 seconds
Notice: /Stage[main]/Main/File[/tmp/zigi]/content: content changed '{md5}e3d06af3118fbd5c185ace31184bce1d' to '{md5}bfe6ff1231792c9cb81b6a5ed9d2be75'
Notice: Finished catalog run in 0.03 seconds

 

결과 확인)

ubuntu@ip-172-31-19-29:~/Puppet$ cat /tmp/zigi
ZIGI Puppet Ex1

 

 


Puppet 모듈화 하기

 

● 모든 내용을 하나의 Manifest로 작성해도 상관없지만, 관리 및 유지보수 측면에서 역할에 따라서 Manifest를 위와 같이

    구분해서 사용하는 것이 좋다

 

Class (init.pp)

  - 모든 Element(files, settings, moduels, scripts 등)를 포함하여 선언해 놓은 Resource의 집합

 

class zigimodule {
   file {'/tmp/zigimodule':
      content => "ZIGI Module Test\n",
   }
}

 

 

Node (ziginode.pp)

  -  Class, Resource, Variabled 집합을  특정 agent에 적용하도록 만든 Manifest  

 

node 'ZIGI'{
   include zigimodule
}

 

 

Main Manifests  (site.pp)

  - 주 실행 Manifest. 

 

import 'ziginode.pp'

 

 

디렉토리 구조 

  - 위에 열거한 파일에 대한 디렉토리 구조는 아래와 같다.

  - Class로 만들어진 init.pp는 modules 디렉토리 내부의 class명과 동일한 디렉토리 안에 manifests 디렉토리 내부에 위치한다.

     ※ module에 대한 상세 디렉토리 구조는 추후에 다시 다룰 예정입니다.

 

 

 

모듈화 Puppet 실행 및 결과

   - 모듈화된 manifest를 실행하고 난, 결과내용과 결과값이다.

 

 

 

 

Posted by 네떡지기

티스토리 툴바