IRONSECUREDOCの使用

Haproxy Docker Compose(開発者向けの仕組み)

公開済み 2025年1月14日
共有:

イントロダクション

Aロードバランサーは、複数のサーバーやリソースにネットワークトラフィックを効率的に分配するように設計された重要な最新のITインフラストラクチャの一部です。 これは、任意のサーバーが過負荷になるのを防ぐことで、システムのスケーラビリティとパフォーマンスを向上させます。 ロードバランサーは、クライアントとバックエンドのサーバーの間に位置し、利用可能なリソースを使用しながら応答時間を最小化します。

ロードバランサーは、フォールトトレランス、トラフィックの分散、セッションの永続性を含むこれらの基本的なタスクを実行します。 ロードバランサーは、AWSやAzureによって提供される主要なソフトウェアプログラム、物理製品、またはクラウドベースのサービスである場合があります。 トラフィック割り当てに最も一般的に使用されるアルゴリズムのいくつかは、ラウンドロビン、最小接続数、およびIPハッシュです。

HAProxy Dockerとは何ですか?

HAProxy DockerHAProxyロードバランサーをDockerコンテナに配置することを指します。 HAProxyのトラフィック管理機能の力は、今やDockerの柔軟性と移植性と組み合わせることができます。 HAProxyは、高可用性とリバースプロキシを提供するWebアプリケーションとマイクロサービス環境向けの、人気があり広く使われているオープンソースのロードバランサーです。 DockerコンテナホストでHAProxyを実行する利点には、簡単なデプロイメント、分離、スケーラビリティ、プラットフォームの独立性があります。 HAProxy Dockerは、複数のバックエンドサービス間でトラフィックを効率的に分散し、コンテナのヘルスを監視し、コンテナの可用性に基づいて動的にルーティングを調整できます。

壊れた画像 Pixabayから追加、ファイルから選択、またはここに画像をドラッグアンドドロップしてください。

SSL/TLSターミネーション、セッションの持続、ラウンドロビンや最小接続数を含む複数の負荷分散アルゴリズムなどの機能をサポートしています。 これにより、HAProxy Dockerは、コンテナ化されたトラフィックを管理する優れた方法となります。KubernetesやDocker Swarmのようなオーケストレーションツールともよく統合でき、動的なスケーリングや自動サービス検出を提供します。 これにより、最新のアプリケーションは、ファイルの問題なく、堅牢で高性能かつ安全なトラフィック管理を実現できます。

HAProxy Dockerの機能

ロードバランシング

HAProxyは、多くのバックエンドサーバーにネットワークトラフィックの負荷を分散することに優れています。 その多くの負荷分散アルゴリズムには、ラウンドロビン、最小接続数、およびIPハッシュが含まれ、顧客はアプリケーションの特別なニーズに応じてトラフィックの流れを調整することができます。 これにより、HAProxyはレイヤー4でトラフィックを受け入れることができます。(TCP)およびレイヤー7(HTTP/HTTPS)サポートされているアーキテクチャは、単純なTCPルーティングアプリケーションから複雑なアプリケーション層の負荷分散に至るまで、高性能な範囲に配置されます。

高可用性

中央機能である高可用性は、サービスを常に稼働状態に保つことを意味します。 HAProxyは、バックエンドサーバーの正常性ステータスに基づいて、正常でないまたは障害が発生したサーバーからトラフィックを送信します。 フェイルオーバーは、サーバーが動作していないか予期せず故障した場合に、ダウンタイムが長くなりすぎないように防ぎます。

SSL/TLSサポート

HAProxyはSSL/TLSを完全にサポートしており、クライアントからサーバーへの安全な通信を保証します。 さらに、HAProxy は SSL/TLS 接続を終了することで、暗号化および復号化のタスクをバックエンドサーバーから切り離し、フロントエンドのパフォーマンスを向上させることができます。 エンドツーエンドの暗号化が必要な場合、HAProxyは暗号化されたトラフィックを背後のサービスに転送できます。

リバースプロキシ

