운영 체제 준비하기

이전 섹션에서 설명한 것처럼, 다양한 VPS 및 클라우드 제공업체가 있습니다. 이들 모두에 대한 가이드를 작성하는 것은 다소 비실용적이지만, 이 섹션에서는 Amazon Web Services에서 호스팅되는 가상 머신을 준비하는 일반적인 워크플로우를 다루겠습니다. 구체적으로, 적절한 가상 하드웨어 구성을 선택하는 방법과 Rocket Pool을 위해 운영 체제를 준비하는 방법을 다룰 것입니다. 해당 제공업체의 생태계에 익숙해지면 이러한 단계를 모든 제공업체에 적용하는 방법을 추론할 수 있을 것입니다.

EC2 가상 머신 생성하기

첫 번째 단계는 아직 계정이 없다면 AWS 계정을 생성하는 것입니다. 해당 링크에 제공된 지침을 따르거나 기존 계정으로 로그인하면, 결국 관리 콘솔 대시보드에 도달하게 됩니다:

다음으로, 화면 오른쪽 상단의 드롭다운을 클릭하여 서버가 물리적으로 위치할 지리적 지역을 선택합니다. 서버가 생성된 후에는 지역 간에 이동할 수 없으므로 실제로 서버를 생성하기 전에 현재 선택한 옵션에 만족하는지 확인해야 합니다.

이제 도구 모음에서 Services를 클릭합니다. Compute 섹션으로 이동하여 EC2를 선택합니다. 대시보드가 다음과 유사한 화면으로 변경됩니다:

주황색 Launch Instance 버튼을 클릭하고 옵션 목록에서 Launch Instance를 선택하여 새 머신을 생성합니다. Amazon Machine Images 마켓플레이스가 표시됩니다. 이들 각각은 사전 설치된 운영 체제 및 일부 다른 유용한 소프트웨어 구성 요소가 있는 머신의 특정 스냅샷을 나타냅니다.

Rocket Pool 노드의 경우, Ubuntu Server 24.04 LTS (HVM) 이미지를 사용하는 것을 권장합니다.

다음으로, Instance Type을 선택해야 합니다. 이것은 머신에서 사용할 수 있는 가상 하드웨어 리소스를 결정합니다.

작성 시점을 기준으로, 다음은 다양한 옵션이 제공하는 것입니다:

InstancevCPUCPU Credits / hourMem (GiB)StorageNetwork Performance
t2.nano130.5EBS-OnlyLow
t2.micro161EBS-OnlyLow to Moderate
t2.small1122EBS-OnlyLow to Moderate
t2.medium2244EBS-OnlyLow to Moderate
t2.large2368EBS-OnlyLow to Moderate
t2.xlarge45416EBS-OnlyModerate
t2.2xlarge88132EBS-OnlyModerate

하드웨어 요구 사항은 실행할 계획인 합의 클라이언트에 크게 의존합니다. 예를 들어, Nimbus는 자체적으로 1GB 미만의 RAM이 필요하므로 t2.large 인스턴스에서 실행하는 것이 완전히 합리적입니다. 더 많은 RAM이 필요한 클라이언트의 경우, 여유 공간을 위해 t2.xlarge 인스턴스를 선택할 수 있습니다.

Tip

인스턴스 유형을 결정하기 전에 ETH 클라이언트 선택하기 섹션을 참조하여 원하는 클라이언트가 선택한 인스턴스 유형에서 지원되는지 확인하는 것이 좋습니다.

선택을 마쳤으면 Next 버튼을 클릭합니다. Instance Details 섹션의 기본 설정은 모두 괜찮으므로 그대로 두고 Next를 클릭합니다.

Add Storage 섹션에 도착하면 시스템용 새 가상 하드 드라이브를 생성합니다. 클라우드의 힘 덕분에 나중에 확장할 수 있으므로 지금 정확한 크기를 얻는 것이 절대적으로 중요하지는 않습니다. 하지만 안심을 위해 크기를 다음 숫자 중 하나로 변경해야 합니다:

  • Hoodi 테스트 네트워크에서 Rocket Pool을 시험해보는 경우 최소 100 GiB를 사용하십시오.
  • 메인 Ethereum 네트워크(메인넷)에서 이 노드를 사용할 경우 최소 1 TiB (가급적 2 TiB)를 사용하십시오.

다른 설정은 기본값으로 두고 Next를 클릭합니다.

Add Tags 단계에서는 click to add a Name tag 버튼을 클릭하고 나중에 서버를 식별하는 데 사용할 수 있는 기억하기 쉬운 이름을 지정해야 합니다. 영감이 필요하다면 Rocket Pool Smartnode와 같은 이름이 좋습니다. 완료되면 Next를 클릭합니다.

