Menggunakan HAProxy dan Docker pada mesin pengembang untuk pengembangan situs web

Penulisan manual kecil ini didahului oleh beberapa minggu siksaan dengan upaya untuk mengerjakan proyek, ketika diperlukan untuk meluncurkan wadah dengan situs untuk bekerja, wadah dengan rakitan uji sehingga penguji dapat dengan aman menguji fitur sistem baru untuk data dasar, serta membangun untuk dukungan teknis untuk belajar. bekerja dengan sistem dalam kondisi yang dekat dengan "pertempuran".



Menggunakan HAProxy dan Docker pada Mesin Pengembangan



Selain itu, antarmuka web layanan untuk anggota tim pengembangan saya harus berfungsi. Dalam kasus ini, beberapa sistem harus bekerja pada satu versi php , beberapa di versi lain. Pada saat yang sama, terdapat perbedaan dalam lingkungan tempat situs bekerja, dimulai dengan sistem operasi dan http-server yang memproses permintaan, dan diakhiri dengan modul php yang diinstal .



Tampaknya tidak ada yang rumit, angkat kontainer dan teruskan pelabuhan ke luar. Tetapi untuk setiap kontainer, Anda perlu menentukan port eksternal Anda sendiri yang perlu Anda ingat, dan kemudian mentransfernya, misalnya, ke akuntan (ini juga penguji) sehingga dia memeriksa perbaikan dalam sistem yang dia gunakan. Terkadang saya sendiri tidak dapat memahami mengapa skrip yang baru saja saya perbaiki tidak berfungsi seperti yang diharapkan, atau mengapa situs tidak terbuka sama sekali.



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%.

Seperti yang diharapkan, ada penurunan performa saat menggunakan solusi dengan HAProxy , tetapi tidak penting untuk menggunakan konfigurasi ini dalam proses mengembangkan situs dan menyediakan akses ke rakitan pengujian.



Tautan



HAProxy



  1. Situs web resmi HSProxy
  2. Dokumentasi HAProxy
  3. Empat Bagian Penting dari Konfigurasi HAProxy
  4. Gambar Docker resmi dari HAProxy


Buruh pelabuhan



  1. Situs Resmi Docker
  2. Halaman resmi Docker-compose
  3. Referensi file Docker Compose versi 3



All Articles