HAProxyは、クライアントリクエストトラフィックをバックエンド側の関連サービスに送信するための最適なリバースプロキシの1つです。ヘッダーの変更、URLからのリダイレクト、または特定のルールに基づいて設定できる特定のユーザー条件に基づく特殊なルーティングなどの機能をサポートしています。 したがって、HAProxyは、マイクロサービスとともにマルチサービスアーキテクチャの有力候補の一つと考えられます。

セキュリティ強化

HAProxyには、レート制限、DDoS保護、ACLなどのセキュリティ機能が豊富に備わっています。 これらはすべて、受信トラフィックをフィルタリングするために使用されます。つまり、通常ならばバックエンドサーバーに到達してしまう悪質なリクエストを防ぎ、アプリケーションを安定させます。

スケーラビリティ

HAProxyは高度にスケーラブルです。 それは、遅延が使用に関連付けられることなく、何百万もの同時接続を容易にサポートし、スケールアップしても遅延問題を抱えることはありません。 この環境は、KubernetesやDocker Swarmのようなコンテナオーケストレーション環境をサポートしており、コンテナ化されたワークロードが動的スケーリングとサービスディスカバリーの利点を提供します。

ログと監視

HAProxyは、フローを理解し、問題をトラブルシューティングし、性能を分析するのに役立つ、きめ細かいロギング機能を備えています。 それはPrometheusのモニタリングツール、Grafana、Datadogといったものとシームレスに連携し、サーバーの健全性、ネットワークトラフィックの流れ、リソースの使用状況に関するリアルタイムデータを表現します。

HAProxyは設定の柔軟性が容易にサポートされています。

HAProxyは非常に柔軟で強力な構成機能を提供します。 これを利用することで、ユーザーはヘッダーやクッキーに応じた条件付きルーティングなど、かなり高度なルーティングルールを定義することができます。 URL 書き換えとセッションの永続性がサポートされており、HAProxy の1つのインスタンスが複数のドメインやアプリケーションにサービスを提供できるマルチテナンシーも可能です。

Dockerを使用したHAProxyのインストール

Dockerを使用してHAProxyをインストールおよび実行することは、比較的簡単なプロセスです。 以下は、一度に一つずつ行われる手順です。

Dockerインストール

Dockerがシステムにインストールされていることを確認してください。 インストールを確認するには、以下のコマンドを実行してください。

docker --version
docker --version
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'docker --version
VB   C#

Haproxy Docker Compose(開発者向けの仕組み):図2 - Dockerのインストールを確認

Dockerがシステムにインストールされていない場合は、次のサイトを訪問してください。Dockerリンク公式ウェブサイトからダウンロードしてインストールするにはここをクリックしてください。

HAProxy Dockerイメージをプルする

Docker Hubから公式のHAProxyイメージをプルします。 最新のHAProxyバージョンでは、最新の安定版がダウンロードされます。

docker pull haproxy:latest
docker pull haproxy:latest
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'docker pull haproxy:latest
VB   C#

Haproxy Docker Compose(開発者向けの動作方法): 図3 - HAProxy Docker イメージをプルする

HAProxyの設定ファイルを作成する

HAProxyには、その動作を定義する設定ファイルが必要です。 DockerとHAProxy用のそれぞれのDockerfileリンクをダウンロードした後、次の例の内容でhaproxy.cfgというファイルを作成してください。

global
    log stdout format raw local0
defaults
    log     global
    mode    http
    timeout connect 5s
    timeout client  50s
    timeout server  50s
frontend http_front
    bind *:80
    default_backend http_back
backend http_back
    server app1 host.docker.internal:32769 check
global
    log stdout format raw local0
defaults
    log     global
    mode    http
    timeout connect 5s
    timeout client  50s
    timeout server  50s
frontend http_front
    bind *:80
    default_backend http_back
backend http_back
    server app1 host.docker.internal:32769 check
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'global log stdout format raw local0 defaults log global mode http timeout connect 5s timeout client 50s timeout server 50s frontend http_front bind *:80 default_backend http_back backend http_back server app1 host.docker.internal:32769 check
VB   C#

このHAProxy設定が定義する内容:

フロントエンド:ポート4500でリッスンし、トラフィックをバックエンドにルートします。

バックエンド: app1を含む2台のサーバー間でトラフィックを分散します

HAProxy Dockerコンテナを実行する

