go PATH 설정

나만의 Cloud 2017. 3. 17. 12:05

go 설치 

https://www.digitalocean.com/community/tutorials/how-to-install-go-1-6-on-ubuntu-14-04

  • sudo curl -O https://storage.googleapis.com/golang/go1.6.linux-amd64.tar.gz

Next, use tar to unpack the package. This command will use the Tar tool to open and expand the downloaded file, and creates a folder using the package name, and then moves it to /usr/local.

  • sudo tar -xvf go1.6.linux-amd64.tar.gz
  • sudo mv go /usr/local

Some users prefer different locations for their Go installation, or may have mandated software locations. The Go package is now in /usr/local which also ensures Go is in your $PATH for Linux. It is possible to install Go to an alternate location but the $PATH information will change. The location you pick to house your Go folder will be referenced later in this tutorial, so remember where you placed it if the location is different than /usr/local.

Step 2 — Setting Go Paths

In this step, we’ll set some paths that Go needs. The paths in this step are all given are relative to the location of your Go installation in /usr/local. If you chose a new directory, or left the file in download location, modify the commands to match your new location.

First, set Go's root value, which tells Go where to look for its files.

  • sudo nano ~/.profile

At the end of the file, add this line:

export PATH=$PATH:/usr/local/go/bin

go - how do I SET the GOPATH environment variable on Ubuntu ...

go path가 설정 되지 않아 package 다운로드가 불가한 경우가 종종 발생

package github.com/square/certstrap: cannot download, $GOPATH not set.


- 적용 전 환경 변수 확인

$ go env

GOARCH="amd64"

GOBIN=""

GOEXE=""

GOHOSTARCH="amd64"

GOHOSTOS="linux"

GOOS="linux"

GOPATH=""

GORACE=""

GOROOT="/usr/local/go"

GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"

GO15VENDOREXPERIMENT="1"

CC="gcc"

GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0"

CXX="g++"

CGO_ENABLED="1"



- 적용 후 

$ export GOPATH=/home/ubuntu/go


GOARCH="amd64"

GOBIN=""

GOEXE=""

GOHOSTARCH="amd64"

GOHOSTOS="linux"

GOOS="linux"

GOPATH="/home/ubuntu/workspace/releases/cf-release/go"

GORACE=""

GOROOT="/usr/local/go"

GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"

GO15VENDOREXPERIMENT="1"

CC="gcc"

GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0"

CXX="g++"

CGO_ENABLED="1"


export PATH=$PATH:$GOROOT/bin:$GOPATH/bin


'나만의 Cloud' 카테고리의 다른 글

pacemaker  (0) 2016.11.23
ubuntu 14.04 haproxy 설정  (0) 2016.11.15
ubuntu apache2 포트 변경 및 DocumentRoot 변경  (0) 2016.06.02
SLA  (0) 2016.05.09
ubuntu keepalived  (0) 2016.04.20
Posted by 뭉탁거림
,

pacemaker

나만의 Cloud 2016. 11. 23. 15:11

pcs01


192.168.100.101, 172.27.1.11

VIP : 192.168.100.99 


pcm02

192.168.100.102, 172.27.1.12



################################

# cat /etc/hosts


192.168.100.101 pcs01

192.168.100.102 pcs02

192.168.100.98  pcs-vip

172.27.1.11     pcs01-cr

172.27.1.12     pcs02-cr


################################


# yum install -y pacemaker pcs fence-agents-all


pacemaker 설치(모든 node 동일) 

-- pacemaker를 설치하면 의존성으로 corosync도 설치가 됨 

-- pcs는 pacemaker와 corosync를 config하는 tool 

-- pcs를 설치하면 pcsd가 설치가 됨. 

-- pcsd is openssl based daemon written in ruby, manages pcs authentication between nodes, 

-- the authentication files are located in /var/lib/pcsd. 


# rpm -q -a | grep fence

fence-agents-rhevm-4.0.2-3.el7.x86_64

fence-agents-ilo-mp-4.0.2-3.el7.x86_64

fence-agents-ipmilan-4.0.2-3.el7.x86_64



################################


