橋本技研ブログ売れるホームページ研究所、橋本技研の技術系備忘録ブログ。ショッピングカートシステムの制作などが得意です。ウェブサーバ運用DockerのTraefikを使って簡単にロードバランサーを作ることができましたので、紹介したいと思います。Encryptの設定が行われます。アプリのコンテナを複数起動すれば、ロードバランサーとして振り分けもしてくれます。セッション維持の有無についても簡単に指定できます。外部に公開されたサーバを用意してください。最近は気軽にVPSサーバを借りられるようになりましたので、それらを利用するのもおすすめです。サーバにはDockerとdocker-composeをインストールしておいてください。ここでは「test-loadbalancer.com」というドメインがサーバに割り当てられているものとして、説明を進めていきますので、適宜置き換えて解釈してください。ロードバランサーを作るまずは、コンテナ同志の通信に使用するネットワークを作ります。web次にロードバランサーとして使用するTraefikを設定するディレクトリを用意します。/opt/traefikこのディレクトリ内に、以下の3つのファイルを作ります。以下のように記述します。trueports:外部に公開するポートを指定します。ここではhttpとhttpsを指定しています。network:先程準備したdocker内のネットワーク名を指定します。Encrypt用の設定ファイルをマウントしています。起動する前に、設定ファイルを用意します。"http"httpのアクセスはhttpsにリダイレクトするように設定しています。[acme]セクションのemailについては、あなたの本物のメールアドレスを指定する必要があります。Encryptの設定に失敗します。SSL証明書は、acme.jsonに保管されます。ここまで準備できたら、Traefikを起動できます。-dあとは、同じネットワーク内にアプリケーションコンテナを立ち上げればOKです。ここでは、「tutum/hello-world」イメージを使ってサンプルを作ります。trueポイントは、「labels」セクションです。traefikに対して、このコンテナへの接続する仕様を伝えます。“traefik.enable=true”このコンテナがtraefikを使用することを宣言します。“traefik.docker.network=web”このコンテナはwebネットワークを使用してtraefikと通信します。“traefik.frontend.rule=Host:test-loadbalancer.com”このコンテナでは、ここで指定したドメイン宛のリクエストを受け付けます。“traefik.port=80”80番ポートでリクエストを受け付けます。“traefik.protocol=http”通信のプロトコルは、httpであることを宣言します。traefikでSSLの処理をすべて行ってくれるので、アプリケーションコンテナではSSLの処理が不要になります。準備ができたら、アプリケーションコンテナを起動します。-dこれで、サンプルサイトの公開が完了しました。ブラウザから確認してみましょう!こんなサイトが表示されていれば成功です。SSL証明書の設定も自動的に行われています。再度コンソールに戻って、以下のコマンドでアプリケーションを3つに増やしてみましょう。app=3ブラウザをリロードしてみてください。is」の後の文字が変わるのが分かりますでしょうか?ロードバランサーによって、3つのアプリケーションにラウンドロビンで順に振り分けが行われるようになりました。なんということでしょう、アプリケーションのコンテナさえ用意しておけば、コマンドひとつでスケール出来てしまいます。セッションを使うウェブアプリなどの場合は、これでは困ります。アクセスの度にセッションが切れてしまいます。traefik導入の前には、Nginxのリバースプロクシを使ったロードバランサーを検討していたのですが、ip_hushを使った振り分けになるため、wifi環境などでは不具合が出るのではという懸念がありました。traefikでは、cookieを使った振り分けに対応しているため、こうした心配は無用です。先程のアプリケーションを、cookieを使用した振り分けに変更して行きましょう。再度、アプリケーションコンテナの設定ファイルを開いて、labelsセクションに1行追加してください。"traefik.backend.loadbalancer.stickiness=true"先程の設定ファイルに以下の一行を追加しただけです。“traefik.backend.loadbalancer.stickiness=true”保存したら、コンテナを再起動します。restartブラウザでサイトを表示してリロードしてみましょう。いかがでしょうか?リロードしてもHOSTNAMEが変わらず、同じコンテナにアクセスする状態になったと思います。あっという間に、ロードバランサーが出来上がってしまいました。今はひとつのホスト内で運用するテストを行いましたが、次はマルチホストでの運用に挑戦してみたいと思います。bagooon橋本たかし★ホームページの制作(デザイン・コーディング・プログラミング)に加え、ネットショップの販売促進に関するアドバイスも致します。20年以上に渡って実際にネットショップを運営した経験を生かし、聞きかじりではない実績を伴ったノウハウを、自分の言葉でお伝えいたします。プログラミングの経験は30年以上。PHP、Ruby、Perl、JavaScript、Vue、Nuxt.JS、MySQL、Elasticsearch、サーバー構築、Dockerなど、幅広く対応します。Encrypt(自動更新)+ベーシック認証で作ってみた最近、Dockerにはまっています。環境がサクッと整うし、汚さないしで最高です。これからは、自分案件はできるだけDockerで構築...記事を読むMacを使わずにPush通知用の証明書を揃える方法(Monacaを使用)Monacaでいくつかアプリを作って公開していますが、そのいくつかはPush通知にも対応しています。Push通知を実現するにはPus...記事を読むiPhoneで、Dropboxのファイルを編集して、サーバーへFTPする方法Dropboxって本当に便利ですよね。前回に記事に引き続き、iPhoneでサーバーを管理する記事です。瞬時に検索できるようになった。改元アニバーサリーの10連休中に、いつか勉強してみたいと思っていた、検索専用DBについて調べて、いろいろ遊んでみました。EncryptのSSL/TLS証明書をインストールしてみましたので、その方法をシェアしておこうと思います。valueというエラーが出力されました。コメントをキャンセルメールアドレスが公開されることはありません。サイトをVarnishを使って爆速化した話。Composeでお手軽に利用してみた。