HAProxy Dockerコンテナを実行し、構成ファイルをマウントして必要なポートを公開します:

docker run -d --network haproxy --name haproxy-container -p 4500:4500 -v D:\Docker\haproxy-config\haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro haproxy:latest
docker run -d --network haproxy --name haproxy-container -p 4500:4500 -v D:\Docker\haproxy-config\haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro haproxy:latest
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'docker run -d --network haproxy --name haproxy-container -p 4500:4500 -v D:\Docker\haproxy-config\haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro haproxy:latest
VB   C#
  • -d: コンテナのデタッチモードを実行します。

    • --name haproxy-container: コンテナに名前を付けます。

    ホストのポート4500をコンテナ内のポート4500にマップします。

  • -v $(pwd)/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro ローカルの設定ファイルをコンテナにマウントします。

HAProxyへのアクセス

Haproxy Docker Compose(開発者向けの仕組み): 図4 - HAProxy出力

ウェブブラウザを開き、http://localhost:4500 またはサーバーのIPアドレスに移動して、トラフィックルーティングをテストします。

HAProxyの統計を確認するには、以下のコマンドを実行します:

Haproxy Docker Compose(開発者向けの仕組み):図5 - HAProxy統計情報

IronSecureDocとは何ですか?

IronSecureDocは、強力な暗号化、高度なPDF操作、デジタル署名に依存したドキュメント管理とセキュリティのためのユーティリティです。 それは企業や開発者に文書の機密性と整合性を提供し、スムーズなアクセスを可能にすることで、直接的または間接的な依存関係なしにPDF文書の処理を容易にします。 これは、機能により開発者がプログラムによってPDFファイルやドキュメントを作成、アップロード、操作、およびセキュリティを確保できる場合には、攻撃的PDF APIとも呼ばれることがあります。

Haproxy Docker Compose(開発者向けの動作方法):図6 - IronSecureDoc: PDFセキュリティとコンプライアンスサーバー

さらに、IronPDFは、任意のデータ入力からPDFを作成し、テキスト、画像、メタデータなどのパラメータを使用してコンテンツを追加または編集することを容易にするPDF APIです。 これには、複数のPDFを統合してファイルを作成する機能や、ドキュメントの分割、さらには注釈のためのコメント、ハイライト、またはウォーターマークが含まれています。

パスワード保護、AES暗号化、および証明書ベースのアクセス制御を提供し、すべての機密情報とデータを保護します。 これに加えて、デジタル署名を可能にし、ドキュメントの認証と否認防止を実現します。これは、金融、医療、法務業界において非常に重要な機能です。 その監査証跡機能により、ドキュメント上で実行されたすべての活動を監視でき、コンプライアンスと説明責任をより確保します。

IronSecureDocのインストールと実行

次のリポジトリに従って、コマンドプロンプトまたは開いているターミナルウィンドウでコマンドを使用してIronSecureDocのDockerイメージをプルします。

docker pull ironsoftwareofficial/ironsecuredoc
docker pull ironsoftwareofficial/ironsecuredoc
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'docker pull ironsoftwareofficial/ironsecuredoc
VB   C#

Haproxy Docker Compose(開発者向けの動作方法):図7 - IronSecureDoc Dockerイメージをプル

ironSecureDoc、動作コンテナ。IronSecureDoc、動作コンテナ。

docker container run --rm -p 8080:8080 -e IronSecureDoc_LicenseKey=<IRONSECUREDOC_LICENSE_KEY> -e ENVIRONMENT=Development -e HTTP_PORTS=8080 ironsoftwareofficial/ironsecuredoc:latest
docker container run --rm -p 8080:8080 -e IronSecureDoc_LicenseKey=<IRONSECUREDOC_LICENSE_KEY> -e ENVIRONMENT=Development -e HTTP_PORTS=8080 ironsoftwareofficial/ironsecuredoc:latest
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'docker container run --rm -p 8080:8080 -e IronSecureDoc_LicenseKey=<IRONSECUREDOC_LICENSE_KEY> -e ENVIRONMENT=Development -e HTTP_PORTS=8080 ironsoftwareofficial/ironsecuredoc:latest
VB   C#

