1. コンテナサービスの更新とDockerコンサルの検出1. サービス登録と検出とは何ですか?サービスの登録と検出は、マイクロサービス アーキテクチャに欠かせない重要なコンポーネントです。当初、すべてのサービスは単一ノードであり、高可用性は保証されておらず、サービス負荷も考慮されていませんでした。サービス呼び出しは、単にインターフェース アクセスを通じて行われていました。複数のノードを持つ分散アーキテクチャが登場して初めて、サービス フロントエンドの負荷を分散するという最初のソリューションが生まれました。この方法では、フロントエンドはすべてのバックエンド サービスのネットワークの場所を認識し、構成ファイルでそれらを構成する必要があります。ここではいくつかの問題があります:
このような問題があるため、サービス登録と検出がこれらの問題の解決策となります。バックエンド サービス A ~ N は、現在のネットワークの場所をサービス検出モジュールに登録できます。サービス検出は Kv の形式で記録されます。ここで、K は通常サービス名、v は IP:PORT です。サービス検出モジュールは定期的にヘルスチェックを実行し、これらのバックエンド サービスにアクセスできるかどうかをポーリングして確認します。フロントエンドがバックエンド サービス AN を呼び出すと、サービス検出モジュールにアクセスしてネットワークの場所を問い合わせ、サービスを呼び出します。このアプローチは上記の問題を解決できます。フロントエンドはこれらのバックエンド サービスのネットワークの場所をまったく記録する必要がなく、フロントエンドとバックエンドは完全に分離されます。 2. 領事とは何ですか?
3. Consulが提供する主な機能サービスの登録と検出
健康チェック:
キー/値ストレージ:
2. 領事の派遣環境の準備
すべてのサーバーでファイアウォールとSELinuxを無効にする systemctl 停止 ファイアウォール 強制0を設定する ステップ1: Consulサーバーでの操作は次のとおりです。1. 領事サービスを確立するmkdir /opt/consul/ cd /opt/consul/ rz -E #次の圧縮パッケージconsul_0.9.2_linux_amd64.zipをインポートします consul_0.9.2_linux_amd64.zip を解凍します。 mv コンソール /usr/local/bin/ 2. プロキシを設定し、バックグラウンドでconsulサーバーを起動します。領事代理\ -サーバー\ -ブートストラップ\ -ui \ -data-dir=/var/lib/consul-data \ -bind=192.168.80.10 \ -クライアント=0.0.0.0 \ -node=consul-server01 &> /var/log/consul.log & netstat -napt | grep コンソール 領事メンバー 領事情報 | grep リーダー 関連するオプションは次のように説明されます。
1) メンバーステータスとクラスターステータスを確認する クラスターサーバーのメンバーを表示する curl 127.0.0.1:8500/v1/status/peers クラスター Raf リーダー curl 127.0.0.1:8500/v1/status/leader 登録されているすべてのサービス curl 127.0.0.1:8500/v1/catalog/services nginx サービス情報を表示する curl 127.0.0.1:8500/v1/catalog/nginx クラスターノードの詳細 curl 127.0.0.1:8500/v1/catalog/nodes ステップ 2: レジストラの展開 192.168.80.20 操作は次のとおりです。4. コンテナサービスが自動的にNginxクラスタに参加する
|
–net=ホスト | 実行中の Docker コンテナをホスト ネットワーク モードに設定します。 |
---|---|
-v /var/run/docker.sock:/tmp/docker.sock | ホストの Docker デーモンがデフォルトでリッスンする Unix ドメイン ソケットをコンテナーにマウントします。 |
--restart=常に | コンテナが終了するときに常に再起動するように設定します。 |
–ip | ネットワークをホスト モードに指定したので、IP をホスト マシンの IP として指定します。 |
領事 | Consul サーバーの IP とポートを指定します。 |
docker run -itd -p:81:80 --name test-01 -h test01 nginx docker run -itd -p:82:80 --name test-02 -h test02 nginx docker run -itd -p:83:80 --name test-03 -h test03 httpd docker run -itd -p:84:80 --name test-04 -h test04 httpd
Consulサーバーで操作を実行する
1) nginx.ctmpl設定ファイルを追加する
[root@consul consul]# pwd #現在 /opt/consul ディレクトリ /opt/consul [root@consul consul]# vim nginx.ctmpl アップストリーム nginx_slb { {{範囲サービス "nginx"}} サーバー {{.Address}}:{{.Port}}; {{終わり}} } サーバー{ 8000を聴く; サーバー名 ローカルホスト 192.168.80.10; アクセスログ /var/log/nginx/clj.com-access.log; インデックス index.html index.php; 位置 / { proxy_set_header HOST $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header クライアント IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://nginx_slb; } }
2) nginxインストールパッケージをインポートして解凍します
CD .. rz -E # 次のように nginx 圧縮パッケージをアップロードします。 nginx-1.12.0.tar.gz tar zxvf nginx-1.12.0.tar.gz #解凍
3) nginxプログラムユーザーを作成し、依存パッケージをインストールする
ユーザー追加 -M -s /sbin/nologin nginx yum -y インストール gcc pcre-devel zlib-devel gcc-c++ make
4) コンパイルとインストール後にパスを最適化する
nginx-1.12.0をインストールします ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx && make && make install ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
5) nginx設定ファイルを変更する
/usr/local/nginx/conf/ をコピーします。 vim nginx.conf http { include vhost/*.conf; #この設定を19行目に追加します
6) nginxサービス用のvhostとログディレクトリを作成する
mkdir 仮想ホスト mkdir /var/log/nginx nginx #nginxを起動する netstat -natp | grep :80 tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 59892/nginx: マスター
7) consul-template_0.19.3_linux_amd64.zip圧縮パッケージを渡して解凍します。
cd /opt/ rz -E # 次のようにテンプレートファイルを渡します consul-template_0.19.3_linux_amd64.zip consul-template_0.19.3_linux_amd64.zip を解凍します。 mv consul-template /usr/local/bin/
8) フォアグラウンド(またはバックグラウンド)でconsul-templateを起動します。
コンスルテンプレート --consul-addr 192.168.80.10:8500 \ --template "/opt/consul/nginx.ctmpl:/usr/local/nginx/conf/vhost/clj.conf:/usr/local/nginx/sbin/nginx -s 再ロード" \ --log-level=情報
9) 新しいターミナルを開いて、設定ファイルが生成されたかどうかを確認します。
/usr/local/nginx/conf/vhost/ をコピーします。 vim clj.conf
10) レジストラサーバにポート85のnginxコンテナを追加する
docker run -itd -p:85:80 --name test-05 -h test05 nginx
11) Consulサーバーのテンプレートサービスページが変更されたことを確認します。
12) 設定ファイルを再度確認します (ポート 85 が追加されていることがわかります。docker stop を使用してコンテナを停止すると、設定ファイルもそれに応じて変更されます)
13) コンテナのnginxサイトディレクトリにあるデフォルトのhtml.indexファイルを変更する
14) ブラウザでのアクセステスト
1) まず領事サービスを確立する
rz -y #consul 圧縮パッケージ consul_0.9.2_linux_amd64.zip をインポートします mv コンソール /usr/local/bin/
2) 既存のDocker環境を持つサーバーを既存のクラスターに追加する
領事代理\ -サーバー\ --ブートストラップ\ -ui \ -data-dir=/var/lib/consul-data \ -bind=192.168.80.30 \ -クライアント=0.0.0.0 \ -node=consul-server02 \ -enable-script-checks=true \ -データセンター=dc1 \ - 192.168.80.10 に参加 &> /var/log/consul.log &
--enable-script-ckecks=true | チェックサービスが利用可能になるように設定する |
---|---|
-データセンター | データセンター名 |
-参加する | 既存のクラスターに参加する |
--enable-script-ckecks=true
3) Consulサーバーで表示
Docker Consul コンテナ サービスの更新と発見に関するこの記事はこれで終わりです。Docker Consul コンテナに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。
<<: MySQL接続クエリにおけるととwhereの違いの簡単な分析
1. インストール前の準備データベースのバージョンを確認するコマンド: mysql --versio...
日々の最適化プロセス中に、奇妙なことに気付きました。同じ SQL にまったく異なる 2 つの実行プラ...
MySQLデータベースをダウンロードするには、https://dev.mysql.com/down...
フォームを送信するときに、送信前に追加のパラメータが追加される状況が発生する場合があります。この問題...
現在、クラウドサーバーに nginx をインストールする際、最初に zlib などの依存ライブラリを...
目次Web コンテナとは何ですか? HTTP の性質HTTP リクエスト応答の例クッキーとセッション...
この記事は、JS レッドブックの第 8 章に記載されているオブジェクトに関する 2 番目の記事です。...
ディレクトリを作成する cd /usr/local/docker/ jenkins-docker を...
カメラを開くと通常はスキャンボックスが表示されますが、静的なQRコードではフォーカスを合わせたりスキ...
MySQL には、10 進数などの標準データ型だけでなく、float や double などの非標...
1. リポジトリファイルを作成するmongodb の公式インストール ドキュメントを参照し、次のスク...
MySQLサーバーは--skip-grant-tablesオプションで実行されているため、このステー...
目次1. 変数の概要1.1 変数のメモリへの保存1.2 変数の使用1. 変数を宣言する2. 譲渡3....
目次最初のステップステップ2ステップ3ステップ4 Alipay 決済インターフェースへの接続に関する...
要約すると: Readonly は入力 (テキスト/パスワード) とテキスト領域に対してのみ有効です...