AWS에 하이퍼레저 서버 구성

leekyungryul·2023년 11월 13일
0

하이퍼레저

목록 보기
1/3

회사에서 구현하고 있는 헬스케어 솔루션 시스템에 하이퍼레저를 연계하여 회원 생체정보를 블록체인으로 저장하는 기능을 담당하게 되어 몇달간 학습 및 기능을 구현하면서 가상머신에서 멀티호스트를 생성해서 도커스웜으로 연결하는건 부하도 많아지고 여러모로 불편함이 많이 느껴져 aws에서 멀티 호스트를 구성해서 띄워야겠다고 약 몆주간 고민하고 고민하다 드디어 어제 방안을 찾아내어 오늘 기본 프로젝트를 완성해보았다.

가상머신에서 aws로 이동하지 못했던 이유는 aws EC2인스턴스간 통신을 하는 방법을 찾지 못했다...
그래서 vpc, subnet등 aws의 네트워크 구조에 대해 유투브로 학습하다가 이것도 해결방안은 되지 못함을 깨닫고 검색을 하다가 보안그룹을 이용하면 가능하다는것을 알게 되었다.

ec2 인스턴스 만들기

  • 기본 이미지는 centos7
  • 인스턴스 유형은 t2.large

  • 네트워크 설정에서 새로운 보안그룹을 생성한다.
  • 아무런 추가 없이 이름만 변경한다
  • 이후 수정 예정임

  • 잠시 기다리면 인스턴스가 실행된다.

centos 환경설정

  • 해당 인스턴스에 접속해서 외부 접속이 잘 되는지 확인
  • root계정의 비밀번호 설정
sudo passwd root
  • root 계정으로 전환
su
  • root 계정 ssh 접속허용
    root계정으로 작업을 해야 하므로 ssh 접속을 허용한다.

[참고]https://tecadmin.net/how-to-enable-ssh-as-root-on-aws-ubuntu-instance/

  1. docker 설치
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
curl -SL https://github.com/linuxserver/docker-docker-compose/releases/download/1.29.2-ls51/docker-compose-arm64 -o /usr/local/bin/docker-compose
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
chmod a+x /usr/local/bin/docker-compose
systemctl enable docker
systemctl start docker
  1. fablic 설치
curl -sSLO https://raw.githubusercontent.com/hyperledger/fabric/main/scripts/install-fabric.sh
chmod +x install-fabric.sh​
./install-fabric.sh

위의 스크립트를 실행하여도 fablic-samples파일이 다운로드 되지 않는다.
이유는 확인이 필요하다.
파일질라를 이용해서 기존에 받아두었던 파일을 sftp로 업로드 한다.

  1. 방화벽 개방
yum install firewalld
systemctl start firewalld
firewall-cmd --zone=public --permanent --add-port=2377/tcp
firewall-cmd --zone=public --permanent --add-port=2377/udp
firewall-cmd --zone=public --permanent --add-port=7946/tcp
firewall-cmd --zone=public --permanent --add-port=7946/udp
firewall-cmd --zone=public --permanent --add-port=4789/tcp
firewall-cmd --zone=public --permanent --add-port=4789/udp
firewall-cmd --reload
firewall-cmd --zone=public --list-all

ec2머신의 방화벽해제는 외부에서 보안그룹에 추가하여야 한다.

  1. 호스트명 설정
    첫번째 인스턴스는 마스터로 해준다.
hostnamectl set-hostname master
reboot
  1. 기타 도구 설치
yum install -y epel-release​
yum install –y jq
yum install tree
yum install wget
  1. Go 설치
wget https://go.dev/dl/go1.21.3.linux-amd64.tar.gz
rm -rf /usr/local/go && tar -C /usr/local -xzf go1.21.3.linux-amd64.tar.gz
vi /etc/profile
export PATH=$PATH:/usr/local/go/bin 추가
source /etc/profile
go version으로 설치확인

인스턴스 간 통신을 위하여 보안그룹 인바운드 규칙 편집

현재의 보안그룹을 self로 추가하여 준다.

인스턴스를 이미지로 만들어서 복제하기


이미지 복제 참고

  • 만들어진 이미지로 인스턴스를 생성한다.
  • 템플릿으로 인스턴스 시작 클릭

  • 마스터를 제외하고 나머지 3개의 인스턴스를 추가할것이므로 인스턴스 개수는 3으로 설정한다.

  • 위의 root 계정 ssh 접속허용하는 절차에서 .ssh/authorized_keys 파일을 다시 수정해 주어야 한다.
  • hostname또한 해당 서버에 맞춰 수정해준다.(slave1,2,3)
  • reboot

docker swarm설정

master 서버에서

docker swarm init --advertise-addr 172.31.9.66

위의 코드를 실행하면

docker swarm join --token SWMTKN-1-3yqn0p01w79fuegjm0q5zwqxurqkxs523hq4ujsv6zr0v6p56d-9b4n3jr9etkwklo90khzmhmln 172.31.9.66:2377

노드에 조인하려면 위와 같은 코드를 입력하라고 나올것이다
복사해서 나머지 서버에 모두 실행한다.

docker node ls

모든 slave서버가 join되었다.
slave서버들을 promote시켜준다.

docker node promote slave1
docker node promote slave2
docker node promote slave3

기본 프로젝트 업로드

파일질라로 미리 준비된 프로젝트를 fablic-samples 디렉터리 아래에 붙여넣어준다.

  • master
  • slave1
  • slave2
  • slave3

인증서 생성

  • 인증서를 생성하기 전에 기존에 생성된 파일을 정리하기 위해서
./kopo-network.sh down

위 명령어를 실행한다.

  • 인증서 서버 실행
  • master서버에서 인증서 서버를 구동해서 생성되는 인증서를 나머지 서버에 동일하게 복사해넣는다.

업로드중..

profile
끊임없이 노력하는 개발자

0개의 댓글