Server mit Proxmox aufsetzen.page 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399
  1. # Hardware und Zugang
  2. Es gibt 2 Server mit gleicher Hardware: hypervisor01 (1) bei rrbone und blech02 (2) im WILA.
  3. Seit Herbst 2023 steht blech02 bei myloc in Düsseldorf.
  4. | Gerät | Komponente | Adresse/Netzmaske | Gateway | VLAN |
  5. |---|----|---|---|---|
  6. | hypervisor01 | Management | 31.172.28.215/26 | 31.172.28.254 | n/a |
  7. | hypervisor01 | Proxmox | 31.172.33.30/27 | 31.172.33.1 | n/a |
  8. | blech02 | Stromschaltleiste | 192.168.48.38/24 | 192.168.48.1 | n/a |
  9. | blech02 | Management | 192.168.48.70/24 | 192.168.48.1 | n/a |
  10. | blech02 | Proxmox 1. Adresse | 91.204.4.52/28 | 91.204.4.49 (oder .50) | 160 |
  11. | blech02 | Proxmox 2. Adresse | 91.204.5.46/25 | 91.204.5.1 | 510 |
  12. Die 192er Adressen sind zwar private IP, aber aus dem FF@home Wartungsnetz zu erreichen.
  13. Mit der Stromschaltleiste wird der Strom für das Gehäuse und damit zunächst für das Managementboard im Gehäuse eingeschaltet. Nun sind IPMI-Konsole und Webinterface des Managementboards nutzbar. Die Stromschaltleiste wird in Düsseldorf nicht benötigt.
  14. Mit dem Managementboard kann dann der eigentliche Server eingeschaltet werden (im Webinterface: roter Knopf oben rechts).
  15. Die Maschine (1) hat keine vorgeschaltete Stromschaltleiste. Macht nix, denn hypervisor01 muss sowieso durchlaufen, weil fast der ganze FF-DO auf ihn angewiesen ist.
  16. Aber solange blech02 noch nicht im Produktivbetrieb ist, gilt: **blech02 bitte komplett ausschalten**, d.h. auch per Stromleiste. Das Klima (und die Stromrechnung;) werden es danken: Denn so eine Maschine verbraucht idle fast 100 Watt. Und selbst wenn der eigentliche Server aus ist, verbraucht das Managementboard immer noch 20 Watt:-(
  17. Vom Managementboard aus kann man auf das Bootmenü und die serielle Konsole des Servers zugreifen. Damit kann man ein virtuelles Installations-Medium booten um ein OS auf dem Server zu installieren (in unserem Fall Debian/Proxmox) sowie die IP-Konfiguration im OS durchzuführen und zu prüfen. Nun (endlich:) kann man übers Netzwerk die Proxmox-GUI direkt erreichen und das Proxmox darüber weiter konfigurieren.
  18. # Stromschaltleiste
  19. Die Stromschaltleiste hat eine GUI und ist selbsterklärend. Es können die beiden Dosen 21 und 22 geschaltet werden, der Server hat 2 Netzteile.
  20. # IP Management IPMI-Konsole
  21. Mit der vorgeschalteten IPMI-Konsole kann der Server verwaltet werden. Als Erstes sollte der Server eingeschaltet werden, sein Schaltzustand ist oben links rot=aus oder grün=ein zu erkennen.
  22. Die IPMI-Konsole bietet eine Serverkonsole auf Java-Basis, mit der der Bootvorgang gesteuert werden kann. Dort können auch externe Speicher mit ISO-Dateien der Proxmox-Software eingebunden werden, um sie zu installieren.
  23. Bei der Installation sollten die beiden Platten als ZFS-Laufwerke Raid1 formatiert werden. Der Server hypervisor01 hat noch zusätzlich 2 SSD sda und sdb aus einem Vorgänger.
  24. # Netzwerk-Konfiguration mit der IPMI-Konsole
  25. Bei der Installation von Proxmox wird auch die Netzwerkkonfiguration eingestellt, dann sollte der Zugriff auf die Proxmox-Oberfläche möglich sein. Falls das nicht der Fall ist, muss das Netzwerk über die IPMI-Konsole und dort über die bash konfiguriert werden. Die Dateien /etc/resolv.conf und /etc/network/interfaces werden im nächsten Absatz erläutert, müssen aber notfalls hier eingegeben und bearbeitet werden.
  26. # lesson learned 1
  27. Bei der Installation von Proxmox in der IPMI-Konsole war ein Tippfehler für die DNS-ip aufgetreten, der später in der Proxmox-Oberfläche die Namensauflösung verhinderte. (91.204.56.66 statt 91.204.6.66) Das fiel erst bei der Prüfung von resolv.conf auf. Die Datei resolv.conf war während der Installation (falsch) erstellt worden. Sie wurde nachträglich korrigiert.
  28. # lesson learned 2 Beim Booten nur die bash aufrufen
  29. Das kann notwendig sein, um Änderungen am Dateisystem oder am root-Passwort vorzunehmen.
  30. 1. GRUB-Menü während des Bootens aufrufen
  31. Starten Sie den Computer neu.
  32. Halten Sie die Shift-Taste (bei BIOS-Systemen) oder Esc-Taste (bei UEFI-Systemen) gedrückt, um das GRUB-Menü anzuzeigen.
  33. 2. Kernel-Boot-Eintrag bearbeiten
  34. Wählen Sie den gewünschten Kernel-Eintrag (z. B. die aktuelle Linux-Version) aus.
  35. Drücken Sie die Taste e, um den Eintrag zu bearbeiten.
  36. 3. Boot-Parameter anpassen
  37. Suchen Sie die Zeile, die mit linux oder linux16 beginnt.
  38. Gehen Sie zum Ende dieser Zeile und fügen Sie folgende Parameter hinzu:
  39. Kopieren
  40. init=/bin/bash
  41. Beispiel:
  42. linux /boot/vmlinuz-5.15.0-XX-generic root=UUID=... ro quiet splash init=/bin/bash
  43. 4. System mit den neuen Parametern starten
  44. Drücken Sie Strg + X oder F10, um das System mit den geänderten Parametern zu starten.
  45. Das System startet direkt in eine Bash-Shell mit Root-Rechten.
  46. Wichtig:
  47. Dateisystem schreibbar mounten:
  48. Falls das Dateisystem schreibgeschützt gemountet ist, geben Sie in der Bash ein:
  49. bash
  50. Kopieren
  51. mount -o remount,rw /
  52. # Proxmox-Oberfläche und ssh
  53. Die Proxmox-Oberfläche ist nur zu erreichen, wenn die Stromschaltleiste zugeschaltet und in der IPMI-Konsole der Server eingeschaltet sind. Ein Zugang ist dann auch per ssh möglich, das Passwort entspricht dem der Proxmox-Oberfläche.
  54. # Netzwerkkonfiguration
  55. ## Konfiguration hypervisor01 rrbone
  56. Die beiden Dateien resolv.conf und interfaces:
  57. root@hypervisor01:~# cat /etc/resolv.conf
  58. search ffdo.de
  59. nameserver 195.182.2.2
  60. nameserver 195.182.2.22
  61. root@hypervisor01:~# cat /etc/network/interfaces
  62. auto lo
  63. iface lo inet loopback
  64. auto enp65s0f0
  65. iface enp65s0f0 inet manual
  66. auto enp65s0f1
  67. iface enp65s0f1 inet manual
  68. auto bond0
  69. iface bond0 inet manual
  70. bond-slaves enp65s0f0 enp65s0f1
  71. bond-miimon 100
  72. bond-mode 802.3ad
  73. bond-xmit-hash-policy layer3+4
  74. auto vmbr0
  75. iface vmbr0 inet static
  76. address 31.172.33.30/27
  77. gateway 31.172.33.1
  78. bridge-ports bond0
  79. bridge-stp off
  80. bridge-fd 0
  81. iface vmbr0 inet6 static
  82. address 2a01:a700:48af::30/64
  83. gateway 2a01:a700:48af::1
  84. auto vmbr1
  85. iface vmbr1 inet manual
  86. bridge-ports none
  87. bridge-stp off
  88. bridge-fd 0
  89. mtu 9000
  90. #FFDO INT
  91. ### Aufbau der Netzwerkkonfiguration hypervisor01
  92. Die beiden physikalischen Schnittstellen enp65s0f0 und enp65s0f1 werden eingeschaltet und über die bond0-Schnittstelle logisch zusammengefasst, d.h. der Durchsatz wird verdoppelt. Die bond0-Schnittstelle wird über die Bridge vmbr0 mit der ip 31.172.33.30/27 und dem gateway 31.172.33.1 verbunden.
  93. Wichtig: die Bridge ist für die Verbindung der VMs nach aussen notwendig, ohne Bridge können für die VMs keine Schnittstellen eingerichtet werden.
  94. - Images für die VM
  95. ISO- oder andere image-Dateien werden unter /var/lib/vz unter den jeweiligen Unterverzeichnissen z.B. .../iso abgelegt.
  96. Eine Möglichkeit, dorthin Dateien zu kopieren, ist z.B. root@hypervisor01~ /var/lib/vz/iso# scp user@quell-ip:/tmp/dateiname zieldateiname (oder ".", wenn gleich). Damit stehen sie bei der Erstellung einer VM zur Auswahl.
  97. ## Konfiguration blech02 WiLa
  98. Die beiden Dateien resolv.conf und interfaces:
  99. root@blech02:~# cat /etc/resolv.conf
  100. search ffdo.net
  101. nameserver 91.204.6.66
  102. nameserver 91.204.4.5
  103. nameserver 193.43.220.130
  104. root@blech02:~# cat /etc/network/interfaces
  105. auto lo
  106. iface lo inet loopback
  107. iface eno2np1 inet manual
  108. auto eno1np0
  109. iface eno1np0 inet manual
  110. # WiLa housing Subnetz
  111. auto eno2np1.510
  112. iface eno2np1.510 inet static
  113. address 91.204.5.46/25
  114. gateway 91.204.5.1
  115. vlan-rawdevice eno2np1
  116. dns-nameservers 91.204.6.66 91.204.4.5 193.43.220.130 193.43.220.133
  117. dns-namesearch ffdo.net
  118. iface enp65s0f0np0 inet manual
  119. iface enp65s0f1np1 inet manual
  120. allow-hotplug vmbr0
  121. auto vmbr0
  122. iface vmbr0 inet manual
  123. bridge-ports eno1np0
  124. bridge-stp off
  125. bridge-fd 0
  126. bridge-vlan-aware yes
  127. bridge-vids 2-4094
  128. # WiLa BGP Subnetz
  129. allow-hotplug vmbr0.160
  130. auto vmbr0.160
  131. iface vmbr0.160 inet manual
  132. vlan-rawdevice vmbr0
  133. pre-up ip link set vmbr0 up
  134. up ip address add 91.204.4.52/28 broadcast 91.204.4.63 dev vmbr0.160
  135. Zu der etwas unschönen Konfiguration von vmbr0.160 ist noch zu bemerken, dass zZ (Mai 2022) auf dem Proxmox-Host offenbar eine ältere Version von ifup/ifdown zu Einsatz kommt:
  136. root@blech02:~# cat /etc/debian_version
  137. 11.3
  138. root@blech02:~# ifup -V
  139. ifup version 0.8.36+pve1
  140. ### Aufbau der Netzwerkkonfiguration blech02
  141. Die beiden 10-Gbit-Schnittstellen enp65s0f0 und enp65s0f1 werden zZ nicht genutzt.
  142. Die physikalische Schnittstelle eno2np1 ist mit dem Housing-Netz des WiLa verbunden. Das VLAN 510 wird statisch konfiguriert und erhält eine Adresse des WiLa und eine default route.
  143. Die physikalische Schnittstelle eno1np0 ist mit dem Teil des WiLa verbunden, in dem dynamisch geroutet wird. eno1np0 wird nicht selbst konfiguriert, sondern wird ein Port der Bridge vmbr0. An diese werden auch die VMs angeschlossen. Auf vmbr0 wird das VLAN 160 konfiguriert, sodass Proxmox selbst auch eine Adresse im diesem Netz erhält. Die VMs können sich autonom die VLANs auf ihrem Bridgeport konfigurieren, die sie benötigen. Dies sind bisher VLAN 160 (uplink BGP) und VLAN 2007 (OSPF zwischen FF-DO-Routern), zukünftig zB auch noch VLAN 2005 (Richtfunk Monitoring) und VLAN 2010 (B.A.T.M.A.N. mit dem Richtfunk in der Braunschweiger Str.).
  144. ### Netzwerkkonfiguration einer VM auf blech02
  145. Leider funktioniert auch hier keine einfache inet static ... address Konfiguration, denn dann fehlen interessanterweise die broadcast Adressen auf den Interfaces.
  146. root@blech02vm101:/etc/network # cat interfaces
  147. auto lo
  148. iface lo inet loopback
  149. up ip addr add 193.43.220.131/32 dev lo
  150. # The primary network interface
  151. # bridge mit blech02:vmbr0
  152. auto ens18
  153. iface ens18 inet manual
  154. # VLAN 160: WiLa BGP Subnetz
  155. auto ens18.160
  156. iface ens18.160 inet static
  157. vlan-rawdevice ens18
  158. pre-up ip link set ens18 up
  159. up ip address add 91.204.4.54/28 broadcast 91.204.4.63 dev ens18.160
  160. # VLAN 2007: FF-DO Layer 3 mesh (OSPF)
  161. auto ens18.2007
  162. iface ens18.2007 inet static
  163. vlan-rawdevice ens18
  164. pre-up ip link set ens18 up
  165. up ip address add 193.43.220.114/28 broadcast 193.43.220.127 dev ens18.2007
  166. # s. /etc/tinc/wan/tinc-up ...
  167. # nohup sh -c "sleep 5 ; ifup $INTERFACE" &
  168. # ... um indeterministisches friendly fire zwischen den systemd units
  169. # networking.service und tinc.service zu vermeiden:-(
  170. # (Wer mag systemd und kennt eine saubere Loesung?)
  171. allow-hotplug wan
  172. iface wan inet static
  173. mtu 1504
  174. up ip address add 193.43.220.163/27 broadcast 193.43.220.191 dev wan
  175. up ip rule add from all iif ens18.160 lookup 1 prio 1000 || true
  176. up ip rule add from 91.204.4.54/32 lookup 1 prio 1010 || true
  177. Wer's schöner (und trotzdem reboot- und power-cycle-fest) hinkriegt, melde sich bitte. Hier die Versionsinfo (Mai 2022):
  178. root@blech02vm101:~ # cat /etc/debian_version
  179. 11.3
  180. root@blech02vm101:~ # ifup -V
  181. ifupdown2:3.0.0-1
  182. # Update von Proxmox 6.3 auf 6.4 und 7.1
  183. ## Update von Proxmox 6.3 auf 6.4
  184. Das wird in der Konsole über apt update und apt-upgrade vorgenommen.
  185. ## Update von Proxmox 6.4 auf 7.1
  186. Dazu stellt Proxmox auf ihrer Webseite eine Vorgehensweise vor. Quelle: https://pve.proxmox.com/wiki/Upgrade_from_6.x_to_7.0. Da der FFDO Proxmox ohne Subscription betreibt, kann die Datei /etc/apt/sources.list.d/pve-enterprise.list gelöscht werden. Nur die Datei /etc/apt/sources.list ist (ohne Subscription) wichtig, ihr fehlt der Abschnitt
  187. # lesson learned 2
  188. # PVE pve-no-subscription repository provided by proxmox.com,
  189. # NOT recommended for production use
  190. deb http://download.proxmox.com/debian/pve bullseye pve-no-subscription
  191. der eingefügt werden muss. Solange er fehlt, fragt die Update-Routine, ob man pve wirklich löschen wolle...;)
  192. Ist die Datei /etc/apt/sources.list vollständig, kann mit apt dist-upgrade das Update vorgenommen werden, vorher sollte noch die Version 6.4 mit apt ugrade aktualisiert werden.
  193. Nach einem Reboot erscheint die Version Proxmox 7.1.
  194. # MAC-Adressen in Proxmox 7
  195. In Proxmoxx 7 werden die MAC-Adressen anders festgelegt:
  196. Linux Bridge MAC-Address Change
  197. With Proxmox VE 7 / Debian Bullseye, a new systemd version is used, that changes how the MAC addresses of Linux network
  198. bridge devices are calculated:
  199. MACAddressPolicy=persistent was extended to set MAC addresses based on the device name. Previously addresses were
  200. only based on the ID_NET_NAME_* attributes, which meant that interface names would never be generated for virtual
  201. devices. Now a persistent address will be generated for most devices, including in particular bridges.
  202. -- https://www.freedesktop.org/software/systemd/man/systemd.net-naming-scheme.html#v241
  203. A unique and persistent MAC address is now calculated using the bridge name and the unique machine-id
  204. (/etc/machine-id), which is generated at install time.
  205. Also sollte die MAC-Adresse der Bridge festgelegt werden:
  206. auto vmbr0
  207. iface vmbr0 inet static
  208. address 192.168.X.Y/24
  209. hwaddress aa:bb:cc:12:34
  210. # ... remaining options
  211. # VM in Proxmox erstellen
  212. Beim Erstellen einer neuen VM kann das entweder durch Klonen geschehen, dann muss die IP der VM angepasst werden, oder eine völlig neue VM wird erstellt. Jedenfalls wird die VM mit der Bridge vmbr0 verbunden, und die benötigten VLANs werden dann innerhalb der VM konfiguriert.
  213. Die Vorgabewerte können alle verwendet werden, auf jeden Fall sollte der Haken für Qemu Guest Agent aktiv gesetzt werden. Damit kann die Maschine über die Proxmox-Oberfläche und einem Rechtsklick rebootet oder ausgeschaltet werden.
  214. Der Agent muss in der VM installiert werden, bei Debian mit: apt install qemu-guest-agent.
  215. Jetzt können die VMs kommen...
  216. # VM serielle Schnittstelle einrichten
  217. Der Zugang zu den VMs per serieller Schnittstelle erfolgt über die Konsole des Proxmox-Systems. Dazu muss bei der Erstellung der VM die serielle Schnittstelle bzw. müssen die seriellen Schnittstellen ttyS0 und ttyS1 angelegt werden, und in der VM muss ein Login-Prozess zu der Schnittstelle eingerichtet werden.
  218. Die serielle Schnittstelle ist wichtig für den Fall, dass ein ssh nicht mehr geht, weil man sich die Netzwerkkonfiguration "verbogen" hat. Oder man will mit ifdown/ifup Schnittstellen neu konfigurieren und muss sie dazu ab- und wieder anschalten.
  219. Einstellung auf Proxmox:
  220. root@blech02:~# grep -i serial /etc/pve/nodes/blech02/qemu-server/101.conf
  221. VM xyz: getty Prozess aktivieren:
  222. root@blech02vm101:~# systemctl enable serial-getty@ttyS0.service
  223. root@blech02vm101:~# systemctl start serial-getty@ttyS0.service
  224. root@blech02vm101:~# systemctl status serial-getty@ttyS0.service ergibt
  225. ● serial-getty@ttyS0.service - Serial Getty on ttyS0
  226. Loaded: loaded (/lib/systemd/system/serial-getty@.service; enabled; vendor preset: enabled)
  227. Active: active (running) since Mon 2022-03-28 17:32:11 CEST; 2s ago
  228. Docs: man:agetty(8)
  229. man:systemd-getty-generator(8)
  230. http://0pointer.de/blog/projects/serial-console.html
  231. Main PID: 857 (agetty)
  232. Tasks: 1 (limit: 1132)
  233. Memory: 204.0K
  234. CPU: 2ms
  235. CGroup: /system.slice/system-serial\x2dgetty.slice/serial-getty@ttyS0.service
  236. +-857 /sbin/agetty -o -p -- \u --keep-baud 115200,57600,38400,9600 ttyS0 vt220
  237. Testen:
  238. root@blech02:~# qm terminal 101
  239. starting serial terminal on interface serial0 (press Ctrl+O to exit)
  240. blech02vm101 Login: root
  241. Passwort:
  242. Linux blech02vm101 5.10.0-12-amd64 #1 SMP Debian 5.10.103-1 (2022-03-07) x86_64
  243. [...]
  244. root@blech02vm101:~# tty
  245. /dev/ttyS0
  246. # Abgekündigte Repositories für Updates oder Installationen verfügbar machen
  247. Dazu in /etc/apt/sources.list alles auskommentieren und auf das Archiv verweisen:
  248. deb http://archive.debian.org/debian/ jessie main
  249. deb-src http://archive.debian.org/debian/ jessie main
  250. # Vorgehen, wenn keine qwertz-Tastatur auf einer VM installiert wurde
  251. Bei Fragen nach der Signaturverifikation diese verneinen.
  252. Installieren von console-data:
  253. #apt-get install console-data
  254. dann die richtige Tastatur auswählen
  255. # Bash-history vervollständigen
  256. Das Paket bash-completion erweitert die Unterstützung der bash zur automatischen Vervollständigung von Dateinamen,
  257. Befehlsnamen und Variablen um eine große Anzahl von Befehlen (z.B. pacman) und deren Optionen.
  258. Bei Fragen nach der Signaturverifikation diese verneinen.
  259. #apt-get install bash-completion
  260. #Installieren von etckeeper
  261. Eine Versionierung von Konfigurationsverzeichnissen mit etckeeper ist aus Dokumentations- und Backup-Sicht sinnvoll.
  262. Damit werden alle Änderungen an Konfigurationsdateien mitprotokolliert und versioniert, außerdem können
  263. frühere Versionen im Fehlerfall wieder hergestellt werden.
  264. #apt install etckeeper
  265. #Checkliste
  266. ![Checkliste](/img/20240506-VM-Konfiguration.png)
  267. [als ods](/img/20240506-VM-Konfiguration.ods)