Security Group 섹션에서는 Create a new security group 옵션을 선택한 상태로 유지합니다. SmartnodeSmartnode Group과 같은 이름과 설명을 입력합니다. 테이블의 모든 기존 규칙을 제거하고 다음 규칙을 추가합니다:

TypePort RangeSourceDescription
SSH22[Your public IP address at home]SSH Access
Custom TCP30303AnywhereETH1 P2P
Custom UDP30303AnywhereETH1 P2P
Custom TCP9001AnywhereETH2 P2P
Custom UDP9001AnywhereETH2 P2P

이렇게 하면 노트북이나 데스크톱에서 SSH(명령줄 터미널)를 통해 서버에 원격으로 연결할 수 있습니다. 또한 실행 및 합의 클라이언트가 Ethereum 네트워크의 다른 노드에 연결할 수 있습니다.

참고

SSH 액세스의 경우, 고정 공인 IP 주소가 있어야만 작동합니다. 많은 ISP가 동적 IP 시스템을 사용하고 공인 주소를 가끔 변경하므로 ISP에 요청해야 할 가능성이 높습니다. 고정 주소를 확보할 수 없는 경우, IP 주소가 변경될 때마다 AWS 콘솔로 이동하여 새 IP 주소로 이 설정을 업데이트해야 합니다.

보안 그룹 테이블은 이제 다음과 유사해야 합니다:

이제 모든 인스턴스 세부 정보를 검토하여 만족하는지 확인하고 만족하면 Launch를 클릭합니다. SSH key pair 프롬프트가 나타나면 Create a new key pair를 선택합니다. Smartnode Key와 같은 기억하기 쉬운 이름을 지정한 다음 Download Key Pair를 클릭합니다. 다른 키가 일반적으로 있는 ~/.ssh/ (또는 Windows의 경우 C:\Users\[your username]\.ssh\)와 같이 안전한 곳에 이러한 파일을 저장합니다.

Danger

이 키 쌍에는 머신에 SSH로 접속하는 데 사용할 개인 키가 포함되어 있습니다. 누군가가 이 키를 손에 넣으면 Rocket Pool 노드 지갑 및 그 안에 있는 모든 코인을 포함하여 노드에 완전히 액세스할 수 있습니다. 이 파일을 항상 안전하게 보관해야 합니다.

다음으로 Launch Instance를 클릭하여 새 가상 서버를 생성합니다. 알림이 나타나면 View Instances를 클릭하여 서버 목록으로 이동합니다. Rocket Pool 노드가 구성 및 상태에 대한 일부 세부 정보와 함께 표시됩니다.

마지막으로, 머신에 Elastic IP Address를 할당합니다. 이것은 AWS 전용 고정 IP 주소라고 생각할 수 있습니다. 노드는 항상 이 주소에서 액세스할 수 있으므로 항상 동일한 SSH 명령을 사용하여 연결할 수 있습니다.

왼쪽 탐색 패널의 Network and Security로 이동하여 Elastic IPs를 클릭합니다. 이제 Allocate Elastic IP Address를 클릭합니다. 기본 설정은 모두 괜찮으므로 프롬프트를 클릭하여 완료하면 목록으로 돌아갑니다.

다음으로, 목록에서 새 주소를 선택합니다. 그 위에 있는 Actions 버튼을 클릭한 다음 Associate Elastic IP Address를 클릭합니다. 리소스 유형을 Instance로 설정된 상태로 두고 방금 생성한 Rocket Pool Smartnode 인스턴스를 목록에서 선택합니다. Associate를 클릭하여 가상 서버에 주소를 할당합니다. 이제 주소의 Associated Instance ID 열 아래를 보면 머신이 할당되어 있는지 확인할 수 있습니다.

머신에 액세스하기

머신에 액세스하려면 Linux 또는 macOS에서 새 터미널을 엽니다 (Windows에서는 Powershell을 사용). 다음 명령을 입력합니다:

ssh [your elastic IP address]

.ssh 폴더에 키를 저장했다면, 설정 중에 생성한 개인 키 쌍을 사용하여 머신과 자동으로 인증합니다. 사용자 이름도 비밀번호도 필요 없습니다.

여기에 도착하면 시스템에 대한 완전한 터미널 액세스 권한이 있습니다.

Swap 공간 설정하기

대부분의 경우, 실행 및 합의 클라이언트와 인스턴스 유형을 신중하게 선택하면 RAM이 부족해서는 안 됩니다. 그렇긴 하지만, 조금 더 추가하는 것이 나쁠 것은 없습니다. 지금 우리가 할 일은 swap 공간이라는 것을 추가하는 것입니다. 본질적으로, 우리는 무언가 끔찍하게 잘못되어 서버가 일반 RAM이 부족한 경우를 대비하여 SSD를 "백업 RAM"으로 사용할 것입니다. SSD는 일반 RAM만큼 빠르지 않으므로 swap 공간에 도달하면 속도가 느려지지만, 완전히 충돌하여 모든 것을 망가뜨리지는 않습니다. 이것을 (대부분) 절대 필요하지 않을 추가 보험이라고 생각하십시오.

