Docker(node.js를 활용한 runserver구성/ Flask 활용 / 컨테이너를 활용한 로드밸런스(net-alias를 활용하여)/ Nginx를 활용한 로드밸런스/docker-compose를 활용한 wordpress)

2021. 6. 1. 22:07·자격증/AWS Certified Solutions Architect
728x90
반응형

node.js 활용한 runserver구성

만약 호스트 이름을 바꾸고 싶다면 --name=본인이 넣고 싶은 이름을 넣으면 된다.

curl localhost:6060으로 해도 된다.

 

결과 


Flask

 

결과 


컨테이너를 활용한 로드밸런스(net-alias를 활용한 로드밸런스)

 

 

결과

3개를 한꺼번에 답한다. 3개의 주소를 한꺼번에 알고 있다는 뜻.

 

컨테이너 레벨에서의 Load Balance를 유지할 수 있다.

 


IPTRAF-NG

sudo apt -y install iptraf-ng

 

General interface statistics를 들어가서 ICMP를 확인할 수 있다.

5개에 번갈아 가면서 Ping을 받아들이는 모습을 볼 수 있다. 방화벽에서 packet량을 체크할 때 좋다.

 


Nginx를 활용한 로드밸런스 구성

nginx가  프록시 역활을 한다. 컨테이너에 로드밸런싱해주는 것.

sudo apt update 후 install nginx 설치 후 서비스를 확인해 본다.(서비스 확인 방법은 sudo systemctl stauts nginx.service을 쳐서 초록색이 뜨면 된다.)

 

(혹시 아파치가 사용되고 있다면 sudo /etc/init.d/apache2 stop명령어로 멈춰준다.)

 

docker run -itd -e SERVER_PORT=5004 -p 5004:5004 -h alb-node04 -u root \
--name=alb-node04 dbgurum/nginxlb:1.0

 

1부터 3까지 만들어준다 node02,03 포트도 1,2,3,으로 만들어준다

 

cd /etc/nginx

/etc/nginx$ sudo mv nginx.conf nginx.conf.org

                sudo vi nginx.conf

 

events { worker_connections 1024; }

http {

        # List of application servers
        upstream backend-alb {
        server 127.0.0.1:5001;
        server 127.0.0.1:5003;
        server 127.0.0.1:5004;
     }

        #Configuration for the server
        server {
                #Running port
                listen 80 default_server;
                listen [::]:80 default_server;


                #Proxying the connection

                location / {
                   proxy_pass           http://backend-alb;
                }
      }
}

작성

 

sudo systemctl restart nginx.service

sudo systemctl status nginx.service

 

F5번을 눌리면 1번 3번 4번으로 계속 로드밸런싱 되는 것을 알 수 있다.

 

weight을 주고 싶다면 아래와 같이 명령어를 주면 된다.(어디에 더 많은 값을 주고싶은지 정하는 것)

그러면 5001번 포트에 6번 5003번에 3번 5004번에 1번 밸런싱 해준다.

server 127.0.0.1:5001 weight=6;

server 127.0.0.1:5003 weight=3;

server 127.0.0.1:5004 weight=1;

 

F5번을 눌리면 확인 할 수 있다.

 


Docker에서 파일 및 DB를 생성해도 자동으로 생성된다.

docker run -it --name=mysql-vtest -e MYSQL_ROOT_PASSWORD=pass# \
> -e MYSQL_DATABASE=dockertest \
> -v /home/ubuntu/volume_test:/var/lib/mysql -d mysql:5.7


docker ps 확인 후

docker exec -it mysql-vtest bash #도커 접속 후

mysql -uroot -p #pass#



use dockertest;

create table mytab (c1 int, c2 char);

insert into mytab values (1,'a');

select * from mytab;  #확인

 

 

삭제 후 다시 만들면 volume때문에 살아있다. 삭제 후 다시 한번 만들면 DB가 날아가도 그대로 복구가 된다.


Docker-Compose/야믈코드 사용

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

 

sudo chmod +x /usr/local/bin/docker-compose

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

sudo chown ubuntu /usr/local/bin/docker-compose

 

docker-compose --version

 

 

 

mkdir mariadb에 들어가서 vi docker-compose.yaml을 만든다.

version: '3.3'
services:
  mariadb:
    image: mariadb:10.4.6
    restart: always
    environment:
      - MYSQL_ROOT_PASSWWORD=test
      - MYSQL_DATABASE=dockerdb
    volumes:
      - ./db_vol:/var/lib/mysql
    ports:
      - '3306:3306'

 

 

명령어 docker-compose up 설치

 

내리고 싶을때는 docker-compose down을 실행하면 된다.  언제든 편할때  up, down으로 mariadb를 죽이고 살릴 수 있다. docker-compse up -d(백그라운드 실행)


 

Web서비스 만들기(yaml코드활용/wordpress활용)

mkdir my_wp && cd $_

vi docker-compose.yml #compose로 yml을 만들어야 한다.

