2023.11월 현재 m2칩을 지원하는 무료 가상화 솔루션은 한정적입니다.

많이 이용하시는 virtualBox는 m2칩을 지원하지 않기때문에 저에게 선택지는 UTM이었습니다.

 

하지만, UTM은 마우스를 전혀 사용할 수 없었고, cli환경이지만 마우스를 전혀 사용할 수 없다는 것은 큰 단점이었습니다.

그래서 조금 더 편한 개발환경을 만들기 위해 고민하였고, 가상환경은 UTM으로 설정하지만 실제 개발은 맥 터미널을 이용하여 사용하였습니다.

 

우선 UTM에 접속 후 로그인을 하게되면 ip 정보를 확인할 수 있습니다.

 

ssh username@ipaddr 을 입력하게되면,

이런식으로 접속이 가능합니다.

 

주의사항 - utm의 서버를 실행시켜놓지 않으면 접속이 불가능합니다.

실제 hadoop 환경에 대한 경험이 없어 직접 구축을 해봤습니다.

연습용으로 구축해보기 위해 vm환경에서 4대의 클러스터를 구성할 예정입니다.

 

우선, vm설치를 진행해보았습니다.

 

먼저, 저는 맥북 m2 칩을 사용하고 있습니다

-> virtualBox는 m2 환경에서 호환이 되지 않아 저는 utm으로 설치하였습니다.

 

https://mac.getutm.app/ 

 

UTM

Securely run operating systems on your Mac

mac.getutm.app

appstore에서 설치하시면 14,000원의 유료로 구매해야하지만, web에서 다운로드 받으시면 무료로 다운 받을 수 있습니다.

 

os는 ubuntu22.04버전 사용하였고, 

추후 버전 문제로 오류가 발생할 경우 20.04버전으로 변경할 예정입니다.

 

utm에 대한 설치와 ubuntu설치 과정은 타 블로그를 참고하였습니다.

 

ubuntu설치까지 완료 화면

 

 

보완해야할 점, 참고해야할 점 댓글로 남겨주시면 도움이 많이 될 것 같습니다 

감사합니다.

AWS 실습 중 9090port로 접속이 불가능

- 인바운드 규칙을 http, tcp, http로 모든 port를 설정하였음에도 불구하고, 9090port의 웹 접속이 불가능

- 모든 tcp 유형으로 포트범위를 지정한뒤 접속이 가능(필요한 port에 따라서 인바운드 규칙을 지정해주는 방법도 가능)

 저의 경우에는 9090으로 지정해주었더니 접속이 가능해졌습니다.

 

 

[주의사항]

- 고정된 port가 존재한다면, 위의 방법을 사용하여 웹 접속이 가능하지만,

 여러개의 port를 사용하게 된다면 모든 port를 허용하는게 좋습니다.

'데이터 엔지니어 > 서버' 카테고리의 다른 글

[서버]TCP 통신  (0) 2022.07.06

ubuntu에서 docker를 설치하고 실행하였을때, docker가 연결되지 않았다는 에러가 발생하였습니다.

 

 

일반적인 linux환경에서는 $sudo systemctl status docker 명령어로 docker의 연결상태를 확인할 수 있습니다.

하지만, WSL환경에서는 systemctl 명령어가 사용이 불가능합니다.

systemctl명령어 대신 service 명령어를 사용해야 정상작동 합니다.

 

docker가 실행된걸 볼 수 있습니다.

 

위와 같은 hello-world 명령어를 실행한 결과

정상작동 하는것을 볼 수 있습니다.

 

* ubuntu 22.04버전에서는 docker 실행 명령어가 정상작동 하지 않을 수 있습니다.

저도 22.04버전에서 실행하다 작동이 안되서 20.04버전으로 버전을 낮춘뒤 사용했습니다.

ubuntu 20.04버전의 사용을 추천합니다.

정전으로 인한 서버 다운으로 서버의 연결이 끊겼었습니다.

서버를 관리하는 서버 관리자는 아니지만,데이터 엔지니어로써 데이터가 수집되는 서버에 대해서도

공부해볼 필요가있어 네트워크 이론에대해 공부해봤습니다.

 

정리글은 필요한 부분에 대해서 저의 기준으로 이해하기 쉽게 풀어서 설명한 것입니다.

제가 이해하고있는게 틀려서 수정이 필요하거나,

더 쉽게 이해할 수 있는 방법이 있으신분은 댓글로 달아주시면 감사하겠습니다 !

 

우선 TCP통신에 대해서 설명해보겠습니다.

TCP통신이란 ?

- Transmission Control Protocol의 약자로 두개의 호스트를 연결하고 데이터 스트림을 교환하게 해주는 네트워크 프로토콜이다. TCP는 데이터와 패킷이 보내진 순서대로 전달하는 것을 보장해준다. 

쉽게 말해서 내 기기에서 다른 기기로 데이터를 전송해 주는 통신방식 입니다.

 

TPC 통신에서 SYN과 ACK라는 개념이 있습니다.

SYN : synchronize의 약자로 가장 많이 활용되는 패킷이며, 서로 연결(프로세스 통신)을 하기위해 최초로 connection하는 신호

ACK : acknowledge의 약자로 수신자가 송신자측에서 보내온 패킷을 정상적으로 전달 받았음을 알려줌

이를 토대로 2가지의 연결방법을 설명할 수 있습니다.

 

1. 3-way handshake : 통신전 연결방법