Swap 파일 생성하기

첫 번째 단계는 swap 공간 역할을 할 새 파일을 만드는 것입니다. 사용할 양을 결정하십시오. 합리적인 시작은 8 GB이므로 총 16 GB를 위해 8 GB의 일반 RAM과 8 GB의 "백업 RAM"이 있습니다. 매우 안전하게 하려면 24 GB로 만들어 시스템에 총 32 GB를 위해 8 GB의 일반 RAM과 24 GB의 "백업 RAM"이 있지만, 이것은 아마도 과도할 것입니다. 다행히도 SSD에 1TB 또는 2TB의 공간이 있으므로 swapfile에 8~24 GB를 할당하는 것은 무시할 수 있습니다.

이 안내서에서는 적당한 중간 지점을 선택하겠습니다. 총 RAM 24 GB를 위해 16 GB의 swap 공간을 선택하겠습니다. 진행하면서 원하는 숫자를 대체하기만 하면 됩니다.

이것을 입력하면 /swapfile이라는 새 파일이 생성되고 16 GB의 0으로 채워집니다. 양을 변경하려면 count=16의 숫자를 원하는 것으로 변경하기만 하면 됩니다. 이것은 오래 걸릴 것이지만 괜찮습니다.

sudo dd if=/dev/zero of=/swapfile bs=1G count=16 status=progress

다음으로, 루트 사용자만 읽거나 쓸 수 있도록 권한을 설정합니다 (보안을 위해):

sudo chmod 600 /swapfile

이제 swap 파일로 표시합니다:

sudo mkswap /swapfile

다음으로 활성화합니다:

sudo swapon /swapfile

마지막으로, 서버가 재부팅될 때 자동으로 로드되도록 마운트 테이블에 추가합니다:

sudo nano /etc/fstab

다음과 같은 새 줄을 끝에 추가합니다:

/swapfile                            none            swap    sw              0       0

Ctrl+OEnter를 눌러 저장한 다음 Ctrl+XEnter를 눌러 종료합니다.

활성화되었는지 확인하려면 다음 명령을 실행합니다:

sudo apt install htop
htop

출력은 상단에서 다음과 같아야 합니다:

Swp로 레이블이 지정된 마지막 행의 두 번째 숫자(/ 뒤의 숫자)가 0이 아니면 모든 설정이 완료된 것입니다. 예를 들어, 0K / 16.0G를 표시하면 swap 공간이 성공적으로 활성화되었습니다. 0K / 0K를 표시하면 작동하지 않았으므로 이전 단계를 올바르게 입력했는지 확인해야 합니다.

q 또는 F10을 눌러 htop을 종료하고 터미널로 돌아갑니다.

Swappiness 및 Cache Pressure 구성하기

기본적으로 Linux는 시스템 RAM의 압력을 줄이기 위해 많은 swap 공간을 적극적으로 사용합니다. 우리는 그것을 원하지 않습니다. SWAP에 의존하기 전에 마지막 순간까지 모든 RAM을 사용하기를 원합니다. 다음 단계는 시스템의 "swappiness"를 변경하는 것입니다. 이것은 기본적으로 swap 공간을 사용하려는 열망입니다. 이것을 어떤 값으로 설정할지에 대한 많은 논쟁이 있지만, 6의 값이 충분히 잘 작동한다는 것을 발견했습니다.

또한 "cache pressure"를 낮추고 싶습니다. 이것은 서버가 파일 시스템의 캐시를 얼마나 빨리 삭제할지를 지시합니다. 우리 설정으로 많은 여유 RAM이 있을 것이므로, 이것을 "10"으로 만들 수 있습니다. 이렇게 하면 캐시가 메모리에 잠시 남아서 디스크 I/O가 감소합니다.

이것들을 설정하려면 다음 명령을 실행합니다:

sudo sysctl vm.swappiness=6
sudo sysctl vm.vfs_cache_pressure=10

이제 재부팅 후 다시 적용되도록 sysctl.conf 파일에 넣습니다:

sudo nano /etc/sysctl.conf

끝에 다음 두 줄을 추가합니다:

vm.swappiness=6
vm.vfs_cache_pressure=10

그런 다음 이전처럼 저장하고 종료합니다 (Ctrl+O, Ctrl+X).

이것으로 서버가 가동되어 실행 중이며 Rocket Pool을 실행할 준비가 되었습니다! ETH 클라이언트 선택하기 섹션으로 이동하십시오.