CoreOS 시스템 구성 요소 소개

CoreOS 시스템 구성 요소 소개

2022-06-01 last update

5 minutes reading Scaling System Tools Conceptual Docker CoreOS Clustering

상태: 만료


이 문장은 더 이상 최신이 아니다.본문 작성에 관심이 있으시면 DigitalOcean wants to publish your tech tutorial을 참고하세요!
원인:
2016년 12월 22일, CoreOS는 더 이상 차량 팀을 유지하지 않겠다고 발표했다.CoreOS는 Kubernetes를 사용하여 모든 클러스터 요구 사항을 충족하는 것이 좋습니다.
다음을 참조하십시오.
함대가 없는 CoreOS에서 Kubernetes를 사용하는 방법에 대한 지침은 Kubernetes on CoreOS Documentation을 참조하십시오.

CoreOS란 무엇입니까?


CoreOS는 다양한 인프라스트럭처의 대규모 확장 가능한 배포를 관리하기 위한 강력한 Linux 릴리스입니다.Chrome OS의 구축을 바탕으로 CoreOS는 경량급 호스트 시스템을 유지하고 모든 응용 프로그램에 Docker 용기를 사용합니다.이 시스템은 프로세스 격리를 제공하고 전체 집단에서 응용 프로그램을 쉽게 이동할 수 있도록 한다.
이러한 집단을 관리하기 위해 CoreOS는 etcd이라는 전역 분포식 키 값 저장소를 사용하여 노드 간에 설정 데이터를 전달합니다.이 구성 요소는 공유 자원에서 사용할 수 있는 정보에 따라 응용 프로그램을 동적 설정할 수 있는 서비스 발견 플랫폼이기도 하다.
전체 집단 스케줄링과 관리 응용 프로그램에 fleet이라는 도구를 사용했습니다.Fleet은 그룹 범위의 init 시스템으로 전체 그룹의 프로세스를 관리하는 데 사용됩니다.따라서 고가용성 어플리케이션과 클러스터 관리를 단일 지점에서 쉽게 구성할 수 있습니다.그것은 각 노드에 연결된 systemd init 시스템을 통해 이 점을 실현한다.
이 안내서에서 핵심 CoreOS 개념을 소개하고 시스템 작업을 허용하는 모든 핵심 구성 요소를 소개합니다.뒤의 지침에서 우리는 how to get started with CoreOS on DigitalOcean을 토론할 것이다.

시스템 설계


CoreOS 설치의 전체적인 디자인은 집단화와 용기화를 위한 것이다.
주 호스트 시스템은 상대적으로 간단하여 전통적인 서버에서 흔히 볼 수 있는 많은 기능을 포기했다.사실 CoreOS에는 패키지 관리자도 없습니다.반대로 모든 다른 응용 프로그램은 Docker 용기로 실행되어 서비스의 격리, 이식성, 외부 관리를 실현해야 한다.
안내할 때, CoreOS는 "cloud config"라는 사용자가 제공한 프로필을 읽어서 초기 설정을 합니다.이 파일은 CoreOS가 그룹의 다른 구성원과 연결되고 기본 서비스를 시작하며 중요한 매개 변수를 다시 설정할 수 있도록 합니다.이것이 바로 CoreOS가 집단을 만들 때 즉시 작업 단원으로 집단에 가입할 수 있는 방식이다.
일반적으로'클라우드 설정'파일은 최소한 호스트에게 기존 집단에 가입하는 방법을 알려주고 호스트에게 etcdfleet이라는 두 개의 서비스를 시작하라고 명령한다.이 세 가지 동작은 모두 관련이 있다.그것들은 새 호스트를 기존 서버와 연결할 수 있고 집단의 각 노드를 설정하고 관리하는 데 필요한 도구를 제공한다.기본적으로 이것들은 CoreOS 노드를 집단으로 인도하는 요구이다.etcd 데몬은 클러스터의 각 호스트에 데이터를 저장하고 배포하는 데 사용됩니다.이것은 설정의 일치성을 유지하는 데 도움이 되고 플랫폼으로서 서비스는 이 플랫폼을 통해 자신의 정보를 발표할 수 있다.다른 서비스는 이 서비스 검색 메커니즘을 사용하여 정보를 조회하여 설정의 상세한 정보를 조정할 수 있다.예를 들어 부하 평형기는 시작할 때 etcd여 개의 백엔드 웹 서버의 IP 주소를 조회할 수 있다.fleet 수호 프로그램은 기본적으로 분포식 초기화 시스템이다.그것은 호스트마다 연결된 systemd init 시스템을 통해 작동합니다.그것은 서비스 스케줄링을 처리하고 사용자가 정의한 표준에 따라 배치 목표를 제약한다.사용자는 집단을 fleet의 단일 단원으로 개념화할 수 있으며 서버마다 걱정할 필요가 없다.
현재, 당신은 이미 전체 시스템에 대해 대체적인 이해를 가지고 있으며, 우리는 모든 특정 구성 요소에 대한 더 많은 세부 사항을 이해할 수 있습니다.이 캐릭터들 하나하나를 이해하는 것이 중요하다.

