ウェブ クラスターの Docker Stack 展開方法の手順

ウェブ クラスターの Docker Stack 展開方法の手順

Docker はますます成熟し、その機能もますます強力になっています。 Docker Stack を使用してサービス クラスターを構築するのも非常に便利です。Docker 自体がロード機能を提供しており、非常に便利です。これを皆さんと共有し、簡単なチュートリアルを作成したいと思います。

環境

このチュートリアルでは、2台のCentos7仮想マシンを使用しました。それらのIPアドレスは次のとおりです。

メインサーバー: 192.168.0.105 // プライベート倉庫サーバー サーバー 2: 192.168.0.49

この投稿のすべてのコードは GitHub で見つかります: https://github.com/lpxxn/godockerswarm

Docker Swarmのセットアップ

私は192.168.0.105をメインサーバーとして使用し、そこでSwarmを起動します

docker スウォーム初期化

コマンドを実行すると、群れに参加するためのコマンドが与えられます

192.168.0.49でコマンドを実行してswarmに参加します

docker swarm に参加 --token SWMTKN-1-425vswwmb8o34uhnmo58w0k4rfzs5okjtye7mokpqps1vl9ymq-0p6pr2gua7l8a6udb67tfndoo 192.168.0.105:2377 

このようにして、群れが構築され、2 つのホスト間に関係が確立されました。

ウェブサービス

このウェブサービスはGo言語で書かれたシンプルなインターフェースで、ホスト名を返します。これにより、負荷があるかどうかを簡単に確認できます。

パッケージメイン

輸入 (
  「fmt」
  "ログ"
  「ネット/http」
  「オス」
)

関数main() {
  http.HandleFunc("/hi", func(w http.ResponseWriter, r *http.Request) {
    ホスト名、_ := os.Hostname()
    fmt.Fprintf(w, "ホスト名: %s", ホスト名)
  })

  log.Fatal(http.ListenAndServe(":8000", nil))
}

Dockerファイル

Dockerfile を見てみましょう:

実行とは、コードを対応するフォルダーにコピーし、ポートを公開し、golang コンテキストに基づいてプログラムを実行することを意味します。簡単ですよね?

Golangから

# 現在のディレクトリの内容をコンテナにコピーします
コピー ./go/src/github.com/lpxxn/godockerswarm/

ワークディレクトリ /go/src/github.com/lpxxn/godockerswarm/

実行してビルドする

エクスポーズ8000

コマンド ["./godockerswarm"]

dockerfileファイルが保存されているフォルダを見てみましょう

このディレクトリで docker build コマンドを実行します。

docker ビルド . -t goweb:1.0 

新しく生成されたイメージを実行できます

docker run -p 8100:8000 7a7e3 

イメージをプライベートリポジトリに送信する

ここでは、プライベート ウェアハウス サーバーの構築方法について詳しく説明します。以前の投稿で確認してください。

アドレス: https://www.jb51.net/article/156168.htm

クラスター内のマシンは自動的にウェアハウスからイメージを取得してプログラムを実行するため、上記で生成したイメージをプライベート ウェアハウスにプッシュする必要があります。自分で作った

タグを使用して名前を変更する

docker タグ goweb:1.0 lpxxn.com:5000/goweb:1.0 

押す

docker push lpxxn.com:5000/goweb:1.0 

docker-compose ファイル

次にdocker-compose.ymlファイルを作成します

画像は上記で作成した画像です。 5 つのアプリケーションを実行すると、Docker は独自のロード、ポート 8111 のマッピング、障害発生時のサービスの自動再起動、独自のネットワークの作成を実行します。これは、複数のサーバー サービスがある場合に非常に便利です。

具体的なパラメータについては、公式チュートリアルを参照してください。

詳しくはこちら

バージョン: "3"
サービス:
 ウェブ:
  画像: lpxxn.com:5000/goweb:1.0
  展開する:
   レプリカ: 5
   リソース:
    制限: 
     CPU: "0.1"
     メモリ: 50M
   再起動ポリシー:
    条件: 失敗時
  ポート:
   - 「8111:8000」
  ネットワーク: 
   - ゴーウェブネット
