선출 된 검증 자 96 개 생성 방법

(Indika) (Sep 5, 2019)

마지막으로 기사를 게시 한 것은 5 년 전, 제목은 Cooking a web server with Chef 였습니다. 5 년은 쓰지 않기에는 긴 시간입니다. 내가 그 주제에 흥미를 잃은 것이 아닙니다. 대신 나는 최고로부터 조용히 배우고 있었다.

그러나 토론의 주제는 지금은 훨씬 더 커졌다는 것을 제외하고는 변하지 않았습니다. 그 당시 저는 단일 웹 서버를 쿠킹하고 있었는데 지금은 96 개의 EV (Elected Verifier)를 생성하고 있습니다.

왜 96 개인가요?

통일에서는 기본 합의 알고리즘을 변경하고 있습니다. 이더 리움. Distributed Stake Governance 구현에는 블록 검증 안팎으로 순환하는 24 개의 EV 그룹 4 개가 포함됩니다. 이러한 로테이션의 거버넌스는 투표 및 스테이 킹 과정을 통해 촉진됩니다. 최종 결과는 더 분산 된 컨소시엄 네트워크입니다.

백서와 시뮬레이션에서이 주제를 이론화하는 것은 지금까지만 가능합니다. 앞으로 나아갈 수있는 가장 좋은 방법은 그것을 제작하고, 가지고 놀며, 결점을 경험하는 것입니다.

지속적인 전달

우리는 아이디어를 빠르게 평가할 수있는 위치에 있기를 원합니다. . 테스트 주도 개발은 단위 테스트 작성에만 국한 될 필요가 없습니다.

주어진 Git SHA에 대해 단일 명령을 실행하여 Mainchain의 모든 버전을 가동하고 상태를 평가 한 다음 DNA 개선.

우리는 생산 준비가 된 것이 있다고 믿을 때까지이 프로세스를 계속 개선하고 싶습니다. 소프트웨어 개발 프로세스는 단순한 반복에 불과합니다.

시스템이 복잡해질수록 이러한 각 부분은 더 어려워집니다. 96 개의 EV를 인스턴스화하는 것은 사소한 문제이며이 문서의 초점입니다.

정의

배포 할 대상을 정의하는 것부터 시작합니다. 인스턴스화 된 클러스터는 대부분 EV로 구성되며, 그중 일부는 RPC를 활성화하고 나머지는 활성화하지 않습니다. 클러스터에는 UND 수도꼭지, 블록 탐색기 및 모니터링 노드도 포함될 수 있습니다.

이러한 클러스터는 JSON 파일로 지정되며 프로비저닝 스택의 목적에 따라 가능합니다.

클러스터 내의 모든 노드에는 고유 한 핸들이 필요합니다. 다음 주소 지정 스키마가 선택됩니다.

x = "{cluster\_name}-{configuration}-{instance\_type}-{index}"

예 :

alpha-basic-ev-1

위의 설명에서 “기본”이라는 단어는 4 개의 EV와 1 개의 블록 탐색기가있는 구성을 나타냅니다. 알파라는 단어는 실험의 이름입니다.

스택

Kubernetes와 함께 할 수있었습니다.

그러나 우리는 또한 투자를 원합니다. 커뮤니티가 자체 EV를 출시하는 데 사용할 수있는 도구를 만듭니다. 단순성 때문에 Ansible을 선택하고 CentOS를 대상으로하는 플레이 북은 모든 아키텍처에서 작동하거나 쉽게 적용 할 수 있습니다.

또한 과거에 Chef와 Puppet을 모두 평가했지만 저는 Ansible의 단순성을 위해 둘 다 버렸습니다. Chef와 Puppet은 대상 머신에 소프트웨어 구성 요소가 필요하지만 Ansible은 SSH 연결 만 필요합니다.

스택과 관련하여 여기에는 양자 물리학이 없습니다. 성공을 위해 필요한 단계입니다. 스택은 다음으로 구성됩니다.

  • AWS 사용자 및 AWS API
  • AWS 시작 템플릿
  • AWS 태그
  • 최소한의 bash 시작 script
  • Github에서 bash 스크립트 컬링
  • 태그에서 Ansible 호스트 변수 구성
  • Ansible을 사용하여 호스트 프로비저닝

AWS API 및 AWS 사용자

AWS는 API 및 허가 된 사용자를 통해 IT 서비스에 대한 매우 세분화 된 제어를 제공합니다. API는 Python boto3 라이브러리를 통해 적절하게 액세스 할 수 있습니다. API 사용의 선구자는 IAM 인터페이스를 통해 관련 사용자를 생성하는 것입니다. 사용자는 일반적인 사용자 액세스 ID 및 비밀 쌍입니다.

