다음과 같은 간단한 네트워크 토폴로지를 사용하여 4 x RPi 클러스터를 설정합니다.
4개의 RPi 노드에는 모두 최신 Ubuntu Server LTS 20.04 운영 체제가 있습니다. rpi1은 내 마스터/게이트웨이 노드입니다. rpi1에서 다음을 수행했습니다.
- netplan을 사용하여 eth0 10.0.0.1에 고정 IP 주소를 할당합니다.
systemd-resolved
수동으로/etc/resolv.conf
값을 비활성화 하고 생성합니다.nameserver 127.0.0.1
- 설정은
dnsmasq
다음과 같습니다/etc/dnsmasq.conf
.
# Basics:
interface=eth0
listen-address=127.0.0.1
# DHCP Settings (MAC Addresses removed)
dhcp-range=10.0.0.1,10.0.0.128,12h
dhcp-host=XX:XX:XX:XX:XX:XX,rpi1,10.0.0.1
dhcp-host=XX:XX:XX:XX:XX:XX,rpi2,10.0.0.2
dhcp-host=XX:XX:XX:XX:XX:XX,rpi3,10.0.0.3
dhcp-host=XX:XX:XX:XX:XX:XX,rpi4,10.0.0.4
dhcp-option=option:router,10.0.0.1
dhcp-option=option:dns-server,10.0.0.1
dhcp-option=option:netmask,255.255.255.0
# Forward to nameservers:
server=8.8.8.8
server=8.8.4.4
# Misc
bind-interfaces
domain-needed
bogus-priv
expand-hosts
- 파일에 ID를 추가하십시오
/etc/hosts
.
10.0.0.1 rpi1
10.0.0.2 rpi2
10.0.0.3 rpi3
10.0.0.4 rpi4
이 설정은 MAC 주소를 기반으로 나머지 "보조" 노드(rpi2, rpi3, rpi4)의 eth0 장치에 필요한 IP 주소를 올바르게 할당하므로 DHCP 서버로서 성공한 것으로 보입니다.
그러나 rpi1에서 실행되는 dnsmasq-DHCP 서버가 브로드캐스트하는 네임 서버를 등록하기 위해 보조 노드에서 netplan을 사용하는 방법을 모르겠습니다. /etc/netplan/50-cloud-init.yaml
보조 노드의 파일에서 다양한 설정을 시도했지만 실행하면 항상 sudo netplan apply
다음 /etc/resolv.conf
과 같은 네임서버 위치 정보가 포함된 파일이 생성됩니다.
nameserver 127.0.0.53
options edns0
/etc/resolv.conf
rpi1( )을 가리키도록 수동으로 편집하면 nameserver 10.0.0.1
작동하지만(예: rpi2로 시작할 수 있음 ) dnsmasq 브로드캐스트의 정보를 기반으로 ping rpi3
실행이 자동으로 설정되지 않는 이유를 이해하고 싶습니다 . netplan apply
내 환경에서 다양한 설정을 시도했지만 /etc/netplan/50-cloud-init.yaml
생성된 파일에는 아무런 영향도 미치지 않는 것 같습니다 /etc/resolv.conf
.
/etc/netplan/50-cloud-init.yaml
여기가 포기하기 전에 rpi2의 파일을 마지막으로 살펴본 곳입니다(참고: 초기 설정/디버깅을 위해 여기에서 직접 Wi-Fi 액세스도 활성화했습니다).
network:
version: 2
ethernets:
eth0:
dhcp4: true
optional: true
dhcp4-overrides:
use-dns: false
nameservers:
addresses: [10.0.0.1]
wifis:
wlan0:
optional: true
access-points:
"my-wifi-signal":
password: "mypassword"
dhcp4: no
addresses: [192.168.0.52/24]
gateway4: 192.168.0.1
nameservers:
addresses: [8.8.8.8,8.8.4.4]
또한 이상한 점은 systemd-resolve --status
이 구성을 적용한 후 netplan을 실행하면 이제 rpi1에서 필요한 DNS 이름 서버의 위치를 인식하는 것 같다는 것입니다.
$ systemd-resolve --status
...
Link 2 (eth0)
Current Scopes: DNS
DefaultRoute setting: yes
LLMNR setting: yes
MulticastDNS setting: no
DNSOverTLS setting: no
DNSSEC setting: no
DNSSEC supported: no
Current DNS Server: 10.0.0.1
DNS Servers: 10.0.0.1
...하지만 앞서 말했듯이 ping rpi4
rpi3에서 이 작업을 수행하려고 하면 작동하지 않습니다("ping: rpi4: 이름 확인이 일시적으로 실패했습니다"라는 메시지가 표시됨).
간단히 말해서:
런타임이 sudo netplan apply
DHCP 서버에 DNS 이름 서버를 쿼리하도록 하고 이를 설정하는 데 어떻게 사용할 수 있습니까 /etc/resolv.conf
?