본문 바로가기
Data-driven Methodology/Hadoop

[Hadoop] SSH 및 호스트 이름 설정

by goatlab 2024. 6. 21.
728x90
반응형
SMALL

로컬 PC SSH 설정

 

배포된 6개의 인스턴스끼리 SSH 통신이 가능하도록 설정하고 각 서버의 호스트 이름을 설정한다.

 

# config 편집
vim ~/.ssh/config
Host master1
        HostName 100.100.100.101
        User ubuntu
        IdentityFile ~/hadoop-keypair.pem

Host master2
        HostName 100.100.100.102
        User ubuntu
        IdentityFile ~/hadoop-keypair.pem

Host master3
        HostName 100.100.100.103
        User ubuntu
        IdentityFile ~/hadoop-keypair.pem

Host slave1
        HostName 100.100.100.104
        User ubuntu
        IdentityFile ~/hadoop-keypair.pem

Host slave2
        HostName 100.100.100.105
        User ubuntu
        IdentityFile ~/hadoop-keypair.pem

Host slave3
        HostName 100.100.100.106
        User ubuntu
        IdentityFile ~/hadoop-keypair.pem

 

ssh config 편집 후 로컬에서 master1, master2, master3, slave1, slave2, slave3으로 접속 가능한지 테스트한다.

 

ssh master1
exit
ssh master2
exit
ssh master3
exit
ssh slave1
exit
ssh slave2
exit
ssh slave3
exit

 

Cluster로 구성할 Hosts 파일 설정

 

master1 서버 hosts 파일 을편집한다. master1 서버로 접속해서 hosts 파일에 각 서버의 Private IP와 hostname을 등록한다.

 

# 로컬에서 master1 서버 접속
ssh master1

# hosts 파일 편집
$ sudo vim /etc/hosts
100.100.100.101 master1
100.100.100.102 master2
100.100.100.103 master3
100.100.100.104 slave1
100.100.100.105 slave2
100.100.100.106 slave3

 

각 인스턴스 서버의 호스트 이름을 설정한다.

 

sudo hostnamectl set-hostname master1
exit
ssh master1

ssh master2
sudo hostnamectl set-hostname master2
exit

ssh master3 
sudo hostnamectl set-hostname master3
exit

ssh slave1
sudo hostnamectl set-hostname slave1
exit

ssh slave2
sudo hostnamectl set-hostname slave2
exit

sudo hostnamectl set-hostname slave3
exit
ssh slave3

 

모든 인스턴스에 Hosts 파일 복제

 

master1에서만 진행한다.

 

cat /etc/hosts | ssh master2 "sudo sh -c 'cat >/etc/hosts'"
cat /etc/hosts | ssh master3 "sudo sh -c 'cat >/etc/hosts'"
cat /etc/hosts | ssh slave1 "sudo sh -c 'cat >/etc/hosts'"
cat /etc/hosts | ssh slave2 "sudo sh -c 'cat >/etc/hosts'"
cat /etc/hosts | ssh slave3 "sudo sh -c 'cat >/etc/hosts'"
cat /etc/hosts 이 명령은 로컬 시스템에서 /etc/hosts 파일의 내용을 출력
| (파이프) 앞의 명령(cat /etc/hosts)의 출력을 뒤의 명령(ssh master2 "sudo sh -c 'cat >/etc/hosts'"`)의 입력으로 전달
ssh master2 "sudo sh -c 'cat >/etc/hosts'"
  • ssh master2: 로컬 시스템에서 원격 시스템 master2에 SSH를 통해 접속
  • "sudo sh -c 'cat >/etc/hosts'"`: SSH를 통해 접속한 후, 원격 시스템에서 sudo 명령을 사용하여 루트 권한으로 쉘 (sh)을 실행한다. 이 쉘은 cat 명령을 실행하여 표준 입력으로 받은 내용을 /etc/hosts 파일에 덮어쓴다.

 

그 다음, 로컬 PC에서 Public IP로 세팅한다.

 

sudo vi /etc/hosts

100.1.1.100 master1
100.1.1.101 master2
100.1.1.102 master3
100.1.1.103 slave1
100.1.1.104 slave2
100.1.1.105 slave3
dscacheutil -flushcache
728x90
반응형
LIST