docker を使用して Kong クラスター操作を構築する

docker を使用して Kong クラスター操作を構築する

docker コンテナの下に kong クラスターを構築するのは非常に簡単です。公式サイトの紹介も非常に簡単です。初心者は、どのように対処すればよいかわからないことがよくあります。苦労して考えた後、ついに構築しました。

主なアイデア: 異なるコングが同じデータベースに接続する (たった 1 文)

難易度: Kong を使用して異なるホスト上の同じデータベースに接続する方法

必要とする:

1. 2つのホスト 172.16.100.101 172.16.100.102

ステップ:

1. 101 にデータベースをインストールします (ここでは Cassandra を使用します)

docker run -d --name kong-database \
       -p 9042:9042 \
       カサンドラ:最新

2. データベースを移行する(データベースの初期化を理解できます)

docker run --rm \
  --link kong-database:kong-database \
  -e "KONG_DATABASE=cassandra" \
  -e "KONG_PG_HOST=kongデータベース" \
  -e "KONG_CASSANDRA_CONTACT_POINTS=kongデータベース" \
  kong:最新のkong移行アップ

3. Kongをインストールする

docker run -d --name kong \
  --link kong-database:kong-database \
  -e "KONG_DATABASE=cassandra" \
  -e "KONG_PG_HOST=kongデータベース" \
  -e "KONG_CASSANDRA_CONTACT_POINTS=kongデータベース" \
  -e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \
  -e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \
  -e "KONG_PROXY_ERROR_LOG=/dev/stderr" \
  -e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \
  -p 8000:8000 \
  -p 8443:8443 \
  -p 8001:8001 \
  -p 8444:8444 \
  コング:最新

注: 上記の 3 つの手順はすべて 101 で完了しており、公式 Web サイトには https://getkong.org/install/docker/?_ga=2.68209937.1607475054.1519611673-2089953626.1519354770 があります。次の 4 番目の手順は別のホスト 102 で完了します。リンクは同じホストで使用できますが、異なるホスト上のコンテナの関連付けには使用できません。次の構成で十分です。

4. マルチノードのKongクラスタを実装するために、102に別のKongをインストールします。

docker run -d --name kong\
 -e "KONG_DATABASE=cassandra" \
 -e "KONG_PG_HOST=kongデータベース" \
 -e "KONG_CASSANDRA_CONTACT_POINTS=172.16.100.101" \
 -e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \
 -e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \
 -e "KONG_PROXY_ERROR_LOG=/dev/stderr" \
 -e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \
 -p 8000:8000 \
 -p 8443:8443 \
 -p 8001:8001 \
 -p 8444:8444 \
 コング:最新

5. ここではCassandraデータベースが使用されているため、構成パラメータdb_update_propagationを変更する必要があります。デフォルト値は0ですが、5に変更できます。コンテナを入力します。

docker exec -it kong bash //kong コンテナに入る cd etc/kong //ディレクトリに入る cp kong.conf.default kong.conf //kong.conf.default ファイルを kong.conf ファイルにコピーする vi kong.conf //db_update_propagation 構成項目を変更する

exit //空のコンテナを終了する

docker restart kong //kongを再起動する

注: Kong 101 と 102 の両方でこの構成項目を変更する必要があります。db_update_propagation 構成項目の概要については、公式 Web サイトをご覧ください。

6. Kongクラスターを確認する

101にAPIを登録するには以下のようにします

curl -i -X ​​POST\
 --url http://172.16.100.101:8001/apis/ \
 --data 'name=example-api' \
 --data 'hosts=example.com' \
 --data 'upstream_url=http://mockbin.org'

次に、API が正常に登録されているかどうかを確認します。

カール -i http://172.16.100.101:8001/apis/example-api

戻り値は次のとおりです。

102 マシン ホストを介してクエリを実行することもできます。

カール -i http://172.16.100.102:8001/apis/example-api

上記と同じ結果が返ってきたら、同じ API にアクセスできるということです。API 情報はデータベースに保存されているので、同じデータベースにアクセスできることになります。これで Kong クラスターの構築は成功です。参考になれば幸いです。

補足知識: docker-compose を使用して Hadoop クラスターを作成する

Dockerイメージをダウンロードする

まず、使用する必要がある5つのDockerイメージをダウンロードします

docker pull bde2020/hadoop-namenode:1.1.0-hadoop2.7.1-java8
docker pull bde2020/hadoop-datanode:1.1.0-hadoop2.7.1-java8
docker pull bde2020/hadoop-resourcemanager:1.1.0-hadoop2.7.1-java8
docker pull bde2020/hadoop-historyserver:1.1.0-hadoop2.7.1-java8
docker pull bde2020/hadoop-nodemanager:1.1.0-hadoop2.7.1-java8

Hadoop 構成パラメータの設定

次の内容の hadoop.env ファイルを作成します。

CORE_CONF_fs_defaultFS=hdfs://ネームノード:8020
CORE_CONF_hadoop_http_staticuser_user=ルート
CORE_CONF_hadoop_proxyuser_hue_hosts=*
CORE_CONF_hadoop_proxyuser_hue_groups=*