- 통신하기 이전 client와 server간 연결을 맺기위해 진행하는 송수신이 3번 진행

1) client가 server에게 연결을 요청하기위해 최초 SYN신호와 함께 Sequence number를 전달

2) server는 client에게 연결 요청을 받고, 연결을 승낙하기 위해 SYN-ACK신호와 Sequnce number를 전달

3)  client는 ACK신호를 받고 ESTABLISHED상태가되어 연결이 이루어지고, 이때 신호를 전달하면서 server도 ESTABLISHED 상태가 된다.

 

2. 4-way handshake : 통신후 종료

- 연결이 종료되는 시점에서 client와 server간 진행하는 송수신이 4번 진행

1) client 측에서 FIN신호를 보내어 연결 종료요청. 이후 client는 server가 연결종료를 승낙할 때 까지 대기하는 FIN_WAIT상태

2) server는 CLOSE_WAIT 상태에서 연결종료를 승낙하기 위한 ACK신호를 client에게 전달

3) client는 ACK신호를 받은 후 FIN_WAIT_2 상태가 되고, 이때 server측은 LAST_ACK상태에서 최종 연력종료 통보인 FIN신호를 전달

4) FIN신호를 전달받은 client는 TIME_WAIT 상태로 전환되어 일정시간 이후 연결을 종료. 이 시점에서 ACK신호를 server보내고 server는 CLOSED 상태가 되어 두 client와 server간 연결이 종료

 

이렇게 TCP통신에 대해서 간략하게 살펴보았습니다.

공부를 시작하게 된 계기가 종료된 서버가 다시 되살아났는지, 연결을 정확하게 됬는지 확인하고 싶었기 때문에 관련한 내용인 ICMP와 ping에 대해서 설명하고 마무리 하겠습니다.

 

ICMP란?

- Internet Control Message Protocol의 약자로 TCP/IP 에서 IP패킷을 처리할 때 발생되는 문제를 알려주는 프로토콜 입니다.

 

ping?

- ping은 특정한 인터넷 주소가 있고, 또 그 주소가 요청을 받아들일 수 있는지를 확인해 주는 기본적인 인터넷 프로그램입니다.

만약 내부망처럼 외부에서 접근이 안되는 ip주소라면 VPN연결을 통해 내부망으로 접근하여 확인할 수 있습니다.

확인 방법은 명령 프로토콜(cmd)창을 띄워 명령어로 ping IP주소를 치면 확인할 수 있습니다.

단, 명령어의 결과값을 해석하는데 어려움이 있을 수 있습니다.

문제가 있는지를 확인하기 위해 봐야할 것은 손실평균 왕복시간입니다. 

 

1. 평균 왕복시간이 30ms 이상인 경우

- 평균 왕복시간은 낮을수록 좋은 수치입니다. 만약 평균 왕복시간 30ms이상일 경우 문제가 있을 확률이 높으며, 문제가 없는 경우 평균 왕복시간은 1 ~ 15ms 입니다.

2. 손실이 발생하는 경우

- 유선 환경이라면 손실은 없어야 됩니다. 유선 환경에서 손실이 발생한다는 것은 명백한 문제가 있는 것 입니다. 무선랜을 사용하는 환경에서는 약간의 손실이 발생할 수 있습니다.

3. 핑이 들쑥날쑥 일정하지 않은 경우

- 평균핑은 높지 않지만, 테스트 진행시 핑(시간)이 100ms, 2ms, 130ms, 4ms와 같이 불규칙하게 나타나는 경우도 문제가 있을 확률이 높습니다.

 

 

이상으로 글을 마치겠습니다 .

완벽히 정리된 글은 아니지만, 서버 전송과 관련하여 대략적으로 이해할 수 있는 기회가 되었습니다 !

 

안녕하세요 ~

리눅스 기초 명령어에 대해서 제가 학습한 내용을 기반으로 간단하게 정리를 해보려고합니다 !

 

제일 기본적인 명령어 이자 많이 쓰는 명령어인

ls : 현대 디렉토리에 있는 파일들을 보여주는 명령어

ls -al : 숨긴파일까지 전부 보여주는 명령어

ls -alt : 시간순으로 정렬되어 보여주는 명령어

 

pwd : 현재 본인이 머무르고있는 폴더 경로를 보여주는 명령어

 

cd 경로 : 원하는 경로로 폴더 이동하는 명령어

 

mkdir : 현재 경로에서 파일 생성하는 명령어

 

mv 파일명 원하는경로 : 원하는 경로로 파일을 옮기는 명령어

 

rm 파일명 : 원하는 파일을 삭제하는 명령어 (재확인 하지 않고 바로 삭제해서 사용에 유의 !)

rm -i 파일명 : 위에서 언급한 바로삭제하는 명령어에 조심하기위해 삭제를 할것인지 여부를 물어보고 난 후에 삭제하는 명령어

 

top : 현재 컴퓨터의 상태를 보여주는 명령어

htop : top보다 깔끔하게 현재 컴퓨터의 상태를 보여주는 명령어

 

which 파일명 : 파일의 위치를 보여주는 명령어

 

가장 기본적으로 리눅스에서 사용하는 명령어를 정리해봤습니다 !

추가로 명령어를 학습할때 마다 업데이트 하겠습니다 !

틀린 명령어가 있으면 언제든지 댓글로 남겨 알려주세요 ~

 

+ Recent posts