ネットワーク: 
 ゴーウェブネット:

アプリケーションをデプロイする

さて、最終段階です。デプロイメントも同様に簡単です。deploy コマンドを実行します。

docker スタックデプロイ -c docker-compose.yml mygoweb 

開始したサービスを表示

docker サービス ps mygoweb 

テストサービス

返されたホスト名を見てください。それらは異なります。 Docker が代わりにロードを実行します。

この投稿のすべてのコードは GitHub で見つかります: https://github.com/lpxxn/godockerswarm

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Dockerプライベート倉庫の構築と利用の詳細説明
  • Docker を使って LEMP 環境を素早く構築する方法の例
  • Dockerコンテナのログ処理の詳細な説明
  • 知らないかもしれない奇妙で興味深いDockerコマンド
  • Docker が MySQL を作成する説明
  • CentOSバージョンにDockerをインストールする際のエラーの解決方法
  • Docker を使用して静的 Web サイト アプリケーションを作成する (複数の方法)
  • Spring Boot と Docker を使用してマイクロサービスをデプロイする方法
  • Raspberry PiにDockerをインストールする方法
  • Dockerコンテナはルーティングを介して直接通信し、ネットワーク通信を実現します。

<<:  MySQLでconcat関数を使用する方法

>>:  JavaScript は、マウスがテーブル行を通過するときに色の識別を実装します。

推薦する

Vue で Excel インポート機能を実装する詳細な手順

1. フロントエンド主導の実装手順最初のステップは、ページのインポートボタンをクリックしてExcel...

MySQL の where と on の違いと、いつ使用するか

以前、テーブル結合クエリを書いていたとき、whereとonの違いがわからず、SQLに小さな問題が発生...

MySQLを水平から垂直に、垂直から水平に変換する方法

データの初期化 `test_01` が存在する場合はテーブルを削除します。 テーブル「test_01...

mysql 実行プラン ID が空である (UNION キーワード) の詳細な説明

導入作業プロセス中に、遅いクエリが調整されることがあります。 MySQL SQL ステートメントのチ...

CentOS7 のシステム サービスに Nginx を追加する方法

導入コンパイル、インストール、問題の解決後、Nginx は正常に動作していますが、現時点では Ngi...

Docker メモリ監視とストレステストの方法

起動していたDockerコンテナはメモリを使い果たした状態になっており、再起動せずにコンテナのメモリ...

mysql5.7.19 解凍版の詳細なインストール チュートリアル (純粋なクラックされた中国語版 SQLYog を使用)

Mysql5.7.19バージョンは今年リリースされた新しいバージョンです。最近のMySQLのバージ...

Docker Nginxコンテナの制作と展開の実装方法

クイックスタート1. Docker Hubでnginxイメージを見つけるdocker 検索 ngin...

JS 実用的なオブジェクト指向スネークゲームの例

目次考える1. 貪欲な蛇の効果画像2. スネークの分析2.1 ゲーム開始機能2.2 運動機能2.2....

円形/扇形メニューを2分で実装する方法を教えます(基本バージョン)

序文このプロジェクトでは円形のメニューが必要です。オンラインで検索しましたが、適切なものが見つからな...

JPG、GIF、PNGなどのさまざまな画像形式の詳細な説明

ウェブページ上の画像が一般的に jpg、gif、png 形式であることは誰もが知っています。それらの...

Docker イメージのインポートとエクスポートのコード例

Dockerイメージのインポートとエクスポートこの記事では、移行、バックアップ、アップグレードなどの...

MySQLで最大接続数を達成する方法

目次データベース接続数が急増した理由は何ですか? 1. はじめに2. 知識ポイント3. 練習するIV...

docker compose の使い方の詳しい説明

目次Docker Compose の使用シナリオ基本的なデモ基本的な操作とメンテナンスdocker-...

この記事はPReact10.5.13のソースコードを理解するのに役立ちます

目次render.js 部分create-context.js 部分差分部分Reactのソースコード...