2017년 3월 8일 수요일

OpenShift Version 3 - Block Arch


Platform as a service (PaaS)가 하두 대세라...

회사서도 하자고 하고 ,,,

Version 2.x에서 좀 보다가 말았는데 

1년을 수원에 팔려가서 딴짓 하다보니 공부했던 것도 다 잊어버렸음 

Version 3이 나왔는데 내부가 완전 딴거임...

기존에는 자체적으로 구성하거나 뭔가 오픈소스를 누덕누덕 하더니 이번에는 

Docker 기반으로 싹 갈아치웠다 

덕분에  OpenShift 하면서 Docker와 쿠버네티스와 엔시블까지 한방에 가보는걸로 

일단 Open Shift V3의 아키텍쳐 변경사항과 항목에 대한 기초적인 설명 부터 공부....




= 개념  =
0. Master 는
- The Master is an instance of Red Hat Enterprise Linux or Red Hat Atomic Host
  (EHEL기반으로 단독서버든 가상화든 OS에 구성되는 인스턴스라는 의미)
- Master primary functions is :
     > Orchestrate all activities on nodes
     > Know and maintain state within OpenShift environment

0. Node는
 - The Node is an instance of Red Hat Enterprise Linux or Red Hat Atomic Host
   (MASTER와 동급으로 구성된다, 역할이 POD를 가지고 가는 서버로 실제 서비스를 하는놈이라고 보면 됨)
 -  Nodes are where end-user applications, Pods, are run
 -  Nodes are orchestrated by masters

0. POD 란
쉽게 말해 여러개의 docker image로 구동된 Instance를 가질 수 있는 가상의 Container 환경
-.-;; 어렵나???
여하간 Docker의 컨테이너이고 안에 image(APP)야 여러개 구성할 수 있으나 POD = Container로 이해 하믄 되는것 같음

POD 의 내부적인 IP나 할당된 Port는 실제 외부로 서비스 되기 위해서는 물리주소와 Port 로의 메핑이 필요하다 (이 기능은 service 개층에서 추상화 되어 실제 서비스로 제공된다)

- Consists of co-located group of containers with shared resources such as volumes and IP addresses
(컨테이너 그룹에 구성되고 볼륨과 IP를 공유해서 구성됨)
- Smallest compute unit that can be defined, deployed, and managed
(배포의 대상이 되는 가장 작은 단위, 미니언)
- May contain one or more co-located applications that are relatively tightly coupled--run with shared context
(POD에 상호 긴밀하게 구성된 하나 이상의 APP이 배포될 수 다. - 텍스트로 실행됨)


= 역할 =   (Master에 포함된 기능과 각 Layer에 대한 역할)

1. Scheduler 의 역할
-Determines where to place pods  (클러스터에  POD 생성시 POD의 위치결정 - 여유있는 NODE에 POD 생성시 기준생성)
-Reads pod data and finds node that is good fit (POD 데이터를 읽어서 적절한  NODE-여유있는-를 찾아낸다)
-Is independent, standalone, pluggable solution  (독립적이고 단독실행되고 플러깅이 가능하다)

2. Replication Controller 역할
하나로 모자라면 더 생성해서 부하 수용량을 늘리고
만들어진 다음에 안쓰면 줄이는 작업을 주로 담당

-Ensures that the desired number of pods actually exist (설정된 포드의 수를 확인 - 기준에 맞도록 POD의 수를 조정한)
-If pods exit or deleted, replication controller instantiates more (POD가 정지되거나 지워지면 설정한 만큼 생성하는 작업 수행)
-If more pods running than desired, replication controller deletes as many as necessary ( 설정보다 많은 수의 POD가 있으면 줄이는 작업 수행)


3. Routing Layer
Paas 환경은 내부의 APP들이 가지는 IP:Port 정보가 사설 IP라고 보면 된다.
즉 외부 환경과 내부 환경이 분리 된다. 이때 외부에서 내부의 서비스에 접근하기 위해서는
적절한 이름찾기 서비스(DNS)와 실제 IP로 접근하기 위하여 NAT Proxy 기능을 제공해야 한다.
이 부분을  Routing 에서 제공한다.

내부-> 외부  뿐 아니라 내부->내부 접속도 처리한다.

외부(공인IP, FQDN으로 접속) --> 서비스 Layer (여러 POD를 단일 서비스로 추상화) --> Router (적절한 POD로 Proxy 처리)

- Provides for external connectivity into services running on OpenShift (서비스에 외부 연결방법을 제공함)
- Takes care of internal and external requests to/from the applications running on OpenShift (실행되는 APP의 내,외부 요청의 처리, 분기 등)

- Router의 역할 :
- Ingress point for traffic destined for OpenShift services (OC서비스 접속 요청의 수신 지점)
- A mapping of an FQDN and path to the endpoints of a service (URL과 접속경로 메핑)
- The router can run on any node in an OpenShift environment (모든 노드에 라우터 구성이 가능하다.)

4.  Service layer
- Provides abstraction for accessing members of a logical set of pods (논리집합-여러개의 포드, 서비스)에 접근하기 위한 추상화 기능제공)
- Provides abstraction of service endpoints and internal load balancing (endponts 즉 POD의 추상화와 내부 분산기능 수행)

5. software defined network(SDN)의 역할
내부 네트워크...

Allows pods to connect to the network and communicate (POD를 네트워크에 연결하고 통신하도록 한다)

6. 라벨
Pods tagged with labels, services use label selectors to identify pods they proxy to  (서비스계층에서 레이블정보를 기반으로 전달할 POD를 식별한다)
Labels are simple key-value pairs  (단순한 키 페어로 구성된다)
Most resources in OpenShift can be given a label (대부분의  리소스를 레이블링 할 수 있다)


 = POD의 deploy 단계 =
-OpenShift API/authentication layer- Approves request, considering user's permissions, resource quotas, and other information
-OpenShift scheduling layer - Designates node host for each pod, considering resources' availability and load and application spread between nodes for application high availability
-OpenShift node - Pulls down image to be used from external or integrated registry and starts container (pod) on node


=Changed OpenShift Logical Architect=
기존 V2   -   현 V3
Broker - MASTER  :  관리기능및 주요컴포넌트가 운영되는 서버
Mcollective - ocastration은 kubernetes로 : Master와 Node간의 제어를 담당
Gear - POD : 하나의 서버(VM,물리관계없음)에 구성되는 Container, Docker 로 보면 된다
Cartidge - Image : 서비스하는 소프트웨어의 Docker 이미지, Apache, JBoss WAS, Mysql 등등등...만들어도 되고 받아서 해도 된다.

기타

Ansible : Docker Image의 성성 배포 등의 작업에 자동화를 담당하도록...유사한 배포도구가 많이 있으나 RedHat은 이쪽을 미는듯, 범용 Deploy Tool 이므로 여러가지로 사용가능

.이상

댓글 없음:

댓글 쓰기

본 블로그의 댓글은 검토후 등록됩니다.