Voraussetzungen für die Installation von StorageGRID
Informieren Sie sich über die Computing-, Storage-, Netzwerk-, Docker- und Node-Anforderungen für die Implementierung von StorageGRID.
Computing-Anforderungen
In der folgenden Tabelle sind die unterstützten Mindestanforderungen an Ressourcen für jeden Typ von StorageGRID-Knoten aufgeführt. Dies sind die Mindestressourcen, die für StorageGRID Nodes erforderlich sind.
Node-Typ | CPU-Kerne | RAM |
---|---|---|
Admin |
8 |
24 GB |
Storage |
8 |
24 GB |
Gateway |
8 |
24 GB |
Darüber hinaus sollte jedem physischen Docker Host mindestens 16 GB RAM zugewiesen sein, um den ordnungsgemäßen Betrieb zu gewährleisten. Um beispielsweise zwei der in der Tabelle beschriebenen Services gemeinsam auf einem physischen Docker Host zu hosten, führen Sie die folgende Berechnung aus:
24 + 24 +16 = 64 GB RAM und 8 + 8 = 16 Cores
Da viele moderne Server diese Anforderungen übertreffen, kombinieren wir sechs Services (StorageGRID-Container) auf drei physischen Servern.
Netzwerkanforderungen
Zu den drei Arten von StorageGRID-Datenverkehr gehören:
-
Netzverkehr (erforderlich). Der interne StorageGRID-Datenverkehr zwischen allen Nodes im Grid.
-
Admin Traffic (optional). Der für die Systemadministration und -Wartung verwendete Datenverkehr.
-
Client Traffic (optional). Der Datenverkehr zwischen externen Client-Applikationen und dem Grid, einschließlich aller Objekt-Storage-Anforderungen von S3 und Swift Clients
Sie können bis zu drei Netzwerke zur Verwendung mit dem StorageGRID-System konfigurieren. Jeder Netzwerktyp muss sich in einem separaten Subnetz ohne Überschneidung befinden. Wenn sich alle Nodes im gleichen Subnetz befinden, ist keine Gateway-Adresse erforderlich.
Für diese Auswertung werden wir in zwei Netzwerken bereitstellen, die den Grid- und Client-Datenverkehr enthalten. Es ist möglich, später ein Admin-Netzwerk hinzuzufügen, um diese zusätzliche Funktion zu unterstützen.
Es ist sehr wichtig, die Netzwerke konsistent den Schnittstellen aller Hosts zuzuordnen. Wenn beispielsweise auf jedem Node zwei Schnittstellen vorhanden sind, ens192 und ens224, sollten sie alle auf allen Hosts dem gleichen Netzwerk oder VLAN zugeordnet werden. In dieser Installation ordnet das Installationsprogramm diese in den Docker Containern als eth0@if2 und eth2@if3 zu (da der Loopback if1 im Container ist), und daher ist ein konsistentes Modell sehr wichtig.
Hinweis zu Docker Networking
StorageGRID verwendet Netzwerke, die von einigen Docker Container-Implementierungen abweichen. Es wird nicht das von Docker (oder Kubernetes oder Swarm) bereitgestellte Netzwerk verwendet. Stattdessen gibt StorageGRID den Container als --net=none aus, sodass Docker für das Netzwerken des Containers nichts tut. Nachdem der Container vom StorageGRID-Dienst erstellt wurde, wird ein neues macvlan-Gerät aus der in der Node-Konfigurationsdatei definierten Schnittstelle erstellt. Dieses Gerät verfügt über eine neue MAC-Adresse und fungiert als separates Netzwerkgerät, das Pakete von der physischen Schnittstelle empfangen kann. Das macvlan-Gerät wird dann in den Container-Namespace verschoben und in eth0, eth1 oder eth2 innerhalb des Containers umbenannt. Zu diesem Zeitpunkt ist das Netzwerkgerät im Host-Betriebssystem nicht mehr sichtbar. In unserem Beispiel ist das Grid-Netzwerkgerät eth0 in den Docker Containern und das Client-Netzwerk eth2. Bei einem Admin-Netzwerk wäre das Gerät im Container eth1.
Die neue MAC-Adresse des Container-Netzwerkgeräts erfordert möglicherweise die Aktivierung des Promiscuous-Modus in einigen Netzwerk- und virtuellen Umgebungen. In diesem Modus kann das physische Gerät Pakete für MAC-Adressen empfangen und senden, die sich von der bekannten physischen MAC-Adresse unterscheiden. Wenn Sie in VMware vSphere ausgeführt werden, müssen Sie den Promiscuous-Modus, Änderungen der MAC-Adresse und gefälschte Übertragungen in den Portgruppen akzeptieren, die StorageGRID-Datenverkehr beim Ausführen von RHEL unterstützen. Ubuntu oder Debian funktioniert unter den meisten Umständen ohne diese Änderungen. |
Storage-Anforderungen erfüllt
Die Nodes erfordern entweder SAN-basierte oder lokale Festplattengeräte der in der folgenden Tabelle angegebenen Größen.
Die Zahlen in der Tabelle gelten für jeden StorageGRID-Servicetyp und nicht für das gesamte Grid oder jeden physischen Host. Basierend auf den Bereitstellungsoptionen berechnen wir die Zahlen für jeden physischen Host in, später in "Physisches Host-Layout und Anforderungen"diesem Dokument. die mit einem Sternchen markierten Pfade oder Dateisysteme werden vom Installer selbst im StorageGRID-Container erstellt. Der Administrator benötigt keine manuelle Konfiguration oder Dateisystemerstellung, aber die Hosts benötigen Blockgeräte, um diese Anforderungen zu erfüllen. Mit anderen Worten: Das Blockgerät sollte mit dem Befehl angezeigt lsblk werden, jedoch nicht innerhalb des Host-Betriebssystems formatiert oder gemountet sein.
|
Node-Typ | Zweck der LUN | Anzahl LUNs | Minimale Größe der LUN | Manuelles Dateisystem erforderlich | Vorgeschlagener Node-Konfigurationseintrag |
---|---|---|---|---|---|
Alle |
Admin-Node-Systemspeicherplatz |
Einer für jeden Admin-Node |
90GB |
Nein |
|
Alle Nodes |
Docker Storage-Pool in |
Einer für jeden Host (physisch oder VM) |
100 GB pro Container |
Ja – etx4 |
NA – Formatieren und Mounten als Host-Dateisystem (nicht im Container zugeordnet) |
Admin |
Audit-Protokolle für Admin-Node (Systemdaten im Admin-Container) |
Einer für jeden Admin-Node |
200GB |
Nein |
|
Admin |
Admin-Node-Tabellen (Systemdaten im Admin-Container) |
Einer für jeden Admin-Node |
200GB |
Nein |
|
Storage-Nodes |
Objekt-Storage (Block-Geräte) |
Drei für jeden Lagerbehälter |
4000GB |
Nein |
|
In diesem Beispiel sind die in der folgenden Tabelle gezeigten Festplattengrößen pro Containertyp erforderlich. Die Anforderungen pro physischem Host werden in beschrieben, später in "Physisches Host-Layout und Anforderungen"diesem Dokument.
Festplattengrößen pro Containertyp
Admin-Container
Name | Größe (gib) |
---|---|
Docker-Store |
100 (pro Container) |
ADM-OS |
90 |
Adm-Audit |
200 |
ADM-MySQL |
200 |
Storage-Container
Name | Größe (gib) |
---|---|
Docker-Store |
100 (pro Container) |
SN-OS |
90 |
Rangedb-0 |
4096 |
Rangedb-1 |
4096 |
Rangedb-2 |
4096 |
Gateway-Container
Name | Größe (gib) |
---|---|
Docker-Store |
100 (pro Container) |
/Var/local |
90 |
Physisches Host-Layout und Anforderungen
Wenn Sie die in der obigen Tabelle aufgeführten Computing- und Netzwerkanforderungen kombinieren, erhalten Sie einen grundlegenden Hardware-Satz, der für diese Installation erforderlich ist: Drei physische (oder virtuelle) Server mit 16 Kernen, 64 GB RAM und zwei Netzwerkschnittstellen. Wenn ein höherer Durchsatz gewünscht wird, ist es möglich, zwei oder mehr Schnittstellen im Grid oder Client-Netzwerk zu verbinden und eine VLAN-getaggte Schnittstelle wie bond0.520 in der Node-Konfigurationsdatei zu verwenden. Wenn Sie mit intensiveren Workloads rechnen, ist mehr Speicher sowohl für den Host als auch für die Container besser.
Wie in der folgenden Abbildung dargestellt, hosten diese Server sechs Docker Container, zwei pro Host. Der RAM wird mithilfe von 24 GB pro Container und 16 GB für das Host-Betriebssystem selbst berechnet.
Der gesamte pro physischem Host (oder VM) erforderliche RAM beträgt 24 x 2 + 16 = 64 GB. In der folgenden Tabelle ist der erforderliche Festplattenspeicher für die Hosts 1, 2 und 3 aufgeführt.
Host 1 | Größe (gib) |
---|---|
Docker Store |
|
200 (100 x 2) |
Admin-Container |
|
90 |
|
200 |
|
200 |
Lagercontainer |
SN-OS |
90 |
Rangedb-0 (Gerät) |
4096 |
Rangedb-1 (Gerät) |
4096 |
Rangedb-2 (Gerät) |
Host 2 | Größe (gib) |
---|---|
Docker Store |
|
200 (100 x 2) |
Gateway-Container |
GW-OS * |
100 |
Lagercontainer |
* |
100 |
Rangedb-0 |
4096 |
Rangedb-1 |
4096 |
Rangedb-2 |
Host 3 | Größe (gib) |
---|---|
Docker Store |
|
200 (100 x 2) |
Gateway-Container |
* |
100 |
Lagercontainer |
* |
100 |
Rangedb-0 |
4096 |
Rangedb-1 |
4096 |
Rangedb-2 |
Der Docker Store wurde berechnet, indem 100 GB je /var/local (pro Container) x zwei Container = 200 GB zugelassen wurden.
Vorbereiten der Knoten
Um die Erstinstallation von StorageGRID vorzubereiten, installieren Sie zunächst RHEL Version 9.2 und aktivieren Sie SSH. Richten Sie Netzwerkschnittstellen, das Network Time Protocol (NTP), DNS und den Host-Namen gemäß den Best Practices ein. Sie benötigen mindestens eine aktivierte Netzwerkschnittstelle im Grid-Netzwerk und eine weitere für das Client-Netzwerk. Wenn Sie eine VLAN-getaggte Schnittstelle verwenden, konfigurieren Sie sie wie in den folgenden Beispielen. Andernfalls genügt eine einfache Konfiguration der Standard-Netzwerkschnittstelle.
Wenn Sie ein VLAN-Tag auf der Grid-Netzwerkschnittstelle verwenden müssen, sollte Ihre Konfiguration zwei Dateien im folgenden Format haben /etc/sysconfig/network-scripts/
:
# cat /etc/sysconfig/network-scripts/ifcfg-enp67s0 # This is the parent physical device TYPE=Ethernet BOOTPROTO=none DEVICE=enp67s0 ONBOOT=yes # cat /etc/sysconfig/network-scripts/ifcfg-enp67s0.520 # The actual device that will be used by the storage node file DEVICE=enp67s0.520 BOOTPROTO=none NAME=enp67s0.520 IPADDR=10.10.200.31 PREFIX=24 VLAN=yes ONBOOT=yes
In diesem Beispiel wird davon ausgegangen, dass Ihr physisches Netzwerkgerät für das Grid-Netzwerk enp67s0 ist. Es könnte auch ein gebundenes Gerät wie bond0 sein. Unabhängig davon, ob Sie Bonding oder eine Standard-Netzwerkschnittstelle verwenden, müssen Sie die VLAN-getaggte Schnittstelle in Ihrer Node-Konfigurationsdatei verwenden, wenn Ihr Netzwerkport kein Standard-VLAN hat oder wenn das Standard-VLAN nicht mit dem Grid-Netzwerk verknüpft ist. Der StorageGRID-Container selbst entkennzeichnet keine Ethernet-Frames, daher muss er vom übergeordneten Betriebssystem verarbeitet werden.
Optionale Speichereinrichtung mit iSCSI
Wenn Sie keinen iSCSI-Speicher verwenden, müssen Sie sicherstellen, dass host1, host2 und host3 Blockgeräte von ausreichender Größe enthalten, um ihre Anforderungen zu erfüllen. Informationen zu den Speicheranforderungen für host1, host2 und host3 finden Sie unter "Festplattengrößen pro Containertyp" .
Gehen Sie wie folgt vor, um Speicher mit iSCSI einzurichten:
-
Wenn Sie externen iSCSI-Speicher wie NetApp E-Serie oder NetApp ONTAP® Datenmanagement-Software verwenden, installieren Sie die folgenden Pakete:
sudo yum install iscsi-initiator-utils sudo yum install device-mapper-multipath
-
Suchen Sie auf jedem Host nach der Initiator-ID.
# cat /etc/iscsi/initiatorname.iscsi InitiatorName=iqn.2006-04.com.example.node1
-
Ordnen Sie unter Verwendung des Initiatornamens aus Schritt 2 den einzelnen Storage-Nodes LUNs auf Ihrem Speichergerät (der in der Tabelle angegebenen Anzahl und Größe "Storage-Anforderungen erfüllt" ) zu.
-
Ermitteln Sie die neu erstellten LUNs mit
iscsiadm
und melden Sie sich bei ihnen an.# iscsiadm -m discovery -t st -p target-ip-address # iscsiadm -m node -T iqn.2006-04.com.example:3260 -l Logging in to [iface: default, target: iqn.2006-04.com.example:3260, portal: 10.64.24.179,3260] (multiple) Login to [iface: default, target: iqn.2006-04.com.example:3260, portal: 10.64.24.179,3260] successful.
Weitere Informationen finden Sie "Erstellen eines iSCSI-Initiators" im Red hat Customer Portal. -
Führen Sie den folgenden Befehl aus, um die Multipath-Geräte und ihre zugehörigen LUN-WWIDs anzuzeigen:
# multipath -ll
Wenn Sie iSCSI nicht mit Multipath-Geräten verwenden, mounten Sie Ihr Gerät einfach mit einem eindeutigen Pfadnamen, der Änderungen am Gerät und Neustarts beibehalten wird.
/dev/disk/by-path/pci-0000:03:00.0-scsi-0:0:1:0
Die einfache Verwendung von /dev/sdx
Gerätenamen kann später Probleme verursachen, wenn Geräte entfernt oder hinzugefügt werden. Wenn Sie Multipath-Geräte verwenden, ändern Sie die/etc/multipath.conf
Datei wie folgt, um Aliase zu verwenden.Diese Geräte sind je nach Layout möglicherweise auf allen Knoten vorhanden oder nicht. multipaths { multipath { wwid 36d039ea00005f06a000003c45fa8f3dc alias Docker-Store } multipath { wwid 36d039ea00006891b000004025fa8f597 alias Adm-Audit } multipath { wwid 36d039ea00005f06a000003c65fa8f3f0 alias Adm-MySQL } multipath { wwid 36d039ea00006891b000004015fa8f58c alias Adm-OS } multipath { wwid 36d039ea00005f06a000003c55fa8f3e4 alias SN-OS } multipath { wwid 36d039ea00006891b000004035fa8f5a2 alias SN-Db00 } multipath { wwid 36d039ea00005f06a000003c75fa8f3fc alias SN-Db01 } multipath { wwid 36d039ea00006891b000004045fa8f5af alias SN-Db02 } multipath { wwid 36d039ea00005f06a000003c85fa8f40a alias GW-OS } }
Bevor Sie Docker in Ihrem Host-Betriebssystem installieren, formatieren Sie die LUN oder die Festplatten-Backups, und mounten `/var/lib/docker`Sie sie. Die anderen LUNs sind in der Node-Konfigurationsdatei definiert und werden direkt von den StorageGRID Containern verwendet. Das heißt, sie werden nicht im Host-Betriebssystem angezeigt; sie erscheinen in den Containern selbst, und diese Dateisysteme werden vom Installer verwaltet.
Wenn Sie eine iSCSI-gestützte LUN verwenden, platzieren Sie etwas Ähnliches wie die folgende Zeile in Ihrer fstab-Datei. Wie bereits erwähnt, müssen die anderen LUNs nicht im Host-Betriebssystem gemountet werden, sondern müssen als verfügbare Blockgeräte angezeigt werden.
/dev/disk/by-path/pci-0000:03:00.0-scsi-0:0:1:0 /var/lib/docker ext4 defaults 0 0
Vorbereiten der Docker-Installation
Gehen Sie wie folgt vor, um die Installation von Docker vorzubereiten:
-
Erstellen Sie auf allen drei Hosts ein Filesystem auf dem Docker Storage-Volume.
# sudo mkfs.ext4 /dev/sd?
Wenn Sie iSCSI-Geräte mit Multipath verwenden, verwenden Sie
/dev/mapper/Docker-Store
. -
Bereitstellungspunkt für das Docker Storage-Volume erstellen:
# sudo mkdir -p /var/lib/docker
-
Fügen Sie einen ähnlichen Eintrag für das Docker-Storage-Volume-device zu hinzu
/etc/fstab
./dev/disk/by-path/pci-0000:03:00.0-scsi-0:0:1:0 /var/lib/docker ext4 defaults 0 0
Die folgende
_netdev
Option wird nur empfohlen, wenn Sie ein iSCSI-Gerät verwenden. Wenn Sie ein lokales Blockgerät verwenden_netdev
, ist dies nicht erforderlich unddefaults
wird empfohlen./dev/mapper/Docker-Store /var/lib/docker ext4 _netdev 0 0
-
Mounten Sie das neue Dateisystem und zeigen Sie die Festplattennutzung an.
# sudo mount /var/lib/docker [root@host1]# df -h | grep docker /dev/sdb 200G 33M 200G 1% /var/lib/docker
-
Schalten Sie den Swap aus und deaktivieren Sie ihn aus Leistungsgründen.
$ sudo swapoff --all
-
Um die Einstellungen beizubehalten, entfernen Sie alle Swap-Einträge aus /etc/fstab, z. B.:
/dev/mapper/rhel-swap swap defaults 0 0
Wenn Sie den Auslagerungsaustausch nicht vollständig deaktivieren, kann die Leistung erheblich gesenkt werden. -
Führen Sie einen Testneustart des Node durch, um sicherzustellen, dass das
/var/lib/docker
Volume persistent ist und alle Festplattengeräte wieder verfügbar sind.