HDFS_CONF_dfs_webhdfs_enabled=true
HDFS_CONF_dfs_permissions_enabled=false

YARN_CONF_yarn_log___集約___有効=true
YARN_CONF_yarn_resourcemanager_recovery_enabled=true
YARN_CONF_yarn_resourcemanager_store_class=org.apache.hadoop.yarn.server.resourcemanager.recovery.FileSystemRMStateStore
YARN_CONF_yarn_resourcemanager_fs_state___store_uri=/rmstate
YARN_CONF_yarn_nodemanager_remote___app___log___dir=/app-logs
YARN_CONF_yarn_log_server_url=http://historyserver:8188/applicationhistory/logs/
YARN_CONF_yarn_timeline___サービスが有効=true
YARN_CONF_yarn_timeline___サービス_generic___アプリケーション___履歴_enabled=true
YARN_CONF_yarn_resourcemanager_system___metrics___publisher_enabled=true
YARN_CONF_yarn_resourcemanager_hostname=リソースマネージャー
YARN_CONF_yarn_timeline___サービスホスト名=履歴サーバー
YARN_CONF_yarn_resourcemanager_address=リソースマネージャー:8032
YARN_CONF_yarn_resourcemanager_scheduler_address=リソースマネージャー:8030
YARN_CONF_yarn_resourcemanager_resource___tracker_address=リソースマネージャー:8031

docker-composeファイルを作成する

次の内容の docker-compose.yml ファイルを作成します。

バージョン: "2"

サービス:
 ネームノード:
  イメージ: bde2020/hadoop-namenode:1.1.0-hadoop2.7.1-java8
  コンテナ名: ネームノード
  ボリューム:
   - hadoop_nameノード:/hadoop/dfs/name
  環境:
   - クラスター名=テスト
  環境変数:
   ./hadoop.env を参照してください。

 リソースマネージャー:
  イメージ: bde2020/hadoop-resourcemanager:1.1.0-hadoop2.7.1-java8
  コンテナ名: リソースマネージャ
  依存:
   - ネームノード
   -データノード1
   -データノード2
   -データノード3
  環境変数:
   ./hadoop.env を参照してください。

 履歴サーバー:
  イメージ: bde2020/hadoop-historyserver:1.1.0-hadoop2.7.1-java8
  コンテナ名: 履歴サーバー
  依存:
   - ネームノード
   -データノード1
   -データノード2
   -データノード3
  ボリューム:
   - hadoop_historyserver:/hadoop/yarn/タイムライン
  環境変数:
   ./hadoop.env を参照してください。

 ノードマネージャ1:
  イメージ: bde2020/hadoop-nodemanager:1.1.0-hadoop2.7.1-java8
  コンテナ名: ノードマネージャ1
  依存:
   - ネームノード
   -データノード1
   -データノード2
   -データノード3
  環境変数:
   ./hadoop.env を参照してください。

 データノード1:
  イメージ: bde2020/hadoop-datanode:1.1.0-hadoop2.7.1-java8
  コンテナ名: データノード1
  依存:
   - ネームノード
  ボリューム:
   - hadoop_datanode1:/hadoop/dfs/データ
  環境変数:
   ./hadoop.env を参照してください。

 データノード2:
  イメージ: bde2020/hadoop-datanode:1.1.0-hadoop2.7.1-java8
  コンテナ名: datanode2
  依存:
   - ネームノード
  ボリューム:
   - hadoop_datanode2:/hadoop/dfs/データ
  環境変数:
   ./hadoop.env を参照してください。

 データノード3:
  イメージ: bde2020/hadoop-datanode:1.1.0-hadoop2.7.1-java8
  コンテナ名: datanode3
  依存:
   - ネームノード
  ボリューム:
   - hadoop_datanode3:/hadoop/dfs/データ
  環境変数:
   ./hadoop.env を参照してください。

ボリューム:
 hadoop_nameノード:
 hadoop_datanode1:
 hadoop_datanode2:
 hadoop_datanode3:
 hadoop_historyサーバー:

Hadoop クラスターを作成して起動する

sudo docker-compose を実行します

Hadoop クラスターを起動した後、次のコマンドを使用して Hadoop クラスターのコンテナー情報を表示できます。

# クラスターに含まれるコンテナとエクスポートされたポート番号を表示します sudo docker-compose ps
   名前 コマンド 状態 ポート
------------------------------------------------------------
datanode1 /entrypoint.sh /run.sh 50075/tcp を起動
datanode2 /entrypoint.sh /run.sh アップ 50075/tcp
datanode3 /entrypoint.sh /run.sh アップ 50075/tcp
historyserver /entrypoint.sh /run.sh 8188/tcp を起動
namenode /entrypoint.sh /run.sh 50070/tcp を起動
nodemanager1 /entrypoint.sh /run.sh 8042/tcp を起動
リソースマネージャ /entrypoint.sh /run.sh 8088/tc を起動