pcs daemon 데몬 시작 및 활성화 : used for synchronizing the Corosync configuration across the nodes


# systemctl start pcsd.service

# systemctl enable pcsd.service



패키지 설치 이후 hacluster 라는 새계정 추가 됨

구성을 위한 계정이므로 hacluster 계정에 대해 동일한 패스워드 설정


# echo "passwd" | passwd hacluster --stdin


there will be a new user on your system called hacluster. After the installation, remote login is disabled for this user. 

For tasks like synchronizing the configuration or starting services on other nodes, 

we have to set the same password for this user


################################


node01에서 진행


corosync 설정

pcs CLI를 이용해 node 간의 auth 생성 /var/lib/pcsd/tokens 저장


# pcs cluster auth pcs01-cr pcs02-cr


[root@pcs01 ~]# pcs cluster auth pcs01-cr pcs02-cr

Username: hacluster

Password:

pcs02-cr: Authorized

pcs01-cr: Authorized


################################


node01에서 진행


first_cluster'라는 cluster를 만들고, corosync config를 node간에 동기화(master node에서) 

pcs cluster setup on the same node to generate and synchronize the corosync configuration


# pcs cluster setup --name first_cluster pcs01-cr pcs02-cr -u hacluster -p passwd



Redirecting to /bin/systemctl stop  pacemaker.service

Redirecting to /bin/systemctl stop  corosync.service

Killing any remaining services...

Removing all cluster configuration files...

pcs01-cr: Succeeded

pcs02-cr: Succeeded

Synchronizing pcsd certificates on nodes pcs01-cr, pcs02-cr...

pcs02-cr: Success

pcs01-cr: Success



/etc/corosync/corosync.conf 파일이 생성되고 모든 node에 배포됨



################################


cluster 시작 (node01 수행)


# pcs cluster start --all (systemctl start corosync.service, systemctl start pacemaker.service와 같은 명령어임)


데몬 활성화(모든 node 수행)

# pcs cluster enable --all (systemctl enable corosync.service, systemctl enable pacemaker.service)



################################


Verify Corosync Installation


# corosync-cfgtool -s

# corosync-cmapctl  | grep members

# pcs status corosync


################################


Disabling STONITH and Ignoring Quorum 설정


[root@pcs01 ~]# pcs status

Cluster name: first_cluster

WARNING: no stonith devices and stonith-enabled is not false //다음과 같은 메세지 발생


# pcs stonith list

Check the list of available STONITH agents 할수 있음



# pcs property set stonith-enabled=false

# pcs property set no-quorum-policy=ignore


################################


# pcs cluster cib

# cibadmin -Q

If we inspect the raw output, we can see that the Pacemaker configuration XML file contains the following sections:

아래 5가지 섹션으로 구성되어 있음


<configuration>

<nodes>

<resources>

<constraints>

<status>


#crm_verify -LV

최종 유효성 검사


################################


Configuring the Virtual IP address


VIP 구성 및 관리그룹생성(한쪽 node에서만 진행, 주로 master에서) 


1) VIP를 제어하는 리소스를 추가 

-- 이를위해 'ocf:heartbeat:IPaddr2' (기본) 리소스 agent를 구성, 

-- 모든 리소스 agent는 2 ~ 3개의 필드로 이루어짐. 

-- resource class, OCF (Open Cluster Framework)/providers/resource agent 이름 


[root@pcs01 ~]# pcs resource standards

ocf

lsb

service

systemd

stonith


[root@pcs01 ~]# pcs resource providers

heartbeat

openstack

pacemaker


[root@pcs01 ~]# pcs resource agents ocf:heartbeat

CTDB

Delay

Dummy

Filesystem

IPaddr

IPaddr2

...

...

...



다음은 'Cluster_VIP' 라는 resource를 VIP:192.168.56.202, netmask-32bit, 모티너링 interval - 10초 로 생성


# pcs resource create Cluster_VIP ocf:heartbeat:IPaddr2 ip=192.168.100.99 cidr_netmask=24 op monitor interval=10s


[root@pcs01 ~]# pcs status

Cluster name: first_cluster

Last updated: Tue Nov 22 03:24:17 2016          Last change: Tue Nov 22 03:23:40 2016 by root via cibadmin on pcs01-cr