Docker 기본 개요


Docker는 LXC(Linux 컨테이너라고도 함)를 이용한 컨테이너화 시스템으로 내부 핵 이름 공간과 cGroup을 사용하여 프로세스를 격리합니다.
격리는 응용 프로그램의 운영 환경을 깨끗하고 예측 가능하게 유지하는 데 도움이 된다.그러나 이 시스템의 주요 장점 중 하나는 소프트웨어 분배를 보잘것없게 하는 것이다.Docker 컨테이너는 운영 환경에 관계없이 완전히 동일하게 실행될 수 있어야 합니다.이것은 노트북에 구축된 용기가 데이터 센터 범위의 집단에서 빈틈없이 운행할 수 있다는 것을 의미한다.
Docker를 사용하면 필요한 모든 의존 관계를 가진 작업 소프트웨어 환경을 배포할 수 있습니다.Docker 컨테이너는 다른 컨테이너와 나란히 실행되지만 별도의 서버로 사용됩니다.Docker 컨테이너가 가상화에 비해 장점은 Docker가 전체 운영체제를 모의하지 않고 응용 프로그램을 실행하는 데 필요한 구성 요소만 실현하는 데 있다.그렇기 때문에 Docker는 가상화의 많은 이점을 가지고 있지만 막대한 자원 비용이 들지 않습니다.
CoreOS는 Docker 컨테이너를 기본 설치에 포함된 소형 소프트웨어 세트 이외의 모든 소프트웨어에 사용합니다.이것은 거의 모든 내용이 하나의 용기에서 실행되어야 한다는 것을 의미한다.처음에는 귀찮아 보였지만 집단 편성이 간단해졌다.CoreOS의 디자인은 주로 집단 단계에서 조작하는 것이지 단일 서버 단계에서 조작하는 것이 아니다.
이로 인해 CoreOS에서 서비스를 배포하고 부하를 분산하는 것이 쉬워졌습니다.포함된 도구와 서비스는 제공된 제약 범위 내의 모든 사용 가능한 노드에서 프로세스를 시작할 수 있도록 합니다.Docker는 이 서비스와 작업을 각 노드에 설정해야 하는 프로그램이 아니라 자체적으로 포함된 블록으로 배포할 수 있도록 합니다.

Etcd의 기본 개요


