コンテナベースでのNginxアプリケーションログバックアップの実装


Load Banchingとは?
これは、タスクをコンピュータリソースに割り当てることを意味します.可用性と応答時間を最適化
Nginxに埋め込まれたLoad Balancingアルゴリズムにより
アプリケーションLoad Barcerの実装
1.nginxのインストール
sudo apt -y install nginx
2.nginx状態チェック
root@hostos1:~# nginx -v
nginx version: nginx/1.14.0 (Ubuntu)
root@hostos1:~# systemctl status nginx.service
● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: en
   Active: active (running)
root@hostos1:~# netstat -nlp | grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      9972/nginx: master
tcp6       0      0 :::80                   :::*                    LISTEN  
3.負荷バランシングのための3つのコンテナの作成
root@hostos1:~# docker run -itd -e SERVER_PORT=5001 \
-p 5001:5001 \
-h alb-node01 \
-u root \
--name=alb-node01 \
dbgurum/nginxlb:1.0
Node 2とnode 3の作成方法は同じです
root@hostos1:~# docker run -itd -e SERVER_PORT=5002 -p 5002:5002 -h alb-node02 -u root --name=alb-node02 dbgurum/nginxlb:1.0
fdb4739d8f24063689a32fb9180bac65fd80814604f6f38159540ad55a15ddf7
root@hostos1:~# docker run -itd -e SERVER_PORT=5003 -p 5003:5003 -h alb-node03 -u root --name=alb-node03 dbgurum/nginxlb:1.0
b09c38070272cb4f1ed2d154252a6c238128619ddb2438566547620586c9ac15
4.検査容器
root@hostos1:~# docker ps
CONTAINER ID   IMAGE                    COMMAND                  CREATED              STATUS              PORTS                                       NAMES
b09c38070272   dbgurum/nginxlb:1.0      "/cnb/lifecycle/laun…"   47 seconds ago       Up 46 seconds       0.0.0.0:5003->5003/tcp, :::5003->5003/tcp   alb-node03
fdb4739d8f24   dbgurum/nginxlb:1.0      "/cnb/lifecycle/laun…"   About a minute ago   Up About a minute   0.0.0.0:5002->5002/tcp, :::5002->5002/tcp   alb-node02
ee51a5202771   dbgurum/nginxlb:1.0      "/cnb/lifecycle/laun…"   2 minutes ago        Up 2 minutes        0.0.0.0:5001->5001/tcp, :::5001->5001/tcp   alb-node01
ポートの確認
root@hostos1:~# netstat -nlp | grep 5001
tcp        0      0 0.0.0.0:5001            0.0.0.0:*               LISTEN      10886/docker-proxy
tcp6       0      0 :::5001                 :::*                    LISTEN      10893/docker-proxy
root@hostos1:~# netstat -nlp | grep 5002
tcp        0      0 0.0.0.0:5002            0.0.0.0:*               LISTEN      11229/docker-proxy
tcp6       0      0 :::5002                 :::*                    LISTEN      11236/docker-proxy
root@hostos1:~# netstat -nlp | grep 5003
tcp        0      0 0.0.0.0:5003            0.0.0.0:*               LISTEN      11551/docker-proxy
tcp6       0      0 :::5003                 :::*                    LISTEN     
正常な動作を確認
5.hostosのnginx.confファイルの変更
既存のnginx.confは、Webサーバ用のconfファイルに変更でき、confファイルのロードとアンインストールに使用できます.
root@hostos1:~# cd/etc/nginx/
root@hostos1:/etc/nginx# mv nginx.conf nginx.conf.web
既存のnginx.confファイルをバックアップします.
新規作成
root@hostos1:/etc/nginx# vi nginx.conf
events { worker_connections 1024; }

http {
        upstream backend-alb {
                server localhost:5001;
                server localhost:5002;
                server localhost:5003;
        }
        server {
                listen 80 default_server;
                location /{
                        proxy_pass      http://backend-alb;
                }
        }
}
1024個のworker connectionインタフェースに設定
Seerver listen 80ポートからのリクエストに応答
/urlを介してlocation/80ポートにアクセスするリクエストに応答
Proxy pass 80ポート/urlに要求http://backend-albを発行する.ここに届けて
http上流proxy passで送信するurlを設定
server localhost:5001 weight=6;
server localhost:5002 weight=2;
server localhost:5003 weight=2;
weightオプションで重みを設定できます!
6.nginx.conf修正後nginx状態をチェック
root@hostos1:/etc/nginx# systemctl restart nginx.service
root@hostos1:/etc/nginx# systemctl status nginx.service
● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: en
   Active: active (running) 
  • でロード・バランシングが行われているかどうかを確認します.
    node01
    node02
    node03
  • 同じ疲労ノード010203に近いことを確認

    ノード010203上の平均流量は、Nginx基本アルゴリズムroundrobinによって決定される
    こうして、nginxとdockerコンテナでApplicationLoadBankを実現!