Stack: corosync

Current DC: pcs02-cr (version 1.1.13-10.el7_2.4-44eb2dd) - partition with quorum

2 nodes and 1 resource configured


Online: [ pcs01-cr pcs02-cr ]


Full list of resources:


 Cluster_VIP    (ocf::heartbeat:IPaddr2):       Started pcs01-cr


PCSD Status:

  pcs01-cr: Online

  pcs02-cr: Online


Daemon Status:

  corosync: active/enabled

  pacemaker: active/enabled

  pcsd: active/enabled



참고로 아래 명령어로 Pacemaker 연결 상태를 변경하여 리소스가 이동할수 있도록 할수 있음


# pcs cluster standby pcs01-cr

# pcs cluster unstandby pcs01-cr


아래 처럼 manual 하게 이동시킬수도 있음

# pcs resource move Cluster_VIP pcs01-cr

# pcs resource clear my_VIP


################################


Adding the Apache Resource 추가


# yum install -y httpd  

아파치 설치


Test를 위한 HTML 파일 생성


[ALL]# cat <<EOL >/var/www/html/index.html

Apache test on $(hostname)

EOL


Enable the Apache status URL:


[ALL]# cat <<-END >/etc/httpd/conf.d/status.conf

 <Location /server-status>

    SetHandler server-status

 </Location>



# pcs resource create WebServer ocf:heartbeat:apache configfile=/etc/httpd/conf/httpd.conf statusurl="http://localhost/server-status" op monitor interval=1s


# pcs status

...

...


Online: [ pcs01-cr pcs02-cr ]


Full list of resources:


 Cluster_VIP    (ocf::heartbeat:IPaddr2):       Started pcs01-cr

 WebServer      (ocf::heartbeat:apache):        Started pcs02-cr


PCSD Status:

  pcs01-cr: Online

  pcs02-cr: Online


Daemon Status:

  corosync: active/enabled

  pacemaker: active/enabled

  pcsd: active/enabled


################################

필요에 의해 같은 곳에 있어야하는 리소스는 제약조건을 만들어야 함

WebServer 리소스와 Cluster_VIP 리소스가 따로 움직여 constraint 설정 필요

# pcs constraint colocation add WebServer Cluster_VIP INFINITY


Request <source resource> to run on the same node where pacemaker has determined <target resource> should run.

Specifying 'INFINITY' (or '-INFINITY') for the score force <source resource> to run (or not run) with <target resource>


################################


리소스 간의 Ensure Resources Start and Stop in Order 설정

예를 들어 apache의 경우 address 설정으로 인해 특정 IP로만 구동이 되어야 한다면 apache 리소스 기동전에 VIP 리소스가 기동 필요


# pcs constraint order Cluster_VIP then WebServer


################################


# pcs resource group add group_webresource Cluster_VIP WebServer



################################



'나만의 Cloud' 카테고리의 다른 글

go PATH 설정  (2) 2017.03.17
ubuntu 14.04 haproxy 설정  (0) 2016.11.15
ubuntu apache2 포트 변경 및 DocumentRoot 변경  (0) 2016.06.02
SLA  (0) 2016.05.09
ubuntu keepalived  (0) 2016.04.20
Posted by 뭉탁거림
,

서버의 고가용성을 목적으로 Data Replication 관련 DRDB 패키지 설치

DRBD와 heartbeat 혹은 keepalived 이용해 active-standby를 구성


OS : ubuntu 14.04 (64bit)

NIC : 

- node01 : public(eth0, 192.168.100.101), heartbeat(eth2, 172.27.0.101 mtu 9000) 

- node02 : public(eth0, 192.168.100.102), heartbeat(eth2, 172.27.0.102 mtu 9000) 

DISK : sdb1(Replication DISK 10G), sdc1(META DISK 1GB)



1. 사전 준비


1) ntp 설치(nodeo01, node02) 

# apt-get install ntp -y

# /etc/init.d/ntp start

# ntpq -p

# date


2) iptables 해제

# iptables -F


3) /etc/hosts file 설정

master/slave 서버 호스트명 기재