上記のDocker実行コマンドは、IronSecureDocのコンテナインスタンスを開始します。 次のページのように、ポート http://localhost:8080/swagger/index.html で IronSecureDoc にアクセスします。

Haproxy Docker Compose(開発者向けの仕組み):図8 - REST API

IronSecureDocをHAProxyと統合する

haproxy.cfg ファイルを準備して、フロントエンドとバックエンドの構成を定義します。 以下は簡単な構成例です。

explain below haproxy.cfg file 
global
    log stdout format raw local0
defaults
    log     global
    mode    http
    option  httplog
    timeout connect 5000ms
    timeout client  50000ms
    timeout server  50000ms
frontend http_front
    bind *:4500
    acl body_has_data req.hdr_val(Content-Length) gt 0
    http-request set-method POST if METH_GET body_has_data
    use_backend ironsecuredoc if { path /ironsecuredoc } 
 { path_beg /ironsecuredoc/ }
    use_backend ironsecuredoc_ping if { path /ping } 
 { path_beg /ping/ }
    use_backend ironsecuredoc_encrypt if { path /encrypt } 
 { path_beg /encrypt/ }
    #default_backend ironsecuredoc
backend ironsecuredoc
    balance roundrobin
    http-request set-path /swagger/index.html
    server ironsecuredoc_server3 host.docker.internal:8080 check
backend ironsecuredoc_encrypt
    balance roundrobin
    http-request set-path /v1/document-services/pdfs/encrypt
    server ironsecuredoc_server3 host.docker.internal:8080 check
backend ironsecuredoc_ping
    balance roundrobin
    http-request set-path /v1/document-services/ping
    server ironsecuredoc_server3 host.docker.internal:8080 check
explain below haproxy.cfg file 
global
    log stdout format raw local0
defaults
    log     global
    mode    http
    option  httplog
    timeout connect 5000ms
    timeout client  50000ms
    timeout server  50000ms
frontend http_front
    bind *:4500
    acl body_has_data req.hdr_val(Content-Length) gt 0
    http-request set-method POST if METH_GET body_has_data
    use_backend ironsecuredoc if { path /ironsecuredoc } 
 { path_beg /ironsecuredoc/ }
    use_backend ironsecuredoc_ping if { path /ping } 
 { path_beg /ping/ }
    use_backend ironsecuredoc_encrypt if { path /encrypt } 
 { path_beg /encrypt/ }
    #default_backend ironsecuredoc
backend ironsecuredoc
    balance roundrobin
    http-request set-path /swagger/index.html
    server ironsecuredoc_server3 host.docker.internal:8080 check
backend ironsecuredoc_encrypt
    balance roundrobin
    http-request set-path /v1/document-services/pdfs/encrypt
    server ironsecuredoc_server3 host.docker.internal:8080 check
backend ironsecuredoc_ping
    balance roundrobin
    http-request set-path /v1/document-services/ping
    server ironsecuredoc_server3 host.docker.internal:8080 check
explain below haproxy.cfg file global log stdout format raw local0 defaults log global mode http [option] httplog timeout connect 5000Ds timeout client 50000Ds timeout server 50000Ds frontend http_front bind *:4500 acl Function req_hdr_val(Content- ByVal Length As ) As body_has_data Implements req.hdr_val
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'	path /ironsecuredoc }
' {
'	 path_beg /ironsecuredoc/
' }
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
' use_backend ironsecuredoc_ping if
' {
'	 path /ping }
' {
'	 path_beg /ping/
' }
' use_backend ironsecuredoc_encrypt if
' {
'	 path /encrypt }
' {
'	#default_backend ironsecuredoc
'	 path_beg /encrypt/
' }
''INSTANT VB TODO TASK: The following line uses invalid syntax:
'' backend ironsecuredoc balance roundrobin http-request @set-path /swagger/index.html server ironsecuredoc_server3 host.docker.internal:8080 check backend ironsecuredoc_encrypt balance roundrobin http-request @set-path /v1/document-services/pdfs/encrypt server ironsecuredoc_server3 host.docker.internal:8080 check backend ironsecuredoc_ping balance roundrobin http-request @set-path /v1/document-services/ping server ironsecuredoc_server3 host.docker.internal:8080 check
VB   C#

