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: フレーム構造タグ

推薦する

Linux ファイルを分割するための split コマンドの詳細な説明

いくつかの簡単な Linux コマンドを使用すると、ストレージまたは電子メールの添付ファイルのサイズ...

Vue スキャフォールディング学習プロジェクト作成方法

1. 足場とは何ですか? 1. Vue CLI Vue CLI は、Vue.js をベースにした迅速...

CSS3 を使用して中心点の周りに要素を配置する方法の例

この記事では、CSS3 を使用して中心点を中心に要素をレイアウトする方法の例を紹介します。詳細は次の...

MYSQL接続ポートが占有され、ファイルパスエラーが発生する問題を解決します

今朝、私は Wampserver を使用してローカルの win7 マシン上に PHP 環境を構築し、...

CSS と JavaScript を使用して管理ダッシュボードのレイアウトを構築するためのサンプル コード

あなたが作成するものこの新しいチュートリアルでは、CSS と JavaScript を使用して、レス...

Linux sshのデフォルトのリモートポート番号を変更する6つの手順

Linux のデフォルトの ssh リモート ポートは 22 です。デフォルトのポートは、悪意のある...

LINUX でプロセスを表示する 4 つの方法 (要約)

プロセスは CPU とメモリ内で実行されるプログラム コードであり、各プロセスは 1 つ以上のプロセ...

Centos7 に yum 経由で MySQL をインストールする方法

1. MySQLがインストールされているかどうかを確認する yum インストール済みリスト | gr...

Linux環境でのDockerインストールチュートリアル

1. 設置環境Dockerは次のCentOSバージョンをサポートしていますCentOS 6.5 (6...

JavaScript の new 演算子を自分で実装する方法

目次コンストラクタ新しいオペレーター自分で新しいものを実装するコンストラクタnew を導入する前に、...

MySQLデータ移行の概要

目次序文: 1. データ移行について2. 移行計画と留意点要約:序文:日常業務では、テーブル、データ...

Vue ページでよりエレガントに画像を紹介する方法

目次エラーのデモンストレーション計算により画像が変わらない場合は直接インポートするCSS変数による画...

MySQL IN ステートメントにおける低速クエリの効率を最適化する手法の例

表の構造は以下のとおりです。記事数は690件のみです。 記事テーブル article(id,titl...

1 つの記事で Node.js の非同期プログラミングを学ぶ

目次 はじめに 同期 非同期とブロッキング JavaScript のノンブロッキング コールバック ...

テーブル編集操作を実現する js+Html

この記事では、テーブルの編集操作を実現するためのjs+Htmlの具体的なコードを参考までに共有します...