# cat /etc/hosts

127.0.0.1       localhost

# 127.0.1.1       node01


192.168.100.101 node01  node01

192.168.100.102 node02  node02

172.27.0.101    node01-private

172.27.0.102    node02-private


4) DISK 파티셔닝

# fdisk /dev/sdb, /dev/sdc



2, DRDB 패키지 설치


# apt-get install drbd8-utils


# root@node02:/etc# cat drbd.conf

# You can find an example in  /usr/share/doc/drbd.../drbd.conf.example


include "drbd.d/global_common.conf";

include "drbd.d/*.res";


# /etc/drbd.conf


# cat /etc/drbd.d/nfs.res

 

resource nfs {    # nfs라는 리소스 정의

  protocol C;                 # DATA 전송 프로토콜 A 비동기식 빠른속도   <=> C 동기식

        startup {

                wfc-timeout 30;

                outdated-wfc-timeout 20;

                degr-wfc-timeout 30;

      #become-primary-on both; # Active-Active 설정시​

        }

disk {

                on-io-error detach;   //  This is the recommended option. On the occurrence of a lower-level I/O error, the node drops its backing device, and continues in diskless mode.             

fencing resource-only; //If a node becomes a disconnected primary, it tries to fence the peer's disk. 

        }

        net {

                cram-hmac-alg sha1;

                shared-secret sync_disk;

                #allow-two-primaries yes;         # Active-Active 구성시 옵션으로 아래 4줄

                #after-sb-0pri discard-zero-changes; 

                #after-sb-1pri discard-secondary; 

                #after-sb-2pri disconnect; 

        }

        syncer {    # resynchroniztion 에서 사용하는 대역폭

                rate 100M;                  # 초당 100M

                verify-alg sha1;

al-extents 257;

        }

        on node01 {                          # 호스트 별로 리소스 정의 (uname -n 값과 반드시 일치)

                device /dev/drbd0;           # drbd의 논리 블록 디바이스명. mkfs,mount 수행해야됨

                disk /dev/sdb1;              # 미러링 하고자 하는 물리 디스크 디바이스명

                address 172.27.0.101:7788;   # 데이타 동기화를 위한 수신 IP/포트

                meta-disk /dev/sdc1;         # 자체 메타 공간 사용 meta-disk internal;

        }

        on node02 {

                device /dev/drbd0;

                disk /dev/sdb1;

                address 172.27.0.102:7788;

                meta-disk /dev/sdc1;

        }



3. 실행

메타데이터 생성 - master/slave 모두

# drbdadm create-md nfs #meta

# dd if=/dev/zero of=/dev/sdb bs=1M  <=오류 시 dd로 disk 초기화

# /etc/init.d/drbd start​ #drbd 서비스 시작, wfc-timeout 시간 이내에 두서버를 모두 on 



# drbdadm -- --overwrite-data-of-peer primary nfs #active 서버 지정 한쪽에서만 수행

# drbdadm primary --force nfs #active 서버 지정

# drbd-overview #확인


# mkfs.ext4 /dev/drbd0 #primary 에서 지정

# mkdir /data

# mount /dev/drbd0 /data/


4. drbdadm CLI

# drbdadm primary nfs

# drbdadm secondary nfs

# drbd-overview

drbdadm -- --overwrite-data-of-peer primary all

primary로 부터 데이터 동기화




'리눅스-Linux' 카테고리의 다른 글

DNS 서버 bind9 설정 관련  (0) 2015.10.11
[Linux] iptables 사용  (0) 2015.10.11
[리눅스] 유용한 find , grep 사용법  (1) 2015.10.11
[Linux] iscsi.conf timeout 관련  (0) 2015.06.10
[리눅스] 파일 무결성 검증  (1) 2014.11.18
Posted by 뭉탁거림
,

# apt-get install haproxy

# vi /etc/default/haproxy


# root@node01:/etc/keepalived# cat /etc/default/haproxy

# Set ENABLED to 1 if you want the init script to start haproxy.

ENABLED=0 -> 1 //수정

# Add extra flags here.

#EXTRAOPTS="-de -m 16"


https://serversforhackers.com/load-balancing-with-haproxy 파라미터 값 참조

Load Balancing Configuration

To get started balancing traffic between our three HTTP listeners, we need to set some options within HAProxy:

  • frontend - where HAProxy listens to connections
  • backend - Where HAPoxy sends incoming connections
  • stats - Optionally, setup HAProxy web tool for monitoring the load balancer and its nodes



global

        log /dev/log    local0

        log /dev/log    local1 notice

        chroot /var/lib/haproxy

        user haproxy

        group haproxy

        daemon


defaults

        log     global

        mode    http

        option  httplog

        option  dontlognull

        retries 3

        redispatch

        maxconn 2000

        contimeout 5000

        clitimeout 50000

        srvtimeout 50000

        errorfile 400 /etc/haproxy/errors/400.http

        errorfile 403 /etc/haproxy/errors/403.http

        errorfile 408 /etc/haproxy/errors/408.http

        errorfile 500 /etc/haproxy/errors/500.http

        errorfile 502 /etc/haproxy/errors/502.http

        errorfile 503 /etc/haproxy/errors/503.http

        errorfile 504 /etc/haproxy/errors/504.http


frontend http-in

        mode http

        bind *:80

        log global

        option httplog

        default_backend servers


backend servers

        mode http

        balance roundrobin

        option forwardfor

        server web01 192.168.100.103:80 check


###

Try http://x.x.x.x:3000/stats  URL to login into statistics report for HAProxy.


listen stats *:3000  //

        mode http

        stats enable

        stats uri /stats

        stats hide-version

        stats auth admin:admin




'나만의 Cloud' 카테고리의 다른 글

go PATH 설정  (2) 2017.03.17
pacemaker  (0) 2016.11.23
ubuntu apache2 포트 변경 및 DocumentRoot 변경  (0) 2016.06.02
SLA  (0) 2016.05.09
ubuntu keepalived  (0) 2016.04.20
Posted by 뭉탁거림
,

python pexpect, paramiko 라이브러리를 이용한 원격지 서버의 명령어 수행


1) pip 설치

