버츄얼박스에서 도커 헤드리스 시작 후 모바X텀에서 .10 실행 = 도커 시작 후 ssh 연결
먼저 만든 도커 내용들 제거
(도커 전체를 검색(-a)하여 컨테이너(프로세스) ID만(-q) 출력)한 내용을 강제로(-f) 삭제
ㄴdocker container ls = docker ps : 같은 명령어이며, ps가 더 최신 명령어인 차이만 존재
ㄴ명령어 $(명령어) 는 해당 (명령어)의 결과 값을 앞의 명령어에 연결
docker [상위명령어] [하위명령어] [옵션] : 명령어의 구성
images ls
container history
network ...
ps 내용 출력되면서 해당 컨테이너 ID를 가진 컨테이너들이 삭제됨을 확인 가능
이후 네트워크도 만든 것을 삭제
ㄴ다만 해당 네트워크를 가진 컨테이너가 있을 시 삭제 불가
11페이지부터~
네트워크가 다른 2개의 컨테이너를 서로 연결하는 부분에서
사진처럼 하나의 네트워크에 2개를 연결해서 안으로 타고 들어올 수 있도록 설계한다
-it * * bash 로 접속했기에 나갈 시 해당 컨테이너가 종료되기에 Sessions 에서 새 터미널 접속
해당 형식으로 add-net이라는 컨테이너가 포함된 도커네트워크가 확인된다
add-net 컨테이너를 2개의 네트워크에 연결위해
먼저 네트워크 하나를 새로 제작
ㄴifconfig 와 route 로 네트워크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 다운
◆프록시 서버
내부 네트워크의 보호
트래픽을 빠르게 찾을 수 있게 해줌
서버들은 중요하니 외부에서 접속할 수 없고 외부에서는 프록시서버로 접속해야 하도록 하여 보안적 요소
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
전체적으로 한참 걸림
'AWS 교육 > Docker-AWS (월)' 카테고리의 다른 글
241028_Data Container, Build, Dockerfile, 이미지 경량화 (0) | 2024.10.28 |
---|---|
241021_Docker Volume (0) | 2024.10.21 |
241007_Docker Network 브릿지, namespaces, DNS서버, 지정 (0) | 2024.10.07 |
240930_Docker 컨테이너, 네트워크 (0) | 2024.09.30 |
240925_네트워크 축약 (0) | 2024.09.25 |