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 를 통해서)