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

推薦する

docker.service 起動エラーの詳細なトラブルシューティング

エラーを報告するには次のコマンドを実行しますsystemctl dockerを再起動しますエラーメッ...

Linux で特定の時間にコマンドを実行する方法

先日、rsync を使用して LAN 上の別のシステムに大きなファイルを転送していました。非常に大き...

Dockerモードで起動したTomcatのホームページにアクセスすると404エラーが発生する

シナリオ: docker で tomcat を起動すると (Alibaba Cloud からダウンロ...

WindowsでのMySQLインストールチュートリアルの詳細な紹介

目次1. ダウンロードする前に理解しておくべき概念2. 必要なバージョンを選択する3. MySQLサ...

MySQLの高性能最適化スキルの概要

データベースコマンド仕様すべてのデータベース オブジェクト名には小文字を使用し、アンダースコアで区切...

ウェブフロントエンド開発の細部

1 選択タグは閉じられている必要があります <select></select>...

Linux周辺ファイルシステムのカスタマイズ方法

序文一般的に、Linux システムについて話すときは、Linux カーネルと GNU プロジェクトに...

モバイル端末のジャンプ問題を解決する(CSS遷移、ターゲット疑似クラス)

序文モバイル端末に触れたばかりの友人の多くは、クリックジャンプルーティング、特にVueルーティングを...

CSS3は子供のころの紙飛行機を実現する

今日は折り紙飛行機(飛べる飛行機)を作ります基本的にすべてCSSで実装されており、JSはごく一部に過...

Docker、プレーヤー機能を備えたCMSオンデマンドシステムを構築

目次文章1. 機械を準備する2. Dockerをインストールする1. 依存パッケージをインストールす...

Dockerは1行のコマンドでFTPサービス構築の実装を完了します

1行のコマンド docker run -d \ -v /share:/home/vsftpd \ -...

MySQL ステートメントに一重引用符またはバックスラッシュを含む値を挿入する方法

序文この記事では主に、シングルクォートやバックスラッシュを含む値を挿入するMySQLステートメントに...

JavaScript の寄生的構成継承についての簡単な説明

コンポジション継承組み合わせ継承は、疑似古典的継承とも呼ばれます。これは、昨日説明したプロトタイプ ...

Vue で動的なスタイルを実現するためのさまざまな方法のまとめ

目次1. 三項演算子の判定2. 動的に設定されるクラス3. 方法判定4. 配列バインディング5. e...

nginxコンテナ設定ファイルの独立した実装

コンテナを作成する [root@server1 ~]# docker run -it --name ...