Debian 11では、それぞれ独自の設定を持つ2つの蚊エージェントを実行したいと思います。 1つのインスタンスがインストールされ実行されていますが、2番目のインスタンスを起動する方法がわかりません。初めて触れる内容なので、できるだけ簡単で明確に答えてください。
答え1
まず、ネットワークの基本:単一のサーバーだけが単一のIPアドレスから同じTCPポートをリッスンできます。
したがって、2つの異なるIPアドレスを使用するか、異なるポートを設定する必要があります。
ところで、Linuxコンテナ全体の世界は、主に単一のLinuxシステムで同じタイプのサービスを複数実行し、さまざまなタスクを実行するために使用されます。 Docker、LXC、Kubernetes...これらのことについて聞いたことがあるでしょう。
したがって、ユースケースに合わせて同じことを行うことはそれほど難しくありません!特にあなたは蚊をインストールする方法をすでに知っているようです(私はこれについて全く知りません)。
Debianには一種のコンテナランナーをインストールする必要があります。 Debian 11 はすぐに利用可能な podman に同梱されており、新しいデーモンや奇妙な依存関係を導入しないので、続けてみましょう。
sudo apt install -y podman
それほど苦痛ではありません:) したがって、ローカルユーザー(ルートだけでなく)がコンテナを実行できることを確認します。
sudo usermod --add-subuids 100000-165535 --add-subgids 100000-165535 YOURUSERNAMEHERE
すごい!ログアウトしてもう一度ログインして魔法をテストしてみましょう。
podman run -it --rm debian:11
これにより、「debian:11」イメージで新しいコンテナが実行されます。私対話的にティー終了後に削除してください。
試してみてください!これはあなたが持っているきれいなDebian-in-a-containerです。apt update
「外部」 Debian にまったく触れずにその中で実行でき、その中に一部のソフトウェアをインストールするなどの作業ができます。 「いいね!」と入力すると、exit
すべての騒ぎが終わります。コンテナ内で行った作業の痕跡は残りません。
おそらくこれがどこに行くのか知っているでしょう。このようなコンテナ内に蚊を取り付け、必要に応じて設定し、ネットワークに接続します。
この目標を達成するために、
- 必要なソフトウェアを含むコンテナを構築します。
- ただし、構成ファイルを外部に配置すると、コンテナ内で変更できます。
- その後、適切なMQTTポートを取得してネットワークに公開します。
まず、ネットワークポートを識別しましょう。 4444を使用すると仮定します。他の65536>ポート> 1024も動作します。
したがって、まず新しいディレクトリを作成します(ホームディレクトリは/ home / marekと仮定し、必要に応じて調整します)。
mkdir -p /home/marek/mosquitto-container/config
次に、Mosquittoを新しくインストールし、ここにデフォルトの設定ファイルを配置します。これを行うには、Debianコンテナを作成してMosquittoをインストールしてから、後でいつでも再起動できるようにコンテナイメージに保存します。ここでは、「外部」 Debian のディレクトリ (/home/marek/mosquitto-container/config) を「内部」 Debian の (おそらく別の) ディレクトリ (/etc/mosquitto) にマッピングする「ボリューム」を使用します。
podman run --name mareksmosquitto --rm -v /home/marek/mosquitto-container/config:/etc/mosquitto debian:11
[root@124578]# apt-get update; apt-get install -y mosquitto'
[root@124578]# apt-get install -y mosquitto
別の端末でコンテナの状態をイメージにコミットします。
podman commit mareksmosquitto mareksmosquittoimage
すごい!私たちがしたことは、蚊がインストールpodman run …
されたDebianシステムで実行できるイメージを作成することでした。必要な蚊の構成をここに置くことができます。-v /path/on/outer/:/etc/mosquitto
ランタイムで使用する構成ディレクトリを指すだけです!
これで、最初の端末に戻ってコンテナを終了できます。
[root@124578]# exit
/home/marek/mosquitto-container/configを見てください! mosquitto.confを含む複数の構成ファイルが必要です。必要に応じて編集してください。特にポートを4444(1883または8883ではない)に設定してください。
必要に応じてmosquitto.confを変更したら、プロセス全体をテストします。
podman run -it --rm -v /home/marek/mosquitto-container/config:/etc/mosquitto -p 4444:4444 mareksmosquittoimage /usr/sbin/mosquitto
従来と異なる点は次のとおりです。
- これで、コンテナ内のポート4444をコンテナ外のポート4444に公開します
-p 4444:4444
。 mareksmosquittoimage
公式イメージではなくコンテナを実行しますdebian:11
。- コンテナ内でシェルを起動する代わりに、新しいコンテナ内で/usr/sbin/mosquittoを直接実行します。だから私たちは蚊を追いかけます。
20のブローカーをさらに運営するには、何をすべきか考えてみましょう。はい、上記のコマンドを20回実行するだけです。ただし、-v
毎回このオプションを使用して異なる設定ディレクトリを指定し、異なるポートを使用します-p
。
答え2
次の2行を追加しました/etc/rc.local
。
/path/to/mosquitto -d -c config1
/path/to/mosquitto -d -c config2
したがって、システムが再起動されるたびに、両方の蚊の設定が実行されます。