このHAProxyの設定ファイルは、複数のIronSecureDocサービスのHTTPトラフィックを処理するシステムを作成します。 次に、標準出力への生ログ出力のためにグローバルに設定され、デフォルトセクションではモードとしてHTTPを有効にし、詳細なHTTPとともにクライアントとサーバーの接続タイムアウトを設定します。 フロントエンドは、ポート4500で定義されたhttp_frontであり、HTTPリクエストのパスに基づいてルーティングを管理するルールが含まれています。例えば、/ironsecuredocへのリクエストはironsecuredocバックエンドにルーティングされます。 /ping と /encrypt へのリクエストは、それぞれのバックエンドにルーティングされます。 ACLルールは、Content-Lengthヘッダーを介してボディを持つリクエストを識別します。 本文が存在する場合、GETリクエストをPOSTに変換します。

ラウンドロビンアルゴリズムは、トラフィックをバックエンドに分散するために使用されます。 各バックエンドは、それに対応するサーバーにリクエストを転送する前に、リクエストパスを書き換えます。 例えば、ironsecuredocのバックエンドはパスを/swagger/index.htmlに書き換えます。 ironsecuredoc_encrypt と ironsecuredoc_ping バックエンドは、それぞれのパスを /v1/document-services/pdfs/encrypt と /v1/document-services/ping に書き換えます。 それらすべては、host.docker.internal:8080で実行されている単一のサーバーを指します。サーバーが利用可能であることを確認するためにヘルスチェックが追加されます。 このように、構成はさまざまなサービスのスムーズなトラフィック管理を保証し、リクエストの操作に柔軟性を持たせています。

curl -X 'POST' \
  'http://localhost:4500/encrypt?user_password=demo' \
  -H 'accept: */*' \
  -H 'Content-Type: multipart/form-data' \
  -F 'pdf_file=@test.pdf;type=application/pdf'
curl -X 'POST' \
  'http://localhost:4500/encrypt?user_password=demo' \
  -H 'accept: */*' \
  -H 'Content-Type: multipart/form-data' \
  -F 'pdf_file=@test.pdf;type=application/pdf'
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'curl -X 'POST' \ 'http: -H 'accept: */ *' \ -H 'Content-Type: multipart/form-data' \ -F 'pdf_file=@test.pdf;type=application/pdf'
VB   C#

しかし、私たちが投稿している場合は、IronSecureDoc APIまた、ユーザーのパスワードでリクエストをドキュメントに暗号化するためにパスワードを尋ねたい場合もあります。 ドキュメントの出力ファイルは自動的に送信およびダウンロードされ、安全に保存されます。

結論

また、HAProxyを含むIronSecureDocソフトウェアと統合し、ドキュメントのセキュリティを管理するための信頼性があり、スケーラブルなソリューションを実現するために、トラフィックの最適化ルーティングと負荷分散を行います。 高可用性は、IronSecureDocの複数インスタンスにわたるトラフィックの効率的な分散により確保されており、フェイルオーバーを処理するためのヘルスチェックの実装と、さまざまなサービスエンドポイントへのカスタムルーティングルールの提供によって実現されています。

この構成は、暗号化やヘルスモニタリングのような複雑なワークフローを柔軟に処理し、将来的なスケーラビリティを持たせています。 コンテナ化された環境でも、従来の環境でも、軽量で高性能な設計のHAProxyは、IronSecureDocのセキュリティ機能を補完し、安全なドキュメントの信頼できる効率的な管理を提供します。 HAProxyの機能は、企業がIronSecureDocの導入を改善し、アプリケーションのパフォーマンスとレジリエンスを確保するのに役立ちます。

IronSecureDoc REST APIを使用することで、安全な印刷と効果的なPDFフォーマットおよび処理が、ウェブ、モバイル、企業システムの開発者によって開発されたアプリケーションに簡単に統合されます。 IronSecureDocのライセンスについて詳しく読むには、次のサイトをご覧ください:ライセンスページ. アイアンソフトウェアの製品に関する情報については、以下のリンクをご参照ください。ライブラリスイートページ.

< 以前
immich Docker Compose(開発者向けの仕組み)
次へ >
Wazuh Docker Compose(開発者向けの仕組み)