Webサイト開発用の開発者マシンでHAProxyとDockerを使用する

この小さなマニュアルの作成に先立って、プロジェクトでの作業を試みる数週間の苦痛がありました。作業用のサイトを備えたコンテナ、テストアセンブリを備えたコンテナを起動して、テスターが基本データの新しいシステム機能を安全にテストできるようにする必要がある場合、および技術サポートのビルドを調査する必要がありました。 「戦闘」に近い条件でシステムを操作します。



開発マシンでのHAProxyとDockerの使用



さらに、開発チームのメンバー向けのサービスWebインターフェイスが機能するはずです。この場合、一部のシステムはphpのあるバージョンで動作し、一部は別のバージョンで動作するはずです。同時に、サイトが動作する環境には違いがあります。オペレーティングシステムとリクエストを処理するhttp-serverから始まり、インストールされたphpモジュールで終わります



複雑なことではないようです。コンテナを持ち上げて、ポートを外側に進めます。ただし、コンテナごとに、覚えておく必要のある独自の外部ポートを指定してから、たとえば会計士(これはテスターでもあります)に転送して、使用するシステムの改善点を確認する必要があります。修正したばかりのスクリプトが期待どおりに機能しなかった理由や、サイトがまったく開かなかった理由を私自身が理解できないことがありました。



HAPRoxy , 80 443, .



docker



docker , .



docker . HAProxy ip- , - .



docker network create develop --subnet=172.20.0.0/16


ip docker-compose.yml :



networks:
  default:
    external:
      name: develop


, HAProxy, ip-.



    networks:
      default:
        ipv4_address: 172.20.1.1


https



HAProxy https .





, HAProxy.



  1. (key)


sudo openssl genrsa -out site.key 2048


  1. Certificate Signing Request (csr)


sudo openssl req -new -key site.key -out site.csr


  1. (crt)


sudo openssl x509 -req -days 365 -in site.csr -signkey site.key -out site.crt


  1. (pem)


sudo bash -c 'cat site.key site.crt >> site.pem'


HAProxy.



, HAProxy Docker.



haproxy.cfg docker-compose.yml.



, . , HAProxy docker-compose.



HAPRoxy



HAProxy 80 443, , , 80 . https.



443 .



HAProxy frontend , .



frontend , backend.



Backend, , .



defaults .



docker HAProxy /usr/local/etc/haproxy/haproxy.cfg


defaults
    mode http
    timeout connect 5000ms
    timeout client 50000ms
    timeout server 50000ms
frontend http_frontend
    bind *:80
    redirect scheme https if !{ ssl_fc }
frontend https_frontend
    bind *:443 ssl crt /etc/ssl/certs/site.pem
    acl is_microbase hdr_end(host) -i microbase.localhost
    use_backend microbase if is_microbase
    acl is_coordinator hdr_end(host) -i coordinator.localhost
    use_backend coordinator if is_coordinator
backend microbase
    server microbase 172.20.1.1:80 check
backend coordinator
    server coordinator 172.20.1.2:80 check


docker-compose.yml



docker docker-compose, yml .



microbase.localhost coordinator.localhost HAProxy.



c HAProxy .



docker-compose docker-compose.yml .



-f.



docker-compose -f. , .


version: "3"
services:
  microbase:
    image: "inblank/php7.4-apache"
    volumes:
      - ./microbase:/var/www
    networks:
      default:
        ipv4_address: 172.20.1.1
  coordinator:
    image: "inblank/php7.4-apache"
    volumes:
      - ./coordinator:/var/www
    networks:
      default:
        ipv4_address: 172.20.1.2
  haproxy:
    image: "haproxy:2.2-alpine"
    ports:
      - 80:80
      - 443:443
    volumes:
      - ./haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg
      - ./cert.pem:/etc/ssl/certs/site.pem
networks:
  default:
    external:
      name: develop




siege 25 . 1- .



siege coordinator.localhost -t 1m


php :



<?php
echo "Hello World!";


apache 2.4 php .



Intel Core i5-8250U 1.60GHz, 8 SSD . Linux Mint 20 Cinnamon



.



  • 80

    HAProxy
    ** SIEGE 4.0.4
    ** Preparing 25 concurrent users for battle.
    The server is now under siege...
    Lifting the server siege...
    Transactions:             258084 hits
    Availability:             100.00 %
    Elapsed time:             59.39 secs
    Data transferred:         2.95 MB
    Response time:            0.01 secs
    Transaction rate:         4345.58 trans/sec
    Throughput:               0.05 MB/sec
    Concurrency:              24.72
    Successful transactions:  258084
    Failed transactions:      0
    Longest transaction:      0.04
    Shortest transaction:     0.00
    
    ** SIEGE 4.0.4
    ** Preparing 25 concurrent users for battle.
    The server is now under siege...
    Lifting the server siege...
    Transactions:             314572 hits
    Availability:             100.00 %
    Elapsed time:             59.18 secs
    Data transferred:         3.60 MB
    Response time:            0.00 secs
    Transaction rate:         5315.51 trans/sec
    Throughput:               0.06 MB/sec
    Concurrency:              24.64
    Successful transactions:  314572
    Failed transactions:      0
    Longest transaction:      0.11
    Shortest transaction:     0.00
    


~18%.


  • 80 443

    HAProxy
    ** SIEGE 4.0.4
    ** Preparing 25 concurrent users for battle.
    The server is now under siege...
    Lifting the server siege...
    Transactions:             114804 hits
    Availability:             100.00 %
    Elapsed time:             59.44 secs
    Data transferred:         0.66 MB
    Response time:            0.01 secs
    Transaction rate:         1931.43 trans/sec
    Throughput:               0.01 MB/sec
    Concurrency:              24.78
    Successful transactions:  114824
    Failed transactions:      0
    Longest transaction:      1.03
    Shortest transaction:     0.00
    
    ** SIEGE 4.0.4
    ** Preparing 25 concurrent users for battle.
    The server is now under siege...
    Lifting the server siege...
    Transactions:             134364 hits
    Availability:             100.00 %
    Elapsed time:             59.80 secs
    Data transferred:         19.99 MB
    Response time:            0.01 secs
    Transaction rate:         2246.89 trans/sec
    Throughput:               0.33 MB/sec
    Concurrency:              24.74
    Successful transactions:  134374
    Failed transactions:      0
    Longest transaction:      0.08
    Shortest transaction:     0.00
    


~14.5%.

予想どおり、HAProxyを使用したソリューションを使用するとパフォーマンスが低下しますが、サイトの開発およびテストアセンブリへのアクセスの提供のプロセスでこの構成を使用する場合は重要ではありません。



リンク



HAProxy



  1. HSProxy公式ウェブサイト
  2. HAProxyドキュメント
  3. HAProxy構成の4つの重要なセクション
  4. HAProxyの公式Dockerイメージ


Docker



  1. Docker公式サイト
  2. Docker-公式ページを作成する
  3. DockerComposeファイルバージョン3リファレンス



All Articles