ホームページ >運用・保守 >Linuxの運用と保守 >Linux と Docker: 高可用性コンテナ クラスターを実装するにはどうすればよいですか?

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

PHPz
PHPzオリジナル
2023-07-29 19:54:291588ブラウズ

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>

このうち、fe44cc81ab4c20272595cc1edf562112 は前の手順で取得したトークン、50c92af3965d072a01ca8b69c30c4169 と a3b0c87895079be75e30be94102cc20b です。ノードの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

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

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

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

$ docker service create --name <SERVICE-NAME> --replicas <REPLICAS> --publish <PORT> <IMAGE>

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

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

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

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

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

$ docker service scale <SERVICE-NAME>=<REPLICAS>

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

概要: 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。