본문 바로가기

AWS 교육/Docker-AWS (월)

241014_connect 명령어, 프록시

728x90

버츄얼박스에서 도커 헤드리스 시작 후 모바X텀에서 .10 실행  =  도커 시작 후 ssh 연결

 

먼저 만든 도커 내용들 제거

(도커 전체를 검색(-a)하여 컨테이너(프로세스) ID만(-q) 출력)한 내용을 강제로(-f) 삭제

ㄴdocker container ls = docker ps   : 같은 명령어이며, ps가 더 최신 명령어인 차이만 존재

ㄴ명령어 $(명령어) 는 해당 (명령어)의 결과 값을 앞의 명령어에 연결

 

docker [상위명령어] [하위명령어] [옵션]       : 명령어의 구성

            images          ls

            container       history

            network         ...

 

ps 내용 출력되면서 해당 컨테이너 ID를 가진 컨테이너들이 삭제됨을 확인 가능

이후 네트워크도 만든 것을 삭제

ㄴ다만 해당 네트워크를 가진 컨테이너가 있을 시 삭제 불가

 

09. Docker network.pdf
1.00MB

11페이지부터~

네트워크가 다른 2개의 컨테이너를 서로 연결하는 부분에서

사진처럼 하나의 네트워크에 2개를 연결해서 안으로 타고 들어올 수 있도록 설계한다

 

 

-it * * bash 로 접속했기에 나갈 시 해당 컨테이너가 종료되기에 Sessions 에서 새 터미널 접속

해당 형식으로 add-net이라는 컨테이너가 포함된 도커네트워크가 확인된다

 

add-net 컨테이너를 2개의 네트워크에 연결위해

먼저 네트워크 하나를 새로 제작

 ㄴifconfigroute 로 네트워크id나 ip 확인 가능 (172.18.0.1 ip로 확인됨)

docker network connect [네트워크이름] [컨테이너이름]

입력 후 add-net 컨테이너에서 확인 시

연결된 내용을 확인 할 수 있다

 

이제 네트워크를 삭제 해보면

에러로 삭제가 안되는 데, 엔드포인트가 작동하고 있어서 안된다고 알려준다

endpoint : 접속점, 다른 곳과 연결 할 대 어디하고 연결하는 지

 

현재 네트워크가 컨테이너와 연결되어 있기에 안되는 것인데

그래서 disconnect 로 연결을 끊고

정상적으로 네트워크가 삭제됨을 확인 가능

 

 

해당 형식으로 존재하며 2티어의 형태의 그림

ㄴ클라이언트 : 사용자의 PC, 웹 브라우저    /   웹 : 클라이언트의 요청, 접속 관리 

    WAS : 애플리케이션 실행(비스지스 로직, DB접근)   /   DB : 데이터베이스

(Subnet의 숫자에 따라 티어수 정해짐, ex.1sub:web---2sub:was---3sub:db 하면 3티어)

 ㄴ2티어 : 클라이언트 <---웹---> 서버/DB   /   3티어 : 클라이언트 <---웹---> 서버 <---> DB

 

이제 add-net도 종료하고

먼저 백넷과 프론트넷을 만든 후

3개의 컨테이너 제작 (각각의 이름과 네트워크 주의)

잘 연결된 내용

이후 my-web을  back-net으로 연결

 

연결되면 exec 로 my-web에 접속하여 다른 컨테이너로 ping 시도 시 잘 연결된 것을 확인 가능

확인 후 전체 삭제

 

 

cisco-lab에서 9-2, 9-3 다운

09-02. 컨테이너 Proxy.pdf
0.52MB
09-03. [실습] Nginx를 활용한 컨테이너 proxy.pdf
0.29MB

 

◆프록시 서버

내부 네트워크의 보호

트래픽을 빠르게 찾을 수 있게 해줌

서버들은 중요하니 외부에서 접속할 수 없고 외부에서는 프록시서버로 접속해야 하도록 하여 보안적 요소

2대 이상의 부하를 분산 할 때 적용 (로드밸런싱)

caching 미리 저장해놓고 가져오는 것

 

OSI 7계층의 내용

참고 : OSI 모형 - 나무위키 (namu.wiki)

네트워크 로드밸런스 = L4 로드밸런싱 : 네트워크 계층이나 전송 계층의 정보를 바탕으로 로드를 분산

애플리케이션 로드밸런스 = L7 로드밸런싱

 

ARP = ip주소를 통해 mac주소를 확인하는 프로토콜(주소해석 프로토콜)

RARP = mac주소를 통해 ip 주로를 확인하는 프로토콜(동적매핑 프로토콜)

 

 

이렇게 nginx를 통해 연결을 하는 것인데

명령어를 입력 후 웹에 접속 시

접속이 되는 것을 볼 수 있다

 

nat는 외부와 연결

host-only는 윈도우와 통신하는 데 윈도우와 네트워크가 다르니 윈도우가 네트워크로 들어와서 통신을 함

    (윈도우는 항상 .1 로 참여)

 

해당 명령어를 통해 접속한 ip가 윈도우에서 접속함을 확인 가능

 

