Linux と Docker: 高可用性コンテナ クラスターを実装するにはどうすればよいですか?

PHPz
リリース: 2023-07-29 19:54:29
オリジナル
1552 人が閲覧しました

Linux と Docker: 高可用性コンテナ クラスターを実装するにはどうすればよいですか?

要約: コンテナ テクノロジーの発展に伴い、アプリケーションをコンテナにデプロイする企業が徐々に増えています。実稼働環境では、コンテナー クラスターの高可用性を実現することが重要です。この記事では、Linux と Docker を使用して高可用性コンテナ クラスターを構築する方法を紹介し、コード例を通じて具体的な実装方法を示します。

  1. Docker Swarm クラスターの構築
    Docker Swarm は、Docker が提供するネイティブ コンテナー クラスター管理ツールです。これにより、複数の Docker ホストをクラスターに形成し、コンテナーのデプロイと運用を均一に管理できるようになります。

まず、クラスターに参加する各 Docker ホストに Docker をインストールします。次に、Swarm クラスターの管理ノードとしてホストを選択し、次のコマンドを実行してクラスターを初期化します:

$ docker swarm init --advertise-addr <MANAGER-IP>
ログイン後にコピー

ここで、 は管理ノードの IP アドレスです。上記のコマンドにより、他のホストがクラスターに参加するためのトークンを取得します。次に、クラスターに参加したい他のホストで次のコマンドを実行します:

$ docker swarm join --token <TOKEN> <MANAGER-IP>:<PORT>
ログイン後にコピー

このうち、 は前の手順で取得したトークン、 です。ノードのIPアドレスとポート番号はそれぞれ管理用です。

  1. サービス検出の構成
    コンテナ クラスター内の各ノードは、他のノードを検出してアクセスできる必要があります。サービス ディスカバリを実装するには、Consul や Etcd などのツールを使用できます。ここでは領事を例に挙げます。

まず、すべての Docker ホストに Consul をインストールして起動します。次に、次のコマンドを実行して Consul サービスを作成します。

$ docker service create --name consul --publish 8500:8500 --constraint 'node.role == manager' gliderlabs/consul-server -bootstrap
ログイン後にコピー
ログイン後にコピー

このコマンドは、Swarm クラスターの管理ノード上に consul という名前のサービスを作成し、コンテナーの 8500 ポートをホストの 8500 ポートにマップします。

次に、他のノードで次のコマンドを実行して Consul サービスに参加します:

$ docker service create --name consul --network <NETWORK> gliderlabs/consul-agent -join consul
ログイン後にコピー

ここで、 は Swarm クラスターのネットワーク名です。

  1. コンテナ サービスの作成
    高可用性コンテナ クラスタでは、アプリケーションを複数のコンテナ インスタンスにデプロイし、負荷分散を通じてリクエストを分散する必要があります。 Docker Swarm は、コンテナ サービスを管理するためのサービスと呼ばれる概念を提供します。

まず、デプロイするアプリケーションを含む Docker イメージを準備します。次に、次のコマンドを実行してサービスを作成します:

$ docker service create --name <SERVICE-NAME> --replicas <REPLICAS> --publish <PORT> <IMAGE>
ログイン後にコピー

ここで、 はサービスの名前、 はデプロイするコンテナ インスタンスの数、 はサービスの名前です。マップされる番号です。ポート番号 は、アプリケーションが配置されている Docker イメージです。

  1. コンテナ サービスの実行
    前の手順で作成したサービスは、クラスタ内の複数のノードにコンテナ インスタンスを自動的にデプロイします。

次のコマンドを使用して、サービスの実行ステータスとコンテナ インスタンスの分散を表示できます:

$ docker service ls
$ docker service ps <SERVICE-NAME>
ログイン後にコピー
  1. 負荷分散の実現
    目的を達成するには負荷分散には、Docker Swarm の組み込み負荷分散機能を使用できます。サービスの名前とポート番号を使用して、サービスの背後にある複数のコンテナー インスタンスにアクセスできます。
  2. 自動拡張の実現
    コンテナクラスターの負荷が大きくなった場合、コンテナインスタンスの数を増やすことで自動拡張を実現できます。

次のコマンドを使用して、サービスのインスタンスの数を拡張できます:

$ docker service scale <SERVICE-NAME>=<REPLICAS>
ログイン後にコピー

ここで、 はサービスの名前、

概要: Linux と Docker を使用して高可用性コンテナ クラスターを構築すると、アプリケーションの可用性が向上するだけでなく、柔軟なスケーリングと負荷分散機能も提供されます。合理的な構成と管理により、効率的で安定したコンテナサービスを実現します。

コード例:

  1. Swarm クラスターの初期化:

    $ docker swarm init --advertise-addr 192.168.0.1
    ログイン後にコピー
  2. #Swarm クラスターに参加:

    $ docker swarm join --token <TOKEN> 192.168.0.1:2377
    ログイン後にコピー

  3. Consul サービスの作成:

    $ docker service create --name consul --publish 8500:8500 --constraint 'node.role == manager' gliderlabs/consul-server -bootstrap
    ログイン後にコピー
    ログイン後にコピー

  4. #Consul サービスに参加:
  5. $ docker service create --name consul --network my-network gliderlabs/consul-agent -join consul
    ログイン後にコピー

  6. アプリケーション サービスの作成:
  7. $ docker service create --name my-service --replicas 3 --publish 8080:8080 my-app
    ログイン後にコピー

  8. 拡張サービス インスタンスの数:
  9. $ docker service scale my-service=5
    ログイン後にコピー

    以上がLinux と Docker: 高可用性コンテナ クラスターを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!