집단의 모든 노드에 일치된 전역 데이터를 제공하고 서비스 발견 기능을 사용하기 위해 etcd이라는 서비스를 개발했다.
etcd 서비스는 고도로 사용할 수 있는 키 값 저장소로 모든 노드에서 설정 데이터를 얻고 실행 중인 서비스에 대한 정보를 조회하며 다른 구성원들이 알아야 할 정보를 발표할 수 있습니다.모든 노드는 자신의 etcd 클라이언트를 실행합니다.이러한 구성은 클러스터의 다른 클라이언트와 통신하여 정보를 공유하고 배포하는 데 사용됩니다.
저장소에서 정보를 검색하려는 프로그램은 로컬 컴퓨터의 etcd 인터페이스에 연결하기만 하면 된다.모든 etcd 데이터는 각 노드에서 사용할 수 있으며, 실제 어디에 저장되든지 간에 모든 저장된 값은 전체 집단에서 자동으로 분배되고 복제될 것이다.지도자 선거도 자동으로 처리되어 키 저장의 관리가 상당히 간단하다.
etcd 데이터와 상호작용하려면 간단한 HTTP/JSON API(기본적으로 http://127.0.0.1:4001/v2/keys/에 접근할 수 있음)를 사용하거나 etcdctl이라는 유틸리티를 사용하여 데이터를 조작하거나 읽을 수 있습니다.etcdctl 명령과 HTTP API는 스토리지와 상호 작용하는 간단하고 예측 가능한 방식입니다.
Docker 컨테이너에서 실행되는 응용 프로그램도 HTTP API에 액세스할 수 있음을 인식해야 합니다.이것은 단일 용기의 설정이 etcd에 저장된 값을 고려할 수 있음을 의미한다.

차대 기본 개황


구축 중인 CoreOS 클러스터를 실제로 조정하기 위해 fleet이라는 도구를 사용합니다.fleet가 집단 범위를 충당하는 init 시스템이라는 상당히 간단한 개념
집단 환경의 모든 노드는 자신의 전통적인 systemd init 시스템을 실행한다.이것은 로컬 컴퓨터에서 서비스를 시작하고 관리하는 데 사용됩니다.간단하게 말하자면fleet이 하는 일은 집단 구성원의 systemd 시스템을 제어할 수 있는 인터페이스를 제공하는 것이다.
서비스를 시작하거나 중지하거나 전체 그룹에서 프로세스를 실행하는 상태에 대한 정보를 얻을 수 있습니다.그러나fleet은 가용성을 높이기 위해 중요한 일을 했다.이것은 프로세스 분배 메커니즘을 처리하기 때문에 그다지 바쁘지 않은 호스트에서 서비스를 시작할 수 있다.
실행 중인 서비스에 대한 배치 조건을 지정할 수도 있습니다.일부 호스트에서 서비스가 실행되어야 하거나 실행될 수 없다는 것을 견지할 수 있습니다. 이것은 그들의 위치, 이미 실행된 내용 등에 달려 있습니다.fleet는 시스템d를 이용하여 로컬 프로세스를 시작하기 때문에 서비스의 모든 파일은 시스템d 단원 파일입니다. (사용자 정의 옵션이 있습니다.)이 설정 파일을 함대에 한꺼번에 전달하고 전체 집단을 관리할 수 있습니다.
이러한 유연성은 고가용성 구성을 단순하게 설계합니다.예를 들어, 모든 웹 서버 용기를 단독 노드에 배치할 것을 요구할 수 있습니다.이와 유사하게, 부모 용기를 실행하는 노드에만 조수 용기를 배치할 수 있습니다.
모든 구성원 노드는 fleetctl 유틸리티를 사용하여 그룹을 관리할 수 있습니다.이렇게 하면 서비스를 계획하고 노드를 관리하며 시스템의 일반 상태를 볼 수 있습니다.fleetctl 프로그램은 그룹과 주 인터페이스가 될 것입니다.

결론


CoreOS는 대부분의 다른 Linux 릴리스와 다를 수 있습니다.모든 디자인 결정은 집단 관리의 용이성과 응용 프로그램의 이식성을 고려했다.따라서 현대 인프라스트럭처와 애플리케이션 확장의 요구 사항을 충족시키기 위해 강조되고 강력한 기능을 갖춘 릴리스가 탄생했습니다.
어떻게 시작하는지에 대한 더 많은 정보를 알고 싶으시면 저희 안내서를 보십시오. 전화: getting a CoreOS cluster up and running on DigitalOcean.