# namenode の IP アドレスを表示します sudo docker inspect namenode | grep IPAddress

http://:50070 からクラスターのステータスを確認することもできます。

課題の提出

ジョブを送信するには、まずクラスター内のノードにログインする必要があります。ここでは、namenode ノードにログインします。

sudo docker exec -it namenode /bin/bash

データを準備してジョブを送信する

/opt/hadoop-2.7.1 をインストールします

# ユーザーディレクトリを作成 hdfs dfs -mkdir /user
hdfs dfs -mkdir /user/root

# データを準備する hdfs dfs -mkdir input
hdfs dfs -put etc/hadoop/*.xml 入力

# ジョブを送信します hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar grep input output 'dfs[az.]+'

# ジョブ実行結果を表示する hdfs dfs -cat output/*

データを消去

hdfs dfs -rm 入力/*
hdfs dfs -rmdir 入力/
hdfs dfs -rm 出力/*
hdfs dfs -rmdir 出力/

クラスターを停止する

CTRL+C を押すか、「sudo docker-compose stop」を使用すると、クラスターを終了できます。

クラスターを停止した後、作成されたコンテナは削除されません。停止したコンテナを削除するには、「sudo docker-compose rm」を使用します。 「sudo docker-compose down」を使用してコンテナを停止および削除することもできます。

コンテナを削除した後、「sudo docker volume ls」を使用して、上記のクラスターで使用されているボリューム情報を確認します。「sudo docker rm」を使用して削除できます。

上記のdockerを使ったkongクラスター構築操作に関する記事は、編集者が皆さんにシェアする内容の全てです。皆さんの参考になれば幸いです。また、123WORDPRESS.COMを応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Dockerサービスコマンドの詳しい説明(まとめ)
  • docker.service の起動に失敗しました: ユニットが見つからない原因と解決策
  • Dockerにおけるオーバーレイネットワークの詳細な説明
  • Dockerのオンラインおよびオフラインインストールと一般的なコマンド操作
  • Dockerの国内イメージソースを変更する方法
  • docker.service 起動エラーの詳細なトラブルシューティング

<<:  カーソル ループを使用して、MySQL ストアド プロシージャで一時テーブルを読み取る

>>:  XHTML: フレーム構造タグ

推薦する

MySQL マスタースレーブレプリケーションの詳細な分析

序文: MySQL では、マスター/スレーブ アーキテクチャが最も基本的かつ最も一般的に使用されるア...

HTML テーブル データを Json 形式に変換するサンプル コード

<table>テーブルデータをJSON形式に変換するJavaScript関数は次のとおり...

JS WebSocket 切断理由とハートビートの仕組みの詳しい説明

1. 切断理由WebSocket が切断される理由は多数あります。WebSocket が切断されたと...

ウェブページで CSS スタイルを適用するさまざまな形式の概要

1. インライン スタイル (<body></body> 内に配置されます)...

RedHat 6.5 に MySQL 5.7 をインストールするための詳細なチュートリアル

RedHat6.5インストールMySQL5.7チュートリアル共有、参考までに、具体的な内容は次のとお...

jQueryのチェーンプログラミングスタイルの詳細な例

チェーンプログラミングの実装原理jQuery を使用すると、開発者は常にドット構文を使用して独自のメ...

ie8/ie9/ie10/ie11 chrome firefox を区別するための CSS コード

ウェブサイトの互換性のデバッグは本当に面倒です。今日のウェブサイト デザイナーは、以前よりもはるかに...

Javascriptでシンプルなナビゲーションバーを実装

この記事では、参考までに、シンプルなナビゲーションバーを実装するためのJavascriptの具体的な...

JavaScript で二分探索木を実装する

JavaScriptでの検索二分木実装は参考までに。具体的な内容は以下のとおりです。バイナリ検索木 ...

Windows 7 での MySQL 8.0.18 の導入とインストールのチュートリアル

1. 事前準備 (windows7+mysql-8.0.18-winx64) 1. ダウンロードアド...

プロファイルを使用して遅い SQL を分析する MySQL の詳細な説明 (グループ左結合はサブクエリよりも効率的です)

プロファイルを使用して遅いSQLを分析するMySQL の SQL パフォーマンス アナライザーの主な...

dockerfile における ENTRYPOINT と CMD の組み合わせと違い

前回の記事【dockerコンテナのためのdockerfileを詳しく解説】では、dockerfile...

バントリストコンポーネントをスクロールしても、スクロールバーの位置は保持されます。

バントリストコンポーネントをスクロールするときに、スクロールバーの位置が保持されます。これは、kee...

UbuntuのVimにNERDTreeプラグインをインストールする詳細な手順

NERDTree は Vim 用のファイル システム ブラウザーです。このプラグインを使用すると、ユ...

Tomcat セキュリティ仕様 (Tomcat セキュリティ強化と仕様)

tomcat はオープンソースの Web サーバーです。Tomcat ベースの Web は実行効率...