Dem Schreiben dieses kleinen Handbuchs gingen mehrere Wochen voller Qualen mit Versuchen voraus, an Projekten zu arbeiten, als es notwendig war, einen Container mit einer Arbeitsstelle, Containern mit Testbaugruppen zu starten, damit Tester neue Systemfunktionen sicher auf Basisdaten testen konnten, sowie Builds für den technischen Support zum Studieren Arbeiten Sie mit dem System unter Bedingungen, die dem "Kampf" nahe kommen.

Außerdem sollte ein Service-Webinterface für Mitglieder meines Entwicklungsteams funktionieren. In diesem Fall sollten einige Systeme auf einer Version von PHP funktionieren , andere auf einer anderen. Gleichzeitig gibt es Unterschiede in der Umgebung, in der die Sites arbeiten, angefangen beim Betriebssystem und dem http-Server, der Anforderungen verarbeitet, bis hin zu den installierten PHP- Modulen .
Es scheint nichts Kompliziertes zu sein, die Container anzuheben und die Häfen nach draußen zu leiten. Für jeden Container müssen Sie jedoch Ihre eigenen externen Ports angeben, an die Sie sich erinnern müssen, und diese dann beispielsweise an einen Buchhalter (dies ist auch ein Tester) übertragen, damit dieser die Verbesserungen des von ihm verwendeten Systems überprüft. Manchmal konnte ich selbst nicht verstehen, warum die Skripte, die ich gerade repariert habe, nicht wie erwartet funktionierten oder warum die Site überhaupt nicht geöffnet wurde.
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.
- (key)
sudo openssl genrsa -out site.key 2048
- Certificate Signing Request (csr)
sudo openssl req -new -key site.key -out site.csr
- (crt)
sudo openssl x509 -req -days 365 -in site.csr -signkey site.key -out site.crt
- (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%.
Wie erwartet tritt bei Verwendung einer Lösung mit HAProxy ein Leistungsabfall auf , der jedoch für die Verwendung dieser Konfiguration bei der Entwicklung von Standorten und der Bereitstellung des Zugriffs auf Testbaugruppen nicht kritisch ist.
Links
HAProxy
- Offizielle HSProxy-Website
- HAProxy-Dokumentation
- Die vier wesentlichen Abschnitte einer HAProxy-Konfiguration
- Offizielles Docker-Bild von HAProxy