curl : 인터넷 가서 문서 받아 출력하는 명령어

내 컴퓨터의 80번 포트로 가서 받아와라

 

Load balancing이 구현될 애플리케이션 컨테이너를 생성

docker run -it -d -e SERVER_PORT=5001 -p 5001:5001 -h alb-node01 -u root \ --name=alb-node01 dbgurum/nginxlb:1.0

 -e   : 환경변수 설정 (즉, 서버포트를 5001로 설정)

 -u root   : 최고계정인 루트로 접속

로그를 볼 수 있도록 cgroup을 바꿔줘야 확인 가능하여

 

$ docker info

명령어를 통해 바꿔야 할 내용 확인하고

 

sudo sed -i '/^GRUB_CMDLINE_LINUX/ s/"$/ \ systemd.unified_cgroup_hierarchy=0"/' \ /etc/default/grub

 ㄴsed 's/원본 텍스트/바꿀텍스트/g'  : 문자 치환용 명령어이며 파일의 내용 원본 텍스트를 바꿀텍스트로 변경함   

  ㄴ단, 원본을 바꾸는 것이 아닌 출력만 바꿔서 보여주기에 -i 옵션으로 원본도 변경 

 그룹_cmd라인_리눅스 안의 내용들을 systemd.**에서 etc로 변환

순서대로 입력 후 재연결 하면 

※ 만약 되지않을 시 $ sudo vi /etc/default/grub 로 접속해서 GRUB_CMDLINE_LINUX*** 내용이 2개면 밑의 내용을 삭제 후 저장, 종료 한 후 업데이트와 리붓 실행

형식으로 $ docker info 해서 확인할 수 있다

 

이제 컨테이너 3개를 제작할 때 이전 alb-node01명령어를 그대로 사용하되 포트를 5001~3로 해서 1~3 형식으로 제작

 

제작 완료 한 후 nginx 설정을 변경

 

events { worker_connections 1024; }
http {
 # List of application servers
 upstream backend-alb {
  server 127.0.0.1:5001;
  server 127.0.0.1:5002;
  server 127.0.0.1:5003;
 }
 # Configuration for the server
 server {
  # Running port
  listen 80 default_server;
  # Proxying the connections
  location / {
   proxy_pass http://backend-alb;
  }
 }
}

을 기본 설정에 삽입하여 제작한다

nginx를 재부팅 후 연결하면

새로고침 시 노란색으로 표기한 부분이 변경된다

이런 식으로 해당 서버 3개의 주소로 직접 접속하지 않아도

host에서 돌고 있는 nginx 서버로 접속시 번갈아가며 분배되도록 설정하는 것이 프록시 서버이다.

 

 

◆ Reverse Proxy

이제 reverse proxy 구성을 위해 nginx를 삭제하고

ㄴ현재 80번 포트를 nginx가 가지고 있기에 다른곳에 사용하기 위함

$ sudo systemctl stop nginx.service

$ sudo apt autoremove -y nginx

 

새롭게 8001:80번 포트로 연결된 컨테이너를 제작 

ㄴ**:8001 입력 시 nginx 화면 출력

8001 포트로 접속 시 80포트로 연결되고 여기서 컨테이너로 가기 위해 우분투의 500*번 포트로 연결

 

1차로 접속 ip 수정위해 

$ vim nginx.conf   입력하여

events { worker_connections 1024; }
http {
 # List of application servers upstream
 backend-alb {
  server 192.168.x.x:5001;
  server 192.168.x.x:5002; 
  server 192.168.x.x:5003; 
 }
 # Configuration for the server
 server {
  # Running port
  listen 80 default_server;
  # Proxying the connections
  location / {
   proxy_pass http://backend-alb;
  }
 }
}

을 삽입 후 저장 

프록시서버의 컨테이너 안으로 복붙하고 재부팅 시

nginx화면이 아닌 등록된 화면이 출력됨을 확인 할 수 있다

 

※ 가중치 적용도 한번 읽어보면서 해보기

 ㄴ가중치 적용이란 위의 삽입 내용 중 server [ip]:[port] 뒤에 weight=x; 를 추가하여

    x로 설정한 값(100%를 나눔)에 따라 서버에 걸리는 부하를 조정할 수 있다

 

 

◆ 쿠버네티스 

1대 제작 후 4대로 복제

 

가상서버 제작

k8s-master

Linux  /  Ubuntu 22.04

4096 MB    /    CPU 2개

30 GB

 

저장소 > ubuntu 22.04

네트워크 > 1번 nat, 2번 host-only

 

cisco.lab  >  502 > 수업자료 > 쿠버네티스  에 만드는 방법 확인하여 동일하게 작업하기

 

컴퓨터 이름으로 4대 작업하기 때문에 이름 확인 및 차이점을 확실하게 하기

 

작업 완료 후 우분투 접속하여 

$ sudo apt update -y && sudo apt upgrade -y

$ sudo apt install -y vim net-tools curl

$ sudo apt install -y openssh-server

 

전체적으로 한참 걸림

728x90