version: "3.9"
service:
  mydb:
    image: mysql:5.7
    container_name: mysql_app
    volumes:
      - mydb_data:/var/lib/mysql
    restart: always
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: wordpress
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress
    myweb:
      depends_on:
        - mydb
      image: wordpress:latest
      container_name: wordpress_app
      ports:
        - "8888:80"
      volumes:
        - myweb_data:/var/www/html
      restart: always
      environment:
        WORDPRESS_DB_HOST: mydb:3306
        WORDPRESS_DB_USER: wordpress
        WORDPRESS_DB_PASSWORD: wordpress
        WORDPRESS_DB_NAME: wordpress
volumes:
  mydb_data: {}
  myweb_data: {}
  

 

docker-compose up -d #백그라운돌 실행 후

docker-compose ps로 확인해 준다.

확인 후 공인IP:8888 워드프레스 개발환경 ->MySQL 저장(테이블12개정도)

 

docker exec -it (name) bash 테이블을 생성 해준다~

(mysql -uroot -p 를 통해서) 

728x90
반응형

'자격증 > AWS Certified Solutions Architect' 카테고리의 다른 글

AWS - SAA 합격 후기 및 DUMP 공유  (22) 2024.09.02
SAA - CO2 : EC2 & EBS & EFS  (0) 2021.08.04
Docker (Python코드로 로또 만들기/ node.js스크립트 작성 / hub.docker.com에서 사용자가 생성한 이미지를 업로드 수행/ 사용자 프로젝트에 맞는 이미지 개발/)  (0) 2021.05.28
도커(Docker) 란?(설치 및 실습/도커에서 ubuntu설치,도커에서MySQL설치/도커에서 모니터 설치, 도커에서 MySQL워크벤치 설정/ 도커에서 Python서버 실행,도커에서 nginx(webserver))  (0) 2021.05.27
'자격증/AWS Certified Solutions Architect' 카테고리의 다른 글
  • AWS - SAA 합격 후기 및 DUMP 공유
  • SAA - CO2 : EC2 & EBS & EFS
  • Docker (Python코드로 로또 만들기/ node.js스크립트 작성 / hub.docker.com에서 사용자가 생성한 이미지를 업로드 수행/ 사용자 프로젝트에 맞는 이미지 개발/)
  • 도커(Docker) 란?(설치 및 실습/도커에서 ubuntu설치,도커에서MySQL설치/도커에서 모니터 설치, 도커에서 MySQL워크벤치 설정/ 도커에서 Python서버 실행,도커에서 nginx(webserver))
Royal!
Royal!
Bachelor of Arts. Bachelor of Science in Engineering. Master of Science in Engineering (In Progress). Job Title: Infrastructure & Security & Cloud Engineer. Etc: Mentor at Fourth Industrial Revolution Center.
  • Royal!
    Security
    Royal!
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • 운영체제
      • 네트워크
      • 클라우드
      • 서버
      • Container
      • 프로그래밍 N
        • Python_혼자 끄적끄적
        • Python_AI(영상처리)
        • 빅데이터
        • C_정보올림피아드 Language_Coder
        • C_QnA
      • 자격증
        • 정보보안기사
        • 정보처리기사
        • ADsP
        • CPPG
        • 보안법률
        • NCA~NCP
        • AWS Certified Solutions Arc..
      • 리버싱
        • 리버싱 걸음마
      • Wargame & CTF
        • Hackerschool FTZ
      • 기타 교육
        • KISA 정보보호제품실습군
        • 빅데이터_분석실무
        • 시큐어코딩진단전문교육(호남정보보호센터)
        • SW테스트 전문가 과정(ISTQB CTFL자격)
        • 정보보호 컨설팅 전문가 양성과정
      • 기타
        • 면접일지
        • 기타
        • 인턴활동
        • 논문 요약
      • K-Shield Jr
        • 악성코드분석
        • 침해사고분석
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    rest api 제약조건
    네이버클라우드 ftp 설정
    ncp ipsec vpn 연결
    aws ncp ipsec vpn 연결
    ncp이메일 문제 해결
    ncp 이메일 기본로직
    email 450 error
    aws ipsec vpn
    ncp이메일이 안 와요
    ncp 이메일 알람 못 받을 경우
    nce dump
    rest api 아키텍처
    ipsec vpn 연결
    aws ipsec vpn연결
    클라우드 ipsec vpn 설정
    ncp 이메일테스트
    sim swaping
    rest api 공부
    ipsec vpn 연결 설정
    sim cloning
    rest api 문법
    nce덤프
    restful api 개념
    이심 유출
    smtp 450 error
    이메일 450 error
    ncp ipsec vpn
    메일 서버 기본로직
    rest api 정리
    rest api 논문
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Royal!
Docker(node.js를 활용한 runserver구성/ Flask 활용 / 컨테이너를 활용한 로드밸런스(net-alias를 활용하여)/ Nginx를 활용한 로드밸런스/docker-compose를 활용한 wordpress)
상단으로

티스토리툴바