본문 바로가기
자격증/AWS Certified Solutions Architect

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

by Royal! 2021. 6. 1.
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
반응형