2) pip install pexepect, paramiko 


#!/usr/bin/python


####################################


import pexpect

import paramiko

import time

import sys


def ssh_conn(host,passwd,command):

result=""

ssh = paramiko.SSHClient()  

ssh.load_system_host_keys()

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

ssh.connect(host,username='root',password=passwd)

stdin, stdout, stderr = ssh.exec_command(command)

for i in stdout.readlines():

result+=i

print result


ssh.close()


return result


if __name__ == "__main__":

try:

num = 1

mgmt = ""

networks = ["172.16.193.", "172.16.194.", "172.16.196.", "172.16.197."]

for i in networks:

print i + "X MGMT Network POD " + "\n"

for j in range(1,9):

mgmt = i + str(j)

ssh_conn(mgmt, "password", sys.argv[1])

time.sleep(1)

except Exception, e:

print str(e)

'Python_Study' 카테고리의 다른 글

[python] pass, continue 차이  (2) 2015.09.23
[python] class , self  (0) 2015.09.10
python pip  (0) 2015.08.21
Flask 정리  (0) 2015.02.05
52장 카드만들기  (0) 2014.08.20
Posted by 뭉탁거림
,

bosh sample release를 개발하기 위해 사전 테스트 작업으로 apache를 bosh를 통해 배포하여 보자

 


1. Release 생성

# bosh init release test-release


root@jenkins:~/workspace/test-release# tree

├── blobs

├── config

   └── blobs.yml

├── jobs

├── packages

└── src



2. Package 생성 : 배포에 필요한 binary file과 job에서 사용할 src 및 dependency file 제공


# bosh generate package apache2


root@jenkins:~/workspace/bosh_install_test/packages# tree

└── apache2

    ├── packaging

    ├── pre_packaging

    └── spec


또.. 여러개 파일이 default로 생성된다...

1) spec 파일 수정

   - name : package name

   - dependencies : Package's dependencies

   - files :The location where BOSH can find the binaries and other files that the package needs at compile time


---

name: apache2


dependencies:


files:

  - apache2/httpd-2.2.25.tar.gz


 2) src 디렉토리에시 필요한 파일 download

