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 Load Dataの多様な用途1. LOAD の基本的な背景2. 基本パラメータをロ...

mysql8.0.14.zip のインストール中にデータ フォルダを自動的に作成できませんでした。サービスを開始できません。

今日システムを再インストールした後、コンピューターに mysql を再インストールし、ZIP ファイ...

HTML 5.1 学習: 14 の新機能とアプリケーション例

序文ご存知のとおり、HTML5 はインターネット コミュニティ全体に標準を提供する組織である Wor...

CSSは親コンテナのdivをimg画像で埋め、コンテナのサイズに適応します。

ページに複数の画像を導入すると、画像のサイズがばらつくことがあります。しかし、それらを一貫したサイズ...

JavaScript 配列と非配列オブジェクトのディープ クローンとシャロー クローンの原則の詳細な説明

目次シャロークローニングとディープクローニングとは何ですか? 1. アレイのクローンを作成する1.1...

HTML 中国語文字エンコード標準の概要

HTML では、Web ページで使用されるエンコーディングを指定する必要があります。一般的な指定方法...

Tomcatの各ポートの機能の詳細な説明

tomcat 設定ファイルから、tomcat の起動時にデフォルトで 8080 (8443)、800...

ページスピードの最適化の概要

インターネットは人々の生活にますます欠かせないものになってきていると思います。 Ajax や fle...

ウェブページ経由で jar パッケージを Nexus にアップロードする方法

Maven を使用してプロジェクトを管理する場合、jar パッケージをプライベート ウェアハウスにア...

MySQL 8.0.26 のインストールと簡易チュートリアル (インターネット上で最も完全)

目次1. MySQLをダウンロードする1.1 ダウンロード1.2 インストール1. MySQLをダウ...

MySQL 8.0 のユーザーとロールの管理原則と使用方法の詳細

この記事では、MySQL 8.0 のユーザーとロールの管理について例を挙げて説明します。ご参考までに...

VMware12 に CentOS8 をインストールする方法 (VM 仮想マシンに CentOS8 をインストールするチュートリアル)

数日前に CentOS8 がリリースされました。8 の最初のバージョンですが、今日は VM12 に ...

MySQLのバックアップとリカバリの簡単な分析

目次1. はじめに2. バックアップとリカバリの簡単な定義3. 復旧計画で考慮すべきいくつかの要素4...

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

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

HTML の基本 - ハイパーリンク スタイルを設定する簡単な例

*** ハイパーリンクのスタイル設定の例a:link クリックされる前のハイパーリンクの状態a:vi...