사용자는 하나 이상의 정책에 연결될 수 있습니다. 정책은 리소스 집합에 대한 허용 또는 거부 된 작업 집합으로 구성됩니다.

스폰 사용자에게는 EC2 인스턴스를 생성하는 최소한의 작업과 전체 리소스 세트를 읽는 작업이 연결된 정책이 있습니다.

시작 템플릿

AWS가 제공하는 주요 기능 중 하나는 시작 템플릿입니다.

시작 템플릿을 사용하면 기본 AMI (인스턴스를 구축 할 가상 머신 이미지의 식별자)를 지정하고 사전 구성 할 수 있습니다. 두 가지 필수 구성 요소 인 태그와 스크립트 실행을 포함한 설정. 또한 머신이 속해야하는 보안 그룹을 지정할 수 있습니다.

시작 템플릿의 버전을 지정할 수 있으며 AWS 사용자로부터 인스턴스를 시작할 수 있습니다.

태그

모든 EC2 인스턴스는 구성된 태그에 따라 고유합니다. 다음 정보가 노드로 전송됩니다.

  • 이름 (노드의 고유 식별자)
  • 클래스 (인스턴스 유형)
  • 인덱스 ( 인스턴스 위치)
  • 구성 (인스턴스화되는 다양한 클러스터)
  • SHA (Git SHA)
  • RegistrationIP ( 등록 타워)

각 태그는 Ansible 호스트 변수에 설정됩니다.

Bash로 부트 스트랩 핑

Bash 부트 스트랩 스크립트는 호스트를 준비합니다. 프로비저닝을 위해. 수행되는 작업 중 일부는 기본 Python 환경을 설치하고, AWS 태그를 구문 분석하고,이를 Ansible 호스트 vars 파일에 쓰고, 노드 유형에 적합한 Ansible 플레이 북을 선택하는 것입니다.

Ansible

마지막으로 노드는 Ansible로 프로비저닝됩니다. 인터넷에 다른 리소스가 충분하므로 Ansible로 전환하지 않겠습니다. 일반적으로 Ansible을 사용하여 원격 서버를 구성한다는 점을 제외하고 여기에는 특별한 것이 없지만 우리의 경우 로컬 서버를 구성하고 있습니다.

Registration Tower

Registration Tower를 사용합니다. 네트워크를 부트 스트랩하기 위해 부트 노드 대신. EV는 등록 노드로 인스턴스화 할 때 IP 주소를 등록하고 서비스 활성화 전에 정적 노드 목록을 얻습니다.

이러한 Tower를 사용하는 이점은 상태 통계와 같은 임의의 데이터를 등록하여 평가 루프를 닫을 수 있다는 것입니다.

EV가 인스턴스화되면 등록 API에 클러스터 이름, IP 주소, 인덱스 및 인스턴스 유형을 기록합니다.

평가

평가의 주요 초점은 방법을 결정하는 것입니다. 실험은 성공적이었습니다. 성공의 조건은 다른 기사에서 다룰 것입니다. 하지만 즉각적인 측정 항목은 비용입니다.

t2-micro 인스턴스의 가격은 시간당 0.012입니다. 이 중 96 개를 1 시간 동안 실행하는 데 드는 비용은 1 달러에 불과합니다. 비용 탐색기에서 확인할 수 있습니다.

추가

이 스택은 멋지게 작동합니다. 하나의 명령으로 일관되고 완벽하게 완벽하게 연결된 블록 전파 메인 체인을 불러옵니다. 이 스택에 대해 내가 가장 좋아하는 것은 그것이 불이고 잊어 버린다는 것입니다. 클러스터를 인스턴스화하고 인터넷 연결을 끊고 저글링 할 수 있습니다. 내가 돌아 오면 메인 체인이 준비 될 것입니다.

이것은 다음 단계를위한 강력한 토대 역할을합니다. 컨센서스 DNA의 다양한 구성을 평가할 수 있습니다. 우리는 현재의 간단한 합의 알고리즘을 성숙시키고 잔인한 현실에 대해 평가할 것입니다.“분산 지분 거버넌스”라는 제목의 다음 기사에서.

EV 프로비저닝 스택의 소스 코드는 여기에서 찾을 수 있습니다. https://github.com/unification-com/ev-provision

Unification Gitter에 참여하세요 : https://gitter.im/unification-com

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다