# mkdir src/apache2

# cd src/apache2

# wget 'http://apache.tradebit.com/pub/httpd/httpd-2.2.25.tar.gz'


 3) packaging (compilation script) 작성

echo "Extracting apache https..."

tar xzf apache2/httpd-2.2.25.tar.gz


echo "Building apache https..."

(

   cd httpd-2.2.25

    ./configure \

    --prefix=${BOSH_INSTALL_TARGET} \

    --enable-so

    make

    make install

}

EOF 


release의 package 설정을 대강 마무리 됬고 pre_packaging의 용도는 모르겠다.

아래로 대망의 job 생성


3. job 생성

# bosh generate job apache2



create jobs/apache2

create jobs/apache2/templates

create jobs/apache2/spec

create jobs/apache2/monit


또 이것저것 만들고...


1) spec : spec 파일은 job metadata 정의한 파일로 bosh 통해 deploy 해석되어 사용된다

         name, description, templates, package, properties 구성 되어 있음

         spec 파일의 자세한 schema https://bosh.io/docs/jobs.html 참조


  • Compile 단계에 BOSH는 template들을 file 변환하여 JOB VM 복사함
  • Key/value 형식으로 선언되며, key template 폴더의 파일 name, value JOB VM 복사되는 PATH 파일 이름

    /var/vcap/jobs/<job_name>/bin/ctl on the job VM


---

name: apache2

 

description: This job runs a simple HTTP server.

 

templates:

  httpd.conf.erb: config/httpd.conf

 

packages:

  - apache2

 

properties:

  name:

     description: name set test

  age:

     description: age deafult set test

     default: 99



너무 길어지니.. 우선 여기까지~





 

'CloudFoundry' 카테고리의 다른 글

[bosh] job lifecycle  (0) 2016.06.02
[bosh] release, job  (0) 2016.06.02
bosh-lite 이용한 CloudFoundry deploy  (0) 2016.04.20
[CloudFoundry] cf push process(application 배포)  (0) 2016.04.20
CloudFoundry user-provide-service setting  (0) 2016.04.20
Posted by 뭉탁거림
,

* 복제 : 클라이언트가 어느 노드에 접근하더라도 동일한 데이터를 읽을 수 있도록 데이터를 각 노드에 복제하여 저장하는 것을 말한다.

* 샤딩 : 데이터를 특정 조건에 따라 나누어 저장하는 것을 말한다.

  예를 들어 1부터 10까지 10개의 데이터를 두 대의 노드를 사용하여 샤딩을 수행한다고 가정하자.

  이때 첫 번째 노드에 1부터 5까지의 데이터를 저장하고 두 번째 노드에 6부터 10까지의 데이터를 저장하여 데이터를 분할 저장하는 방법을 샤딩이라 말한다.

* 샤드(Shard) : 두 개의 노드를 사용하여 데이터를 분할 저장하였을 때 각 노드를 샤드라고 부른다.

   만약 각 샤드가 복제를 사용하여 여러 개의 노드로 구성될 때에도 하나의 샤드로 취급한다.


http://develop.sunshiny.co.kr/1001

'공부하는 Study ' 카테고리의 다른 글

Foundry  (0) 2015.09.09
[chef] chef-client -z (chef-zero)  (0) 2015.09.04
[chef] knife node, knife client 제거  (0) 2015.09.04
[chef] Berkshelf  (0) 2015.09.04
[chef] cookbook 업로드시 dependencies 정의(metadata.rb)  (0) 2015.09.04
Posted by 뭉탁거림
,

Bosh deployment process에는 몇가지 단계가 있다


1. 설치에 필요한 dependency package 다운

2. 모든 job VM parallel 하게 pre-start script 구동 , pre-start script finish 때가지 대기함

3. monit start 호출 되어 process 기동

4. 마찬가지로 post-start script 구동 되고 완료 떄가지 대기

5. all jobs in the deployments 마친 post-deploy script 수행

  • default director property에서 false 되어 있어서 enable 시켜줘야 사용 가능함

6. 추가로 monit에서 특정 job stop drain script 호출

Posted by 뭉탁거림
,

