Wenn ich ein Thema ziemlich zweifelhaft finde, dann ist es Cloudcomputing. Ich kann verstehen wann und warum man das macht. Was mir aber nicht gelingt ist den wandel von "VServer" zu "CloudInstanz" zu akzeptieren - immerhin habe ich "damals" mehr für weniger einsatz bekommen.
Wie dem auch sei. Ich mag Proxmox als Möglichkeit seine Virtualisierung zu realisieren. Man könnte ja auf die Idee kommen, dass man das auch auf seinem Root-Server bei zum Beispiel Hetzner haben möchte. Lustiger Weise wird das sogar angeboten. Was dann leider noch zu tun ist, ist die Absicherung und vor allem aber die Einrichtung von virtuellen Netzwerken, damit man seine Infrastruktur auch fein separieren kann.
In meinem Setup mache ich das mit einfachen Linux-Bridges. Wer es nocht etwas "cooler" haben will, dem kann ich einen Cluster mit OpenVswitch empfehlen. Das kommt vielleicht ein anderes Mal.
Mein Ziel ist, das es eine Bridge gibt, an die ich bestimmten Traffic (in meinem Fall HTTP/HTTPS) weiterleite um dort mit Hilfe von zum Beispiel OpenSense einen Reversproxy mit SSL Offloading anzubieten. So kann ich dann "hinter" dieser Firewall beliebig viele "virtuelle Netzwerke" aufbauen und routen/regeln wie man es von einer "richtigen" Installation kennt.
Dazu richte ich mir zunächst eine Bridge ein die auch eine IP-Adresse bekommt und sorge dafür dass beim hochfahren auch gleich die notwendigen iptables Regeln gesetzt werden um zum einen das NAT für den ausgehenden Traffic zu realisieren. auch will ich, wie schon oben beschrieben, das eingehender Traffic auf Port 80 und 443 zur OpenSense Installation weitergereicht wird, die mit der Bridge verbunden ist.
/etc/network/interfaces
auto vmbr0
iface vmbr0 inet static
address 10.11.12.1
netmask 255.255.255.0
bridge-ports none
bridge-stp off
bridge-fd 0
post-up echo 1 > /proc/sys/net/ipv4/ip_forward
post-up iptables -t nat -A POSTROUTING -s '10.11.12.0/24' -o ***NAME-SER-NETZWERKKARTE*** -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s '10.11.12.0/24' -o ***NAME-SER-NETZWERKKARTE*** -j MASQUERADE
post-up iptables -t nat -A PREROUTING -i ***NAME-SER-NETZWERKKARTE*** -p tcp --dport 80 -j DNAT --to 10.11.12.2:80
post-up iptables -A FORWARD -j ACCEPT -p tcp --dport 80 -d 10.10.99.2
post-up iptables -t nat -A PREROUTING -i ***NAME-SER-NETZWERKKARTE*** -p tcp --dport 443 -j DNAT --to 10.11.12.2:443
post-up iptables -A FORWARD -j ACCEPT -p tcp --dport 443 -d 10.11.12.2
Anschließend richte ich einfach weitere Bridges ein, die ich dann verwende um private LAN innerhalb des Proxmox bereitzustellen.
auto vmbr1
iface vmbr1 inet manual
bridge-ports none
bridge-stp off
bridge-fd 0
Anschließend können die neuen Bridges wie folgt aktiviert werden:
ifup vmbr0
ifup vmbr1
Manchmal ist es notwendig, dass man den sicheren Hafen verlässt und auf das große weite Meer segelt. So brauche ich hin und wieder einen aktuellen Mainstream-Kernel auf einem perse eher konservativen System wie CentOS.
Das ist in wenigen Schritten erledigt und erfordert auch nur einen Neustart hust.
yum -y install https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
yum -y --enablerepo=elrepo-kernel install kernel-ml
yum -y --enablerepo=elrepo-kernel install kernel-ml-{devel,headers,perf}
sed -i 's/GRUB_DEFAULT=save/GRUB_DEFAULT=0/g' /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg
reboot
Warum macht macht das? Zum Beispiel, weil man die LSB konformität von CentOS schätzt und auch die langen Supportzeiten des Systems als solches zu würdigen weiss, gleichzeitig aber herausfinden will/muss ob zum Beispiel Kubernetes sich anders verhält, wenn es einen aktuellen Kernel unter der Haube hat.
Quellen und Hinweise:
Vielleicht kommt der eine oder andere mal in die Situation die möglichen IOPS auf einem Linux-System messen zu wollen oder müssen. Leider ist das Thema nicht ganz so eindeutig gelöst, daher bleibt immer ein wenig Interpretationsspielraum.
Wie dem auch sei. Irgendwie muss man ja anfangen.
fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=test --bs=4k --iodepth=64 --size=4G --readwrite=randrw --rwmixread=75
Dieser Aufruf war für mich schon mal ein ziemlich guter Anfang.
Quellen und Hinweise: