'Cloud'에 해당되는 글 3건

  1. 2016.11.23 pacemaker
  2. 2016.04.20 CloudFoundry user-provide-service setting
  3. 2013.12.23 [Razor] puppetlabs razor provisioning

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 뭉탁거림
,

CloudFoundry에서는 service broker를 통한 marketplace 서비스 뿐만 아니라 외부의 3rd party 서비스를 broker 없에 플랫폼에서 사용할수 있다.

CloudFoundry 상의 app들이 외부의 서비스와 연동이 가능하다는 의미!


단. 조건이 custom user provided service 생성 작업을 해야지.. cf services 에 노출이 되고.. app binding이 가능하다



cf cups SERVICE_INSTANCE -p "host, port, dbname, username, password"

 

cf env app_name

 

 

  "credentials": {

     "hostname": "192.168.31.11",

     "jdbcUrl": "jdbc:mysql://172.27.31.11:3306/cf_6ced88bb_5078_4f00_b28b_55cdbfafe716?user=YYIbSHmkjuan5y8G\u0026password=vf8LA3kcOoiaa0OW",

     "name": "cf_6ced88bb_5078_4f00_b28b_55cdbfafe716",

     "password": "password",

     "port": 3306,

     "uri": "mysql://YYIbSHmkjuan5y8G:vf8LA3kcOoiaa0OW@192.168.31.11:3306/cf_6ced88bb_5078_4f00_b28b_55cdbfafe716?reconnect=true",

     "username": "password"



출처 : http://www.slideshare.net/SpringCentral/spring-one-extendingcf


 


Posted by 뭉탁거림
,

chef-server 를 통한 인프라 자동화 환경을 구축하여 cloud 인프라 구축에 시간 단축과 각 node의 손쉬운 관리가 가능해졌다고 생각하네요. 

그런데..chef를 이외에도 더 많은 인프라 자동화 소프트웨어를 다루어 보기 위해 Razor에 대해 공부하고 정리하려고 합니다.

웹에서도 충분히 chef와 ppupet 및 razor에 대한 차이점과 장단점은 잘나와있으니... 개인적으로 필요할 경우 정리하시는 것을 추천해드립니다 ;;;;;


이번 장에서는 razor에 대한 기본 개념...에 대해 정리! 

razor에 대해 간단하게 요약하자면 ...

서버가 PXE 부팅을 하게되면 내부 dhcp 서버는 razor 서버를 next-server로 가르키게 되고 TFTP를 통해 micro kernel을 이용하여 baremetal 및 virtual 인프라의 프로비저닝 할 node를 등록한 이후 razor 서버에 설정 된 tag와 policy, model에 맞게 프로비저닝하는 소프트웨어라고 생각하시면 됩니다.


1. micro kernel : 최소 메모리로 부팅할수 있는 커널로 부팅 이후 physical or virtual 한 서버의 모든 정보를 수집하여 razor 서버에 전달하는 역할(cpu, version, vendor, NIC, Disk 정보 등등)


2. tag

razor 서버에는 tag rule이라는 것이 있으며 rule에 맞게 razor 서버에 등록된 node에 tag를 적용할 수 있다.

우리가 알고 있는 tag라고 생각하면 편함...

예를 들어 HP 10대, CISCO 10대, DELL 10대 OS를 설치할 30개의 서버가 있다고 가정 할때..HP 서버에는 우분투를 설치, CISCO 서버에는 Xen을 Dell서버에는 vSphere를 설치할 경우 razor 서버에 tag를 생성하고 vendor 종류에 따라 matcher를 적용할수 있다.


3. policy

razor에 policy는 위에서 node에 적용된 tag에 기반하여 matching 된 model을 적용하는 규칙이다

policy는 위에서 생성된 tag를 바탕으로 model에 matching 된 tag를 찾으며 해당 node를 active model로 변경


4. model

os image , password , hostname 등등

템플릿이라고 생각하면 될지 모르겠다... 각 OS라고 해서 OS Configuration 같진 않으니 model 요구사항에 맞게 coustomized 되서 여러가지가 존재할수도..


5. broker

chef, puppet 플러그인?





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

[chef] chef 서버가 IP가 변경 시  (0) 2014.02.13
[chef] knife를 이용한 ssh 명령어 내리기  (0) 2014.02.04
[펌]CloudStack 시스템 VM  (0) 2013.10.24
[Xenserver] Xenserver의 구조  (0) 2013.10.21
Xen 명령어 정리  (0) 2013.10.18
Posted by 뭉탁거림
,