# apt-get install apache2 -y 

# vi /etc/apache2/sites-enabled/000-default


<VirtualHost *:8080>

        ServerAdmin webmaster@localhost


        DocumentRoot /var/www

        <Directory />

                Options FollowSymLinks

                AllowOverride None

        </Directory>

        <Directory /var/www/>

                Options Indexes FollowSymLinks MultiViews

                AllowOverride None

                Order allow,deny

                allow from all

        </Directory>


        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

        <Directory "/usr/lib/cgi-bin">

                AllowOverride None

                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch

                Order allow,deny

                Allow from all

        </Directory>


        ErrorLog ${APACHE_LOG_DIR}/error.log


        # Possible values include: debug, info, notice, warn, error, crit,

        # alert, emerg.

        LogLevel warn


        CustomLog ${APACHE_LOG_DIR}/access.log combined


    Alias /doc/ "/usr/share/doc/"

    <Directory "/usr/share/doc/">

        Options Indexes MultiViews FollowSymLinks

        AllowOverride None

        Order deny,allow

        Deny from all

        Allow from 127.0.0.0/255.0.0.0 ::1/128

    </Directory>


</VirtualHost>

'나만의 Cloud' 카테고리의 다른 글

pacemaker  (0) 2016.11.23
ubuntu 14.04 haproxy 설정  (0) 2016.11.15
SLA  (0) 2016.05.09
ubuntu keepalived  (0) 2016.04.20
ansible 설치 및 기본 구성  (0) 2015.08.21
Posted by 뭉탁거림
,

[bosh] release, job

CloudFoundry 2016. 6. 2. 15:49

BOSH는 VM 내부의 SW 배포에 필요한 설치 파일/script/소스등의 모음 인 release라는 파일을 통해 Deploy를 수행합니다.



물론 그 과정에 Manifest라는 파일과 stemcell 이미지가 필요하지만요...


BOSH release 구성요소는 다음과 같습니다


1) Jobs describe pieces of the service or application you are releasing

2) Packages provide source code and dependencies to jobs

3) Source provides packages the non-binary files they need

4) Blobs provide packages the binaries they need, other than binaries that are checked into a source code repository


1. Release 생성


# bosh init release <release_name>

아래와 같이 Release의 기본 구조가 만들어짐

├── blobs

├── config

   └── blobs.yml

├── jobs

├── packages

└── src


2. jobs 생성


Release job 수행 work 묶음

예를 들어 dhcp Release라고 하면 dhcp_server job 있을테고 APM Release 라면 apache, mysql, php 설치/설정하는 3가지의 job으로 나눌 있지 않을까 싶다

 

아래 명령어로 job을 만들게 되면 아래 구조로 각각의 job의 골격이 만들어진다

# bosh generate job <job_name>


create        jobs/job_one

create        jobs/job_one/templates

create        jobs/job_one/spec

create        jobs/job_one/monit

 

jobs

   ├── job_one

   │   ├── monit

   │   ├── spec

   │   └── templates

   │       └── pre-start.sh.erb

   └── job_two

       ├── monit

       ├── spec

       └── templates


여기서

spec : spec 파일은 job metadata 정의한 파일로 bosh 통해 deploy 해석되어 사용된다

         name, description, templates, package, properties 구성 되어 있음

         spec 파일의 자세한 schema https://bosh.io/docs/jobs.html 참조

 

Templates : (ERB 기반의 Configuration file)

                Bosh에서 배포 파일의 Template 역할을 하는 기반임

                Monit에서 사용하는 ctl 파일이나 Hook scripts(pre-start, post-start, post-deploy)  

                참조  가 되는 디렉토리 또한 ERB 파일이기때문에 Basic ERB syntax 이용가능함

  • <%= "value" %>: Inserts string “value”.
  • <% expression %>: Evaluates expression but does not insert content into the template. Useful for if/else/end statements.

<%= p("some.property") %>: Insert the property some.property value, else a default 

 

Monit : process pid 정보와 start, stop 스크립트를 명시한 파일

          monit 설정을 ㅗㅇ해 bosh 해당 job 상태를 체크하고 점검함

Posted by 뭉탁거림
,