Debian 11에서 여러 모기 프록시를 실행하는 방법은 무엇입니까?

Debian 11에서 여러 모기 프록시를 실행하는 방법은 무엇입니까?

Debian 11에서 각각 고유한 구성을 가진 2개의 모기 에이전트를 실행하고 싶습니다. 하나의 인스턴스가 설치되어 실행 중이지만 두 번째 인스턴스를 시작하는 방법을 모르겠습니다. 처음 접하는 내용이므로 최대한 간단하고 명확하게 답변해 주시기 바랍니다.

답변1

첫째: 네트워킹 기본 사항: 단 하나의 서버만 단일 IP 주소에서 동일한 TCP 포트를 수신할 수 있습니다.

따라서 두 개의 서로 다른 IP 주소를 사용하거나 서로 다른 포트를 구성해야 합니다.

그건 그렇고, 전체 Linux 컨테이너 세계는 주로 단일 Linux 시스템에서 동일한 유형의 서비스를 여러 개 실행하고 다양한 작업을 수행하는 데 사용됩니다. Docker, LXC, Kubernetes... 이런 것들에 대해 들어보셨을 것입니다.

따라서 사용 사례에 맞게 동일한 작업을 수행하는 것은 그리 어렵지 않습니다! 특히 당신은 모기를 설치하는 방법을 이미 알고 있는 것 같으니 (저는 이것에 대해 전혀 모릅니다).

데비안에 일종의 컨테이너 러너를 설치해야 합니다. 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"외부" 데비안을 전혀 건드리지 않고도 그 안에서 실행할 수 있고, 그 안에 일부 소프트웨어를 설치하는 등의 작업을 할 수 있습니다 . 좋아요 를 입력하면 exit모든 소란이 끝납니다. 컨테이너 내부에서 수행한 작업에 대한 흔적이 남지 않습니다.

아마도 이것이 어디로 가는지 알고 있을 것입니다. 이와 같은 컨테이너 내부에 모기를 설치하고 필요에 따라 설정한 다음 네트워크에 연결합니다.

이 목표를 달성하기 위해 우리는

  1. 필요한 소프트웨어가 포함된 컨테이너를 구축하세요.
  2. 하지만 구성 파일을 외부에 배치하면 컨테이너 내부에서 변경할 수 있습니다.
  3. 그리고 해당 MQTT 포트를 가져와 네트워크에 노출하세요.

먼저 네트워크 포트를 식별해 보겠습니다. 4444를 사용할 것이라고 가정합니다. 다른 65536 > 포트 > 1024도 작동합니다.

따라서 먼저 새 디렉터리를 만듭니다(홈 디렉터리는 /home/marek이라고 ​​가정하고 필요한 경우 조정합니다).

mkdir -p /home/marek/mosquitto-container/config

다음으로 Mosquitto를 새로 설치하고 여기에 기본 구성 파일을 넣습니다. 이를 위해 Debian 컨테이너를 생성하고 Mosquitto를 설치하도록 한 다음 나중에 언제든지 다시 시작할 수 있도록 컨테이너 이미지에 저장하면 됩니다. 여기서는 "외부" 데비안의 디렉터리(/home/marek/mosquitto-container/config)를 "내부" 데비안의 (아마도 다른) 디렉터리(/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 …모기가 설치된 데비안 시스템에서 실행될 수 있는 이미지를 만드는 것이었습니다. 원하는 모기 구성을 여기에 넣을 수 있습니다. -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

방금 다음 두 줄을 추가했습니다 /etc/rc.local.

/path/to/mosquitto -d -c config1
/path/to/mosquitto -d -c config2

따라서 시스템이 재부팅될 때마다 두 가지 모기 구성이 모두 실행됩니다.

관련 정보