Interviewleitfaden für Betrieb und Wartung

[ Linux- Grundlagen]

1. Beschreiben Sie die jeweilige Bedeutung der Linux- Runlevel 0-6

0 : Shutdown-Modus
1 : Einzelbenutzermodus <== Root -Passwort knacken
2 : Mehrbenutzermodus ohne Netzwerkunterstützung
3 : Mehrbenutzermodus mit Netzwerkunterstützung (Textmodus, der am häufigsten verwendete Modus bei der Arbeit)
4 : Reserviert, nicht verwendet
5 : X-Windows mit Netzwerkunterstützung unterstützt den Mehrbenutzermodus (Desktop)
6 : Starten Sie das System neu, dh neu

2. Beschreiben Sie den Startvorgang des Linux- Systems vom Booten bis zur Anmeldeschnittstelle

1. Starten Sie den BIOS -Selbsttest und laden Sie die Festplatte.
2. MBR lesen , MBR booten.
3. Grub- Boot-Menü (Boot Loader) .
4. Laden Sie den Kernel- Kernel .
5. Starten Sie den Init- Prozess und legen Sie den Runlevel entsprechend der Inittab- Datei fest
6. Der Init- Prozess führt die Datei rc.sysinit aus .
7. Starten Sie das Kernelmodul und führen Sie Skripte auf verschiedenen Ebenen aus.
8. Führen Sie /etc/rc.d/rc.local _ _ _ _ _ aus
9. Starten Sie mingetty und rufen Sie die System-Anmeldeschnittstelle auf.

3. Beschreiben Sie den Unterschied zwischen Softlinks und Hardlinks unter Linux

Im Linux- System gibt es zwei Arten von Links: einen ist ein Hardlink ( Hardlink ) und der andere wird als symbolischer Link oder Softlink ( Symbolic Link ) bezeichnet.
1. Standardmäßig erstellt ln ohne Parameter einen Hardlink und der ln- Befehl mit dem Parameter -s erstellt einen Softlink.
2. Die Inode- Knotennummer der Hardlink-Datei ist dieselbe wie die der Quelldatei , aber die Inode- Knotennummer der Softlink-Datei unterscheidet sich von der Quelldatei.
3. Der Befehl l n kann keine Hardlinks zu Verzeichnissen erstellen, er kann jedoch Softlinks erstellen. Häufig werden Softlinks zu Verzeichnissen verwendet.
4. Löschen Sie Softlink-Dateien ohne Auswirkungen auf Quelldateien und Hardlink-Dateien.
5. Löschen Sie die Hardlink-Datei der Datei, ohne dass dies Auswirkungen auf die Quelldatei und die Softlink-Datei hat.
6. Das Löschen der Quelldatei der verknüpften Datei hat keine Auswirkungen auf die Hardlink-Datei, führt jedoch dazu, dass der Softlink ungültig wird (weißer Text auf rotem Hintergrund blinkt).
7. Löschen Sie gleichzeitig die Quelldatei und ihre Hardlink-Datei, und die gesamte Datei wird tatsächlich gelöscht.
8. Die Snapshot-Funktion vieler Hardwaregeräte verwendet ein ähnliches Prinzip wie Hardlinks.
9. Softlinks können Dateisysteme überqueren, Hardlinks jedoch nicht.

4. Wenn ein Gastgeber im Büro nicht auf das Internet zugreifen kann (die Website nicht öffnen kann), geben Sie bitte Ihre Schritte zur Fehlerbehebung an.

1. Stellen Sie zunächst fest, ob die physische Verbindung normal angeschlossen ist.
2. Überprüfen Sie, ob die lokalen IP- , Routing- und DNS- Einstellungen dem Standard entsprechen.
3. Überprüfen Sie mit Telnet , ob das WEB des Servers eingeschaltet ist und ob die Firewall es blockiert.
4. Pingen Sie das Gateway an und führen Sie die grundlegendste Prüfung durch. Wenn die Prüfung erfolgreich ist, bedeutet dies, dass der Server erreichbar ist.
5. Wenn Sie die normale Situation eines Gateways oder Routers testen, testen Sie zuerst das Gateway und dann den Router Stufe für Stufe.
6. Testen Sie die übliche Situation beim Pingen der IP eines öffentlichen Netzwerks (merken Sie sich mehrere externe IPs ).
7. Testen Sie die Glätte von DNS . Pingen Sie die entsprechende IP aus .
8. Nachdem Sie die oben genannten Prüfungen bestanden haben, überprüfen Sie den Netzwerkverwaltungsrouter.

5. Die Website lässt sich langsam öffnen. Bitte geben Sie Methoden zur Fehlerbehebung an. Wenn die Ursache eine langsame Datenbank ist, wie kann das Problem behoben und behoben werden? Bitte analysieren Sie es und nennen Sie Beispiele.

1. Sie können Befehle wie top free verwenden , um die Systemleistung und andere Probleme zu analysieren.
2. Wenn es durch die Datenbank verursacht wird, müssen Sie das langsame Abfrageprotokoll überprüfen, um das Problem zu finden und zu analysieren.

6. Wie wähle ich die Linux- Betriebssystemversion aus ?

Im Allgemeinen wird Ubuntu für Desktop-Benutzer bevorzugt ; RHEL oder CentOS wird für Server bevorzugt und CentOS wird von beiden bevorzugt .
Auf konkrete Anfrage:
1. Wenn Sie höhere Sicherheitsanforderungen haben, wählen Sie Debian oder FreeBSD .
2. Benutzer, die erweiterte Datenbankdienste und E-Mail-Netzwerkanwendungen verwenden müssen, können SUSE wählen .
3. Wenn Sie neue Technologien und neue Funktionen wünschen, können Sie sich für Feddora entscheiden . Feddora ist eine Beta- und Vorabversion von RHEL und CentOS .
4. Nach der aktuellen Situation entscheidet sich die überwiegende Mehrheit der Internetunternehmen für CentOS . Die 6er -Reihe wird heute häufiger verwendet und macht mittlerweile etwa die Hälfte des Marktes aus. andere Gründe
CentOS konzentriert sich mehr auf den Serverbereich und unterliegt keinen Urheberrechtsbeschränkungen.

7. Wie kann man das Linux- System in Produktionsszenarien richtig planen und partitionieren ?

Das Grundprinzip der Partitionierung ist Einfachheit, Benutzerfreundlichkeit und bequeme Stapelverwaltung. Vorschläge zur Positionierung basierend auf Serverrollen sind wie folgt:
1. Eigenständiger Server: z. B. 8 GB Speicher, 300 GB Festplatte
Partition : / boot 100-200M , Swap 16G , Speichergröße 8G * 2 , / 80G , / var 20G ( kann auch geteilt werden ) , / data 180G ( Web- und Datenbankdaten speichern )
Vorteile: Datenfestplatte und Systemfestplatte sind getrennt, was bei Problemen für die Wartung hilfreich ist.
RAID- Lösung: Abhängig von den Daten- und Leistungsanforderungen kann grundsätzlich RAID5 als Kompromiss eingesetzt werden.
2. Load Balancer (wie LVS usw.)
Partition : / boot 100-200 MB , 1-2 mal Swap - Speicher , / , _
Vorteile: einfach und bequem, nur geringe Datenmenge weiterleiten.
RAID- Lösung: Kleines Datenvolumen und hohe Bedeutung, RAID1 kann verwendet werden
3. RS-Server im Lastausgleich
Partition : / boot 100-200 MB , 1-2 mal Swap - Speicher , / _
Vorteile: Einfach und bequem, da mehrere Maschinen vorhanden sind, ist der Datenbedarf gering.
RAID- Lösung: Die Datenmenge ist groß, die Bedeutung ist nicht hoch, es gibt Leistungsanforderungen und die Datenanforderungen sind gering, RAID0 kann verwendet werden
4. Datenbankserver MySQL und Oracle , z . B. 16/32 G Speicher
Partition : / Boot 100-200 MB , Swap 16 GB , 1 -facher Speicher , / 100 GB , / verbleibende Daten ( Speicherdatenbankdaten )
Vorteile: Die Datenfestplatte und die Systemfestplatte sind getrennt, was der Wartung bei Problemen und der Aufrechterhaltung der Datenintegrität zuträglich ist.
RAID- Lösung: Abhängig von den Daten- und Leistungsanforderungen kann die Hauptdatenbank „ raid10“ / „raid5“ verwenden , und die Slave-Datenbank kann „raid0“ verwenden , um die Leistung zu verbessern (bei Trennung von Lesen und Schreiben).
5. Speicherserver
Partition : / boot 100-200M , 1-2 mal Swap - Speicher , / 100G , / data ( Speicherdaten ) _ _ _
Vorteile: Auf diesem Server sind nicht zu viele Partitionen vorhanden. Es wird nur ein Backup durchgeführt und die Leistungsanforderungen sind gering. Die Kapazität sollte groß sein.
RAID- Lösung: SATA- Festplatte, RAID5 kann verwendet werden
6. Gemeinsam genutzter Speicherserver (z. B. NFS )
Partition : / boot 100-200M , 1-2 mal Swap - Speicher , / 100G , / data ( Speicherdaten ) _ _ _
Vorteile: Auf diesem Server sind nicht zu viele Partitionen vorhanden. Die Voraussetzung dafür, dass NFS mehr als nur Speicher gemeinsam nutzt, sind Leistungsanforderungen.
RAID- Lösung: Je nach Leistung und Zugriffsanforderungen kann es sich um RAID5, RAID10 oder sogar RAID0 handeln (Hochverfügbarkeit oder Dual-Write-Lösung erforderlich).
7. Überwachen Sie Serverkakteen und Nagios
分区: / boot 100 200 M swap 内存的 1 2 倍, /
优点:重要性一般,数据要求也一般。
RAID 方案:单盘或双盘 raid1 即可。三盘就 RAID5 ,看容量要求加盘即可。

8.如何查看当前的Linux服务器的运行级别?

who r runlevel 命令可以用来查看当前的 Linux 服务器的运行级别。

9.请简述如何查看Linux的系统版本

uname a

10.查看Linux运行多少时间

uptime

11.某系统管理员需每天做一定的重复工作,请按照下列要求,编制一个解决方案:

( 1 ) Löschen Sie um 16:50 Uhr alle Unterverzeichnisse und alle Dateien im Verzeichnis / abc ;
( 2 ) Lesen Sie von 8:00 Uhr morgens bis 6:00 Uhr nachmittags alle Daten des ersten Felds jeder Zeile in der x1-Datei im Verzeichnis /xyz und fügen Sie sie der Datei bak01.txt im Verzeichnis / hinzu . Backup- Verzeichnis ;
( 3 ) Jeden Montag um 17:50 Uhr werden alle Verzeichnisse und Dateien im Verzeichnis /data archiviert und in Dateien komprimiert : backup.tar.gz ;
( 1 ) crontab e 50 16 * * * rm rf / abc /
( 2 ) * 8 18 / 1 * * * awk '{print $1 > "/backup/bak01.txt"}' / xyz / x1
( 3 ) 50 17 * * 1 tar czf backup.tar.gz / data

12. Bitte starten Sie den Server am 23. März um 21:18 Uhr neu

crontab e 18 21 23 3 * init 6

13. Wie überprüfe ich das Standard-Gateway von Linux ?

Mit den Befehlen route n und netstat nr können wir das Standard-Gateway anzeigen.
Zusätzlich zu den Standard-Gateway-Informationen können diese beiden Befehle auch die aktuelle Routing-Tabelle anzeigen.

14. Wie überprüfe ich die Anzahl der Inode- Knoten in einem Ordner ?

find / ‐ xdev printf '%h\n' | sortieren | uniq c | sort k 1 n

15. Schreiben Sie ein Skript, um Dateien zu finden , deren letzte Erstellungszeit vor 3 Tagen liegt und deren Suffix *.log ist, und um sie zu löschen.

find / ‐ name * .log ctime + 3 exec rm ‐f {} \ ;

16. Was soll ich tun, wenn sich in einem Ordner zu viele Dateien befinden, die nicht gelöscht werden können?

ls ‐f

17. Wie kann ich mit tcpdump den Zugriff auf Port 80 abhören , um zu sehen, wer die höchste Nummer hat?

tcpdump i eth0 tnn dst port 80 c 1000 | awk ‐F . ” ' {print $1 . 2 $ . 3 $ . 4 $ . } ' | sortieren | einzigartig
‐c | _ sort nr | Kopf‐5

18. Wie überprüfe ich die Anzahl der Dateien im Verzeichnis /var/log ?

ls / var / log / ‐ 1 R | grep - | wc - l

19. Wie kann ich die Anzahl der Verbindungen für jede IP im Linux- System überprüfen ?

netstat n | awk ' /^ tcp / {print $5 } ' | awk ‐F: ' {print $1 } ' | sortieren | uniq c | sortieren ‐rn _

20.Generieren Sie unter der Shell ein 32 -stelliges Zufallskennwort

cat / dev / urandom | Kopf 1 | md5sum | Kopf c 32 >> / pass

21. Zählen Sie die 5 am häufigsten besuchten IPs im access.log von Apache

cat access.log | awk ' {print $1 } ' | sortieren | uniq c | sort n r | Kopf 5

22. Bitte verwenden Sie mehrere Methoden zum Festlegen von Umgebungsvariablen im Linux- System und weisen Sie auf die Unterschiede zwischen den verschiedenen Methoden hin.

1. In der Konsole festlegen. Diese Methode wird nicht unterstützt, da sie nur auf der aktuellen Shell funktioniert . Das Ändern der Shell- Einstellung ist ungültig: PATH = "PATH" :/ NEW_PATH ( Schließen des Shell-Pfads stellt den ursprünglichen Pfad wieder her)
2. Ändern Sie die Datei / etc / profile . Wenn Ihr Computer nur für die Entwicklung verwendet wird, verwenden Sie diese Methode, da alle Benutzer- Shells das Recht haben, diese Umgebungsvariable zu verwenden, was zu Sicherheitsproblemen für das System führen kann. Dies gilt für alle Benutzer. Für alle Shells fügen Sie am Ende von / etc / profile Folgendes hinzu : export PATH = " $PATH: /NEW_PATH"
3. Ändern Sie die Bashrc- Datei. Diese Methode ist sicherer. Sie kann die Berechtigung zur Verwendung dieser Umgebungsvariablen auf Benutzerebene steuern. Dies gilt für einen bestimmten Benutzer. Wenn Sie einem Benutzer die Berechtigung zur Verwendung dieser Umgebungsvariablen erteilen müssen, können Sie dies tun Sie müssen lediglich die .bashrc- Datei in Ihrem persönlichen Benutzer-Home-Verzeichnis ändern. Unten hinzufügen: Export PATH = " $PATH: /NEW_PATH"

【Grundversorgung】

23. Schreiben Sie ein Firewall-Konfigurationsskript, um Remote-Hosts nur den Zugriff auf Port 80 des lokalen Computers zu ermöglichen .

iptables P INPUT ACCEPT
iptables - P OUTPUT ACCEPT
iptables P VORWÄRTS AKZEPTIEREN
iptables ‐F
iptables - X
iptables A INPUT i eth0 p tcp dport 80 j ACCEPT
iptables P INPUT DROP

24. So leiten Sie Anfragen vom lokalen Port 80 an Port 8080 weiter. Die aktuelle Host- IP ist 192.168.2.1

/ sbin / iptables t nat A PREROUTING p tcp ‐‐ dport 80 j DNAT‐to 192.168.2.1 : 8080
/ sbin / iptables t nat A PREROUTING p tcp‐‐dport 80 j REDIRECT ‐‐ zu 8080

25. Nennen Sie mehr als 5 häufig verwendete Service-Ports

21 ‐‐‐‐‐‐ ftp                   22 ‐‐‐‐‐‐ ssh                 23 ‐‐‐‐‐‐ telnet
25 ‐‐‐‐‐‐ snmp               110 ‐‐‐‐‐ ppop3            143 ‐‐‐‐‐ IMAP
873 ‐‐‐‐‐ rsync              80 ‐‐‐‐‐‐ http                3306 ‐‐‐‐‐‐ mysql

26. Aktiver Modus und passiver Modus von FTP

Das FTP- Protokoll verfügt über zwei Arbeitsmodi: PORT- Modus und PASV- Modus, was auf Chinesisch „aktiv“ und „passiv“ bedeutet.
‐Aktiver Modus
1. Der Client öffnet einen zufälligen Befehlsport größer als 1023 und einen zufälligen Datenport größer als 1023 und initiiert eine Anfrage an den Dienstport 21 .
2. Der Befehlsport Nr. 21 des Servers == antwortet auf den zufälligen Befehlsport des Clients .
3. Port Nr. 20 von == Server ==== Aktiv == fordert einen zufälligen Datenport an, um eine Verbindung zum Client herzustellen
4. Der zufällige Datenport des Clients zur Bestätigung
‐Passiver Modus
1. Der Client öffnet einen zufälligen Befehlsport größer als 1023 und einen zufälligen Datenport größer als 1023 und initiiert eine Anfrage an den Dienstport 21 .
2. Der Befehlsport Nr. 21 des Servers antwortet auf den zufälligen Befehlsport des Clients.
3. == Client aktiv == Stellen Sie eine Verbindung zu einem zufälligen Port her, der größer als 1023 ist und vom Server geöffnet wurde
4. Der Server bestätigt

27. Bitte erläutern Sie kurz den passwortfreien SSH -Anmeldevorgang.

1. Generieren Sie den öffentlichen und privaten Schlüssel auf Server A.
2. Kopieren Sie den öffentlichen Schlüssel auf Server B und benennen Sie ihn in „authorized_keys“ um
3. Server A sendet eine Verbindungsanfrage an Server B.
4. Nachdem Server B die Informationen von Server A erhalten hat , vergleicht er sie in „authorized_key“ . Wenn ein entsprechender Benutzername und eine entsprechende IP vorhanden sind , generiert er zufällig eine Zeichenfolge, verschlüsselt sie mit dem öffentlichen Schlüssel von Server A und sendet sie an Server A .
5. Nachdem Server A die Nachricht von Server B erhalten hat , verwendet er den privaten Schlüssel, um sie zu entschlüsseln, und sendet dann die entschlüsselte Zeichenfolge an Server B. Wenn Server B die generierten Ergebnisse mit denen von Server B vergleicht und diese konsistent sind, ist eine Anmeldung ohne Anmeldung zulässig.

28. Der gesamte Prozess des 3 -Wege-Handshakes und der 4 -Wege-Welle von TCP

( 1 ) Erster Handshake: Der Client setzt das Flag SYN auf 1 , generiert zufällig einen Wert seq = J und sendet das Datenpaket an den Server . Der Client wechselt in den Status SYN_SENT und wartet auf die Bestätigung vom Server .
( 2 ) Zweiter Handshake: Nach dem Empfang des Datenpakets weiß der Server anhand des Flag-Bits SYN = 1 , dass der Client den Aufbau einer Verbindung anfordert. Der Server setzt beide Flag-Bits SYN und ACK auf 1 , ack = J + 1 . und generiert zufällig einen Wert seq = K und sendet das Datenpaket an den Client , um die Verbindungsanforderung zu bestätigen, und der Server wechselt in den SYN_RCVD- Status.
( 3 ) Der dritte Handshake: Nachdem der Client die Bestätigung erhalten hat, prüft er, ob die Bestätigung J + 1 ist und ob die Bestätigung 1 ist . Wenn sie korrekt ist, setzt er das Flag ACK auf 1 , Bestätigung = K + 1 usw sendet das Datenpaket. An den Server prüft der Server , ob die ACK K + 1 ist und ob die ACK 1 ist . Wenn dies korrekt ist, wurde die Verbindung erfolgreich hergestellt. Der Client und der Server treten in den Status ESTABLISHED ein und schließen den Drei-Wege-Handshake ab . Anschließend können Client und Server mit der Datenübertragung beginnen.
( 1 ) Erste Welle: Der Client sendet ein FIN , um die Datenübertragung vom Client zum Server zu schließen , und der Client wechselt in den Status FIN_WAIT_1 .
( 2 ) Die zweite Welle: Nach Erhalt der FIN sendet der Server eine Bestätigung an den Client . Die Bestätigungssequenznummer ist die empfangene Sequenznummer + 1 ( dasselbe wie SYN , eine FIN belegt eine Sequenznummer), und der Server tritt ein den CLOSE_WAIT -Zustand.
( 3 ) Die dritte Welle: Der Server sendet eine FIN , um die Datenübertragung vom Server zum Client zu schließen , und der Server wechselt in den Status LAST_ACK.
4 )第四次挥手: Client 收到 FIN 后, Client 进入 TIME_WAIT 状态,接着发送一个 ACK Server ,确认序号为收到序号 + 1 Server 进入 CLOSED 状态,完成四次挥手。

29.请写出httphttps请求的区别,并写出遇到过的响应状态码

1. https 协议需要到 ca 申请证书,一般免费证书很少,需要交费。
2. http 是超文本传输协议,信息是明文传输, https 则是具有安全性的 ssl 加密传输协议。
3. http https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80 ,后者是 443
4. Die HTTP- Verbindung ist sehr einfach und zustandslos. Das HTTPS- Protokoll ist ein Netzwerkprotokoll , das aus dem SSL + HTTP- Protokoll aufgebaut ist und eine verschlüsselte Übertragung und Identitätsauthentifizierung durchführen kann. Es ist sicherer als das HTTP- Protokoll.
Häufig verwendete Statuscodes:
301 permanente Weiterleitung
403 Der Server hat die Anfrage verstanden, weigerte sich jedoch, sie auszuführen.
404- Seite verloren
500 Serverfehler

30. Was sind die Speicherplanungsmethoden von Betriebssystemen und erläutern Sie diese kurz?

OPT : Optimaler Ersatzalgorithmus ( optionaler Ersatz ). Ersetzen Sie die Seite durch die längste Zeit seit dem nächsten Besuch. Der Opt- Algorithmus muss die zukünftigen Ereignisse des Betriebssystems kennen , was offensichtlich unmöglich ist und nur als Standard zur Messung anderer Algorithmen verwendet wird.
LRU : Am wenigsten zuletzt verwendet. Ersetzt die zuletzt verwendete Seite, die am weitesten von der aktuellen Seite entfernt ist. Nach dem Prinzip der Lokalität: Ersetzen Sie die Seite, auf die in letzter Zeit am wenigsten zugegriffen wird . Die Leistung kommt OPT am nächsten , ist aber schwer zu erreichen. Es ist möglich, einen Stapel der besuchten Seiten zu verwalten oder jeder Seite einen Zeitstempel des letzten Besuchs hinzuzufügen, aber das ist teuer.
FIFO : 先进先出 (First In First Out), 将页面看做一个循环缓冲区,按循环方式替换。
Clock :时钟替换算法( Clock , 给每个页帧关联一个使用位。当该页第一次装入内存或者被重新访问到时,将使用位置为 1 。每次需要替换时,查找使用位被置为 0 的第一个帧进行替换。

31.简述DNS进行域名解析的过程?

用户要访问 www.baidu.com ,会先找本机的 host 文件,再找本地设置的 DNS 服务器,如果也没有的话,就去网络中找根服 务器,根服务器反馈结果,说只能提供一级域名服务器 .cn ,就去找一级域名服务器,一级域名服务器说只能提供二级域名服务器 .com.cn, 就去找二级域名服务器,二级域服务器只能提供三级域名服务器 .baidu.com.cn ,就去找三级域名服务器,三级域名服务器正好有这个网 www.baidu.com ,然后发给请求的服务器,保存一份之后,再发给客户端

shell编程篇】

32. Beschreiben Sie den einfachen Unterschied zwischen einfachen Anführungszeichen, doppelten Anführungszeichen und keinen Anführungszeichen in der Linux-Shell

Einfache Anführungszeichen: Was Sie sehen, ist das, was Sie erhalten. Das heißt, der Inhalt in den einfachen Anführungszeichen wird so ausgegeben, wie er ist, oder es wird so beschrieben, dass ausgegeben wird, was in den einfachen Anführungszeichen angezeigt wird.
Doppelte Anführungszeichen: Geben Sie den Inhalt in doppelten Anführungszeichen aus. Wenn der Inhalt Befehle, Variablen usw. enthält, wird dieser zuerst geändert, der Befehl wird analysiert, um das Ergebnis zu erhalten, und dann wird der endgültige Inhalt ausgegeben.
Keine Anführungszeichen: Geben Sie den Inhalt aus. Zeichenfolgen, die Leerzeichen enthalten, dürfen nicht verschlüsselt werden und werden als ganze Ausgabe behandelt. Wenn der Inhalt Befehle, Variablen usw. enthält, werden die Variablen und Befehle zuerst analysiert und dann die Der endgültige Inhalt wird ausgegeben. Wenn die Zeichenfolge Sonderzeichen wie Leerzeichen enthält, kann die Ausgabe nicht vollständig sein und es müssen doppelte Anführungszeichen hinzugefügt werden. Im Allgemeinen können fortlaufende Zeichenfolgen, Zahlen, Pfade usw. verwendet werden, am besten ist es jedoch, stattdessen doppelte Anführungszeichen zu verwenden.

33. Schreiben Sie ein Skript, um Dateien mit mehr als 100 KB in einem bestimmten Verzeichnis nach /tmp zu verschieben

for i in `find / test type f size + 100 k`; Führen Sie cd / test && mv $i / tmp;done aus

34. Schreiben Sie ein Skript, um Nginx- Protokollstatistiken durchzuführen und die 10 am häufigsten aufgerufenen IPs abzurufen ( Nginx - Protokollpfad : /home/logs/nginx/default/access.log

awk ' {a[ $1 ] ++ } END { for (j in a) print a[j],j} ' / home / logs / nginx / default / access.log | sort nr | Kopf
10

35. Schreiben Sie ein Skript, um /usr/local in der angegebenen Datei durch ein anderes Verzeichnis zu ersetzen

sed 's : / user / local :/ tmp : g ' Dateiname

36. Schreiben Sie ein Skript, um 20 Benutzer stapelweise hinzuzufügen . Der Benutzername ist user01-20 und das Passwort ist user , gefolgt von 5 zufälligen Zeichen.

#!/bin/bash
#Beschreibung: Benutzer hinzufügen
for i in `seq ‐f % 02 g 1 20 `; Tun
BenutzerBenutzer hinzufügen $i
echo user $i‐ ` echo $RANDOM | md5sum | Schnitt c 1 5 ` | passwd stdinuser $i >/ dev / null 2 ​​>& 1
Erledigt

37. Schreiben Sie ein Skript, um zu ermitteln, welche IPs derzeit im Netzwerk 192.168.1.0/24 online sind. Wenn ein Ping möglich ist, gilt es als online.

#!/bin/bash
für IP in „seq 1 255 “ .
Tun
ping - c 1 192.168.1 . $ip > / dev / null 2 ​​>& 1
wenn [ $? ‐eq 0 ]; Dann
Echo 192.168.1 . $ip UP
anders
Echo 192.168.1 . $ip AB
fi
} &
Erledigt
Warten

38. Schreiben Sie ein Skript, um festzustellen, ob ein angegebenes Skript einen Syntaxfehler aufweist. Wenn ein Fehler vorliegt, erinnern Sie den Benutzer daran, Q oder q einzugeben , um den Fehler zu ignorieren und mit einem anderen Schlüssel zu beenden. Das angegebene Skript kann über vim geöffnet werden

#!/bin/bash
Lesen Sie ‐p „ Bitte geben Sie das Prüfskript ein ‐> Datei
if [ ‐f $file ]; Dann
sh n $file > / dev / null 2 ​​>& 1
wenn [ $? ‐ne 0 ]; Dann
read p Sie haben einen Syntaxfehler für $file eingegeben, [ Typ q zum Beenden oder Typ vim zum Bearbeiten] Antwort
Fall $Antwort in
q | Q)
Ausgang 0
;;
vim)
vim $file
;;
*
Ausgang 0
;;
esac
fi
anders
echo $file existiert nicht
Ausgang 1
fi

39. Schreiben Sie ein Skript, um die Erweiterung aller zu protokollierenden Dateien im aktuellen Verzeichnis zu ändern

für die Datei in ls“ . / | grep P "(.*)(\..*)" `;
Tun
echo $file | mv $file ` echo ${file%.**} `.log;
Erledigt

[Datenbankdienste]

40. Schreiben Sie ein Skript, um die Datenbank zu sichern und im Verzeichnis 192.168.1.1/backup des Remote-Servers zu verpacken

mount 192.168.1.1 :/ backup / mnt
CD / MNT
/ usr / local / mysql / bin / mysqldump hlocalhost uroot test > test.sql
tar czf test.sql.tar.gz test.sql
rm ‐f test.sql

41. Bitte schreiben Sie eine SQL- Abfrage in die MySQL- Datenbank, um Datensätze in der UID- Spalte der Kundentabelle zu finden , die größer als 100 sind, sortieren Sie sie nach UID und geben Sie die ersten 10 Datensätze in positiver Reihenfolge aus.

Wählen Sie * vom Kunden aus , wobei die UID > 100 ist . Bestellen Sie nach UID, ASC-Limit 10

42. Welche Vorteile bietet die Lese-/Schreibtrennung der Datenbank?

1. Trennen Sie Lesevorgänge und Schreibvorgänge in verschiedene Datenbanken, um den Druck auf den Datenzugriff zu verringern und Leistungsengpässe zu vermeiden.
2. Wenn der Hauptserver Schreibvorgänge ausführt, hat dies keinen Einfluss auf die Abfrageleistung des Abfrageanwendungsservers, reduziert die Blockierung und verbessert die Parallelität.
3. Die Daten verfügen über mehrere Disaster-Recovery-Kopien, um die Datensicherheit zu verbessern. Wenn der Hauptserver ausfällt, kann er gleichzeitig sofort auf andere Server umgeschaltet werden, um die Systemverfügbarkeit zu verbessern.

43.Was ist der Unterschied zwischen MongoDB und MySQL ?

MongoDB fügt sich schnell ein, ohne _id anzugeben , und weist eine hohe Systemspeicherauslastung auf. Es eignet sich für Aufgabenmodelle mit schweren Leseaufgaben, ist jedoch nicht so stabil wie MySQL .
Es eignet sich für Situationen, in denen das spezifische Datenformat unklar ist (schwache Datenstruktur) und ist entwicklerfreundlich. Die Unterstützung von Transaktionsbeziehungen ist jedoch schwach ( ein häufiges Problem in NoSQL ).
Wird mit einem verteilten Dateisystem geliefert, das einfach im Cluster bereitgestellt werden kann.
④ Das Konzept des Shards (eigentlicher Datenspeicher): Jedes Mal, wenn ein Shard hinzugefügt wird , erhöht sich die Einfügeleistung nahezu exponentiell und die Festplattenkapazität kann auch problemlos erweitert werden.
Die Shard- Aufteilung umfasst: Mongos (Empfangen von Clientanforderungen , Shard- Cluster-Schnittstelle) Konfiguration (Metadaten oder Konfigurationsinformationen, z. B. der Shard-Schlüsselbereich jedes Slice, Mongos ruft Daten basierend auf den Konfigurationsinformationen ab )

44. Unterschiede zwischen Redis und Memcache und Anwendungsszenarien

Redis unterstützt umfangreichere Datentypen, es gibt insgesamt 5 Typen (String, Liste, Hash , Set, geordneter Set), Memcache unterstützt nur einfache Strings
Redis kann Daten beibehalten. Es speichert Daten nicht nur im Speicher, sondern auch auf der Festplatte. Memcache speichert Daten im Speicher. Die maximale Speichermenge ist die Speichergröße.
Redis kann der Master-Slave sein
Redis kann bis zu 1 G speichern und Memcache kann bis zu 1 M speichern.
Redis- Anwendungsszenarien
session :可以做持久化
全页缓存( FPC ):持久化,重启后,用户看到的网页速度依然不会变慢
list set 可以让 redis 用来做消息队列
排行榜, set zset 可以很好地进行数字排序
发布 / 订阅功能
redis 注意事项:
redis 的主最好不要做持久化,可以对从机做( AOF )持久化,策略为每秒一次
为了主从稳定,最好主从在同一个网段内
尽量避免在压力过大的 redis 主上添加从机
主从复制,不要用图形结构,用单链表更加稳定,这样方便解决单点故障问题,如果主挂了,直接将 slave1 提升为主

45.redis的数据结构

string ‐‐‐‐ 字符串类型,使用场景:做缓存,计数器,共享 session
Hash Hash-Typ, Verwendungsszenario: Speicherung von Benutzerinformationen
Liste Listentyp, Verwendungsszenarien: Nachrichtenwarteschlange, Weibo TimeLine
set ‐‐‐‐ Sammlungstyp, Verwendungsszenario: Empfehlung eines Freundes
Sortierter Satz - Sortierter Satztyp, Verwendungsszenario: Rangliste

46. ​​​​Welche Open-Source-Hochverfügbarkeitslösungen gibt es für Redis in der Produktionsumgebung ?

1. Twemproxy Das allgemeine Konzept besteht darin, dass es einer Proxy-Methode ähnelt und sich nicht von gewöhnlichem Redis unterscheidet. Nachdem Sie mehrere Redis- Instanzen darunter eingerichtet haben, stellen Sie bei der Verwendung eine Verbindung zu Twemproxy her, anstatt eine Verbindung zu Redis herzustellen empfängt die Anfrage als Proxy und verwendet einen konsistenten Hash- Algorithmus , um die Anfrage an das spezifische Redis zu übertragen und das Ergebnis an twemproxy zurückzugeben . Es ist einfach zu verwenden ( im Vergleich zu Redis müssen Sie nur den Verbindungsport ändern ) und ist die erste Wahl für die Erweiterung alter Projekte. Problem: Aufgrund des Drucks der twemproxy- eigenen Single-Port-Instanz ändert sich nach Verwendung von konsistentem Hashing der berechnete Wert , wenn sich die Anzahl der Redis- Knoten ändert, und die Daten können nicht automatisch auf den neuen Knoten verschoben werden.
2. Codis , die derzeit am häufigsten verwendete Cluster-Lösung, hat grundsätzlich den gleichen Effekt wie twemproxy , unterstützt jedoch die Wiederherstellung alter Knotendaten auf neuen Hash- Knoten , wenn sich die Anzahl der Knoten ändert .
3. Der Cluster, der mit Redis Cluster3.0 geliefert wird, zeichnet sich durch seinen verteilten Algorithmus aus, nicht durch konsistentes Hashing , sondern durch das Konzept von Hash- Slots und seine eigene Unterstützung für die Knoteneinstellung von Slave-Knoten. Einzelheiten finden Sie in der offiziellen Dokumentation.
4. Implementieren Sie auf der Geschäftscodeebene, erstellen Sie mehrere unabhängige Redis- Instanzen, führen Sie eine Hash- Berechnung für den Schlüssel auf der Codeebene durch und verarbeiten Sie die Daten dann auf der entsprechenden Redis- Instanz. Diese Methode stellt relativ hohe Anforderungen an den Hash- Layer-Code. Zu den Überlegungen gehören alternative Algorithmuslösungen nach Knotenausfällen, automatische Skriptwiederherstellung nach Datenschock, Instanzüberwachung usw.
5. Redis Sentinal konzentriert sich auf hohe Verfügbarkeit. Wenn der Master ausfällt , wird der Slave automatisch zum Master heraufgestuft und stellt weiterhin Dienste bereit.

47.Redis ist Single-Threaded. Wie kann die Auslastung der Multi-Core- CPU verbessert werden ?

Sie können mehrere Instanzen von Redis auf demselben Server bereitstellen und diese als unterschiedliche Server verwenden. Irgendwann reicht ein Server ohnehin nicht mehr aus. Wenn Sie also mehrere CPUs verwenden möchten , können Sie dies in Betracht ziehen. Sharding ( Shard ).

48. Redis häufige Leistungsprobleme und Lösungen?

1. Der Master führt am besten keine Persistenzarbeiten durch, z. B. RDB- Speicher-Snapshots und AOF- Protokolldateien
2. Wenn die Daten wichtig sind, ermöglicht ein Slave AOF, die Daten zu sichern, und die Richtlinie ist so eingestellt, dass sie einmal pro Sekunde synchronisiert.
3. Für die Geschwindigkeit der Master-Slave-Replikation und die Stabilität der Verbindung ist es am besten, wenn sich Master und Slave im selben LAN befinden
4. Vermeiden Sie das Hinzufügen von Slave-Bibliotheken zur überlasteten Hauptbibliothek.
5. Verwenden Sie keine Diagrammstruktur für die Master-Slave-Replikation. Es ist stabiler, eine einseitig verknüpfte Listenstruktur zu verwenden, das heißt: Master <- Slave1 <- Slave2 <- Slave3 .. .
Diese Struktur erleichtert die Lösung des Single-Point-of-Failure-Problems und die Realisierung des Ersatzes des Masters durch den Slave . Wenn der Master auflegt, können Sie Slave1 sofort als Master aktivieren und alles andere unverändert lassen.

49.Welche Persistenzmethoden bietet Redis ?

Mit der RDB- Persistenzmethode können Sie in bestimmten Zeitintervallen Snapshots Ihrer Daten erstellen und diese speichern .
Der AOF- Persistenzmodus zeichnet jeden Schreibvorgang auf dem Server auf . Wenn der Server neu startet, werden diese Befehle erneut ausgeführt, um die ursprünglichen Daten wiederherzustellen . Der AOF- Befehl verwendet das Redis- Protokoll, um jeden Schreibvorgang am Ende der Datei anzuhängen und zu speichern . Redis kann auch AOF- Dateien im Hintergrund neu schreiben , um zu verhindern , dass die AOF- Datei zu groß wird .
Wenn Ihre Daten nur bei laufendem Server vorhanden sein sollen , müssen Sie keine Persistenz verwenden .
Sie können auch zwei Persistenzmethoden gleichzeitig aktivieren . In diesem Fall wird beim Neustart von Redis zuerst die AOF- Datei geladen, um die Originaldaten wiederherzustellen , da der in der AOF- Datei gespeicherte Datensatz unter normalen Umständen größer ist der RDB- Datei. Der Datensatz muss vollständig sein .
Das Wichtigste ist, den Unterschied zwischen RDB- und AOF- Persistenzmethoden zu verstehen . Beginnen wir mit der RDB- Persistenzmethode.

50. Wird die Änderung der Konfiguration in Echtzeit wirksam, ohne dass Redis neu gestartet werden muss ?

Es gibt viele Konfigurationsoptionen für die Ausführung von Instanzen, die über den Befehl CONFIG SET geändert werden können, ohne dass ein Neustart erforderlich ist. Ab Redis 2.2 ist es möglich , AOF zur Snapshot-Persistenz von RDB oder auf andere Weise zu wechseln, ohne Redis neu starten zu müssen . Rufen Sie den Befehl CONFIG GET * “ auf , um weitere Informationen .
但偶尔重新启动是必须的,如为升级 Redis 程序到新的版本,或者当你需要修改某些目前 CONFIG 命令还不支持的配置参数的时候。

51.Redis集群会有写操作丢失吗?为什么?

Redis 并不能保证数据的强一致性,这意味这在实际中集群在特定的条件下可能会丢失写操作。

52.查看Redis使用情况及状态信息用什么命令?

info

53.Mongodb熟悉吗,一般部署几台?

一般 mongodb 部署主从、或者 mongodb 分片集群;建议 3 台或 5 台服务器来部署。 MongoDB 分片的基本思想就是将集合切分 成小块。这些块分散到若干片里面,每个片只负责总数据的一部分。 对于客户端来说,无需知道数据被拆分了,也无需 知道服务端哪个分片对应哪些数据。数据在分片之前需要运行一个路由进程,进程名为 mongos 。这个路由器知道所有数据
的存放位置,知道数据和片的对应关系。对客户端来说,它仅知道连接了一个普通的 mongod ,在请求数据的过程中,通过 路由器上的数据和片的对应关系,路由到目标数据所在的片上,如果请求有了回应,路由器将其收集起来回送给客户端。

54.Was ist der Unterschied zwischen Rabbitmq und Kafka ?

1 ) In Bezug auf das Architekturmodell,
RabbitMQ folgt dem AMQP- Protokoll. Der Broker von RabbitMQ besteht aus Exchange, Binding und Queue , wobei Exchange und Binding den Routing-Schlüssel der Nachricht bilden; der Client- Produzent kommuniziert mit dem Server , indem er den Kanal verbindet , und der Verbraucher erhält die Nachricht von die Warteschlange für den Verbrauch (lange Verbindung , Nachrichten aus der Warteschlange werden an die Verbraucherseite weitergeleitet und die Verbraucherschleife liest Daten aus dem Eingabestream). RabbitMQ ist Broker -zentriert; Bestätigung von Nachrichten
Mechanismus.
Kafka folgt der allgemeinen MQ- Struktur: Produzent , Broker , Verbraucher , wobei der Verbraucher im Mittelpunkt steht. Die Verbrauchsinformationen von Nachrichten werden auf dem Client- Verbraucher gespeichert. Der Verbraucher ruft Daten stapelweise vom Broker ab, basierend auf dem Verbrauchspunkt . Das gibt es Kein Nachrichtenbestätigungsmechanismus.
2 ) In Bezug auf den Durchsatz
Kafka hat einen hohen Durchsatz. Es nutzt intern die Stapelverarbeitung von Nachrichten und einen Zero-Copy -Mechanismus. Die Speicherung und Erfassung von Daten sind sequentielle Stapelvorgänge auf lokalen Festplatten. Die Komplexität beträgt O( 1 ) und die Effizienz der Nachrichtenverarbeitung ist sehr hoch hoch.
In Bezug auf den Durchsatz ist RabbitMQ Kafka etwas unterlegen . Ihre Ausgangspunkte sind unterschiedlich. RabbitMQ unterstützt die zuverlässige Zustellung von Nachrichten, unterstützt Transaktionen und unterstützt keine Batch-Vorgänge. Basierend auf den Anforderungen an die Speicherzuverlässigkeit kann der Speicher Speicher oder Festplatte verwenden.
3 ) Im Hinblick auf die Benutzerfreundlichkeit,
rabbitMQ 支持 miror queue ,主 queue 失效, miror queue 接管。
kafka broker 支持主备模式。
4 ) 在集群负载均衡方面,
kafka 采用 zookeeper 对集群中的 broker consumer 进行管理,可以注册 topic zookeeper 上;通过 zookeeper 的协调机制, producer 保存对应 topic broker 信息,可以随机或者轮询发送到 broker 上;并且 producer 可以基于语义指定分 片,消息发送到 broker 的某分片上。
rabbitMQ 的负载均衡需要单独的 loadbalancer 进行支持。

55. Welche Backup-Kategorien gibt es ?

Systemsicherung: Sichern Sie das gesamte Betriebssystem. Wenn das Betriebssystem beschädigt ist oder nicht gestartet werden kann, kann es durch eine Sicherung schnell wiederhergestellt werden.
Datensicherung: Sichern Sie die Datendateien, Anwendungssoftware und Datenbanken der Benutzer. Wenn diese Daten verloren gehen oder beschädigt werden, können sie auch durch eine Sicherung wiederhergestellt werden.

56.Was ist Kalt- / Hot-Backup? Was sind die Vor- und Nachteile jedes einzelnen davon?

Kaltsicherung: Die zu sichernden Dateien werden zunächst geschlossen und nicht mehr verwendet. Anschließend wird die Sicherung durchgeführt.
Die Vorteile bestehen darin, dass es einfach und schnell ist, sich leicht auf einen bestimmten Zeitpunkt wiederherstellen lässt und leicht zu warten ist.
Der Nachteil besteht darin, dass die Wiederherstellung nur zu einem bestimmten Zeitpunkt möglich ist und die Daten während des Sicherungszeitraums für den normalen Gebrauch unpraktisch sind.
Hot-Backup: bezieht sich auf eine Methode, die die normale Verwendung von Backup-Dateien beim Durchführen von Backups nicht beeinträchtigt;
Der Vorteil besteht darin, dass die Backup-Geschwindigkeit hoch ist und die Datennutzung nicht beeinträchtigt;
Der Nachteil besteht darin, dass alle Vorgänge synchronisiert werden, einschließlich Löschvorgängen.

57. Wie sichert man eine 100G- Datenbank?

Für Bibliotheken über 100 G können Sie die Verwendung von xtranbackup in Betracht ziehen . Die Sicherungsgeschwindigkeit ist offensichtlich schneller als bei mysqldump . Im Allgemeinen wird eine vollständige Sicherung pro Woche durchgeführt, der Rest sind inkrementelle Sicherungen jeden Tag. Die Sicherungszeit liegt in der Nebensaison des Geschäfts.

58. Wie gehe ich mit Sicherungs- und Wiederherstellungsfehlern um ?

Zunächst sollten vor der Wiederherstellung ausreichende Vorbereitungen getroffen werden, um Fehler bei der Wiederherstellung zu vermeiden. Zum Beispiel Gültigkeitsprüfung, Berechtigungsprüfung, Speicherplatzprüfung usw. nach der Sicherung. Wenn ein Fehler gemeldet wird, nehmen Sie entsprechend den Fehlermeldungen entsprechende Anpassungen vor.

59.Was sind das Wesentliche, die Vor- und Nachteile der Mysqldump- Sicherung?

Essenz: Was exportiert wird, ist eine SQL- Anweisungsdatei
Vorteile: Unabhängig von der Speicher-Engine können Sie MySQL - Anweisungen mit mysqldump vorbereiten .
Nachteile: Langsame Geschwindigkeit , beim Import kann es zu Formatinkompatibilitäten kommen . Eine inkrementelle Sicherung kann nicht direkt durchgeführt werden .

60.Was ist ein logisches Backup?

Gesichert werden die SQL- Anweisungen ( DDL DML DCL ), die durch Vorgänge wie Tabellenerstellung, Datenbankerstellung und Einfügung ausgeführt werden .
Geeignet für kleine und mittlere Datenbanken, die Effizienz ist relativ gering. Im Allgemeinen wird davon ausgegangen, dass die Datenbank normale Dienste bereitstellt, z. B. mysqldump , mydumper , into, outfile (Export und Import von Tabellen) usw.

61.Was ist ein physisches Backup?

Kopieren Sie direkt die Datenbankdatei dbfile Binary Log my.cnf
Geeignet für große Datenbankumgebungen und nicht durch Speicher-Engines eingeschränkt, kann jedoch nicht auf eine andere MySQL- Version wiederhergestellt werden.

62.Was ist eine Speicher-Engine? Welche sind die am häufigsten verwendeten Speicher-Engines?

1. Um es ganz klar auszudrücken: Eine Speicher-Engine ist eine Methode und ein Mechanismus zur Verwaltung von Betriebsdaten (Speicherdaten, Aktualisierung, Datenabfrage usw. ) .
2. In der MySQL- Datenbank stehen verschiedene Speicher-Engines zur Verfügung, und jede Speicher-Engine bietet unterschiedliche Vorteile.
3. Benutzer können je nach Bedarf unterschiedliche Speicher-Engines für Datentabellen auswählen oder eigene Speicher-Engines entsprechend ihren eigenen Anforderungen schreiben.
4. Auch verschiedene Tabellen in einer Bibliothek nutzen unterschiedliche Speicher-Engines, diese sind zulässig.
Die am häufigsten verwendeten Speicher-Engines sind MyISAM und InnoDB .

63.Was ist das Binärprotokoll von MySQL ?

Das Binärprotokoll zeichnet alle Änderungsvorgänge ( DDL / DML / DCL ) in der Datenbank auf und enthält keine Anweisungen wie „select “ oder „show“ .
Bei der Master-Slave-Replikation sendet der Master- Server die Änderungsvorgänge im Binärprotokoll an den Slave- Server, und der Slave-Server führt diese Änderungsvorgänge aus und
Die gleichen Änderungen werden am Masterserver vorgenommen.
Wird für Datenwiederherstellungsvorgänge verwendet.
Das Binärprotokoll ist standardmäßig deaktiviert und kann mit dem Parameter log-bin = xxx aktiviert werden .

64.Was sind die Arbeitsmodi von Binlog ? Was sind die jeweiligen Merkmale und wie treffen Unternehmen ihre Auswahl?

1. Row( 行模式 )
日志中会记录成每一行数据被修改的形式,然后在 slave 端再对相同的数据进行修改
2. Statement( 语句模式 )
每一条修改的数据都会完整的记录到主库 master binlog 里面,在 slave 上完整执行在 master 执行的 sql 语句
3. mixed( 混合模式 )
结合前面的两种模式,如果在工作中有使用函数 或者触发器等特殊功能需求的时候,使用混合模式数据量达到比较高时候,它就会选择 statement 模式,而不会选择 Row Level 行模式

65.如何在线正确清理MySQL binlog

MySQL 中的 binlog 日志记录了数据中的数据变动,便于对数据的基于时间点和基于位置的恢复 但日志文件的大小会越来越大,点用大量的磁盘空间,因此需要定时清理一部分日志信息
手工删除:
首先查看主从库正在使用的 binlog 文件名称
show master(slave) status \ G
删除之前一定要备份,删除指定时间前的日志:
purge master logs before 2017 09 01 00 : 00 : 00 ;
删除指定的日志文件:
purge master logs to mysql‐bin .000001 ;
自动删除:
通过设置 binlog 的过期时间让系统自动删除日志,查看过期时间与设置过期时间
show variables like expire_logs_days ;
set global expire_logs_days = 30 ;

66.什么是mysql的中继日志?

用于主从复制, master 主服务器将自己的二进制日志发送给 slave 从服务器, slave 先保存在自己的中继日志中,然后再 执行自己本地的 relay log 里的 sql 达到数据库更改和 master 保持一致。
默认中继日志没有开启,可以使用 `relay‐log` 参数开启

67.数据库和数据库实例之间的关系是什么?

通常情况下,数据库实例和数据库是一一对应的关系,也就是一个数据库实例对应一个数据库; 但是,在集群环境中存
在多个数据库实例共同使用一个数据库。比如: oracle RAC

68.什么叫mysql事务?

MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你即需要删除人员 的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务!一般来 说,事务是必须满足 4 个条( ACID ):原子性( Atomicity ,或称不可分割性)、一致性( Consistency )、隔离性
( Isolation , auch Unabhängigkeit genannt), Dauerhaftigkeit ( Durability ).

69.MySQL- Passwort ist verloren, bitte rufen Sie es ab?

mysqld_safe Grant-Tabellen überspringen und #Datenbankdienst starten
mysql uroot ppassowrd e "use mysql;update user set passowrd = PASSWORD('newpassword') where
user = 'root';Flush-Berechtigungen;"

70. Bitte nennen Sie die typischen Produkte, Features und Einsatzszenarien nicht-relationaler Datenbanken?

1. Memecached reine Erinnerung
2. Redis- Persistent-Cache
3. Mongodb ist dokumentenorientiert
Wenn Sie kurzfristig entsprechende Abfrageoperationen benötigen, kein Datenspeicher mit guter Schemadefinition vorhanden ist oder der Datenspeicher häufige Schemaänderungen aufweist, sollten Sie dennoch NoSQL verwenden.

71. Was ist MySQL -Multiinstanz und wie konfiguriere ich MySQL -Multiinstanzen?

MySQL -Multiinstanzen sollen mehrere MySQL- Dienste auf demselben Server ermöglichen . Sie überwachen unterschiedliche Ports und führen mehrere Dienstprozesse aus. Sie sind unabhängig voneinander und stellen externe Dienste bereit , ohne sich gegenseitig zu beeinflussen . Dies ist praktisch, um Serverressourcen zu sparen und später Architekturerweiterung.
Es gibt zwei Möglichkeiten, mehrere Instanzen zu konfigurieren:
1. Eine Instanz, eine Konfigurationsdatei, verschiedene Ports
2. Konfigurieren Sie verschiedene Instanzen unter derselben Konfigurationsdatei (my.cnf) , basierend auf dem Tool mysqld_multi

72. Wie kann die MySQL- Sicherheit gestärkt werden? Bitte nennen Sie mögliche konkrete Maßnahmen.

1. Löschen Sie die Standardbenutzer, die nicht von der Datenbank verwendet werden
2. Konfigurieren Sie die entsprechenden Berechtigungen (einschließlich Remoteverbindung).
3. Sie können das Datenbankkennwort nicht in der Befehlszeilenschnittstelle eingeben.
4. Passwörter regelmäßig ändern und die Passwortkomplexität erhöhen

73.Wie kann das Problem zu vieler MySQL Sleep- Threads gelöst werden?

1. Sie können den Ruhezustand beenden , PID beenden
2. Ändern Sie die Konfiguration und starten Sie den Dienst neu
[mysqld]
wait_timeout = 600
Interactive_timeout = 30
Hinweis: Wenn der Produktionsserver nicht spontan neu gestartet werden kann, können Sie das Problem auch mit der folgenden Methode lösen
setze globales wait_timeout = 600
Setze globales Interactive_timeout = 30 ;

74. Welche Funktion hat der Parameter sort_buffer_size? Wie können Online-Änderungen effektiv durchgeführt werden?

Es muss beim ersten Herstellen einer Verbindung (Sitzung) verwendet werden , um die Zugriffsleistung zu verbessern.
setze global sort_buffer_size = 2 M

75.Was ist der Unterschied zwischen myisam und innodb in MySQL ?

1. InnoDB unterstützt Transaktionen, MyISAM unterstützt jedoch keine Transaktionen
2. InnoDB unterstützt Sperren auf Zeilenebene, während MyISAM Sperren auf Tabellenebene unterstützt.
3. InnoDB unterstützt MVCC, MyISAM jedoch nicht.
4. InnoDB unterstützt Fremdschlüssel, MyISAM jedoch nicht
5. InnoDB unterstützt keine Volltextindizierung, MyISAM jedoch .

76. Wie passt man den Zeichensatz der MySQL- Datenbank in der Produktionslinie an ?

1. Exportieren Sie zuerst die Tabellenstruktur der Bibliothek . Exportieren Sie nur die Tabellenstruktur und ersetzen Sie sie dann stapelweise
2. Alle Daten in der Bibliothek exportieren (sofern keine neuen Daten generiert werden)
3. Ersetzen Sie dann set name = xxxxx global
4. Löschen Sie die ursprüngliche Datenbank und Tabelle, erstellen Sie eine neue und importieren Sie dann die Datenbank- und Tabellenerstellungsanweisungen sowie alle Daten.

77. Bitte beschreiben Sie das Prinzip verstümmelter chinesischer Daten in MySQL und wie Sie dies verhindern können.

Die Zeichensätze des Serversystems, der Datenbank und des Clients sind inkonsistent und die Zeichen müssen vereinheitlicht werden.

78. Wie kann MySQL für die Unternehmensproduktion optimiert werden (bitte beschreiben Sie es aus mehreren Blickwinkeln)?

1. Verbessern Sie die Hardwareressourcen des Servers und die Netzwerkbandbreite
2. Optimieren Sie die MySQL- Dienstkonfigurationsdatei
3. Aktivieren Sie das langsame Abfrageprotokoll und analysieren Sie das Problem.

79. Während der Produktion wurde fälschlicherweise eine SQL- Anweisung zum Löschen einer Bibliothek ausgeführt. Wie kann ich sie vollständig wiederherstellen?

1. Stoppen Sie die Master-Slave-Replikation, führen Sie die Sperrtabelle aus, aktualisieren Sie den Binlog- Vorgang in der Master-Datenbank und stellen Sie dann die vorherige vollständige Sicherungsdatei wieder her (z. B. die vollständige Sicherung am Punkt 0 ).
2. Führen Sie die Binlog- Dateien um 0 Uhr und die Binlog- Dateien von der vollständigen Sicherung bis zum Ausfall in SQL- Anweisungen zusammen und exportieren Sie sie .
mysqlbinlog keine Standardwerte mysql-bin .000011 mysql-bin .000012 > bin.sql
3. Löschen Sie die Drop- Anweisung in der exportierten SQL- Anweisung und stellen Sie sie in der Datenbank wieder her
mysql uroot pmysql123 < bin.sql

80. Auf welche Datenbankfehler sind Sie bei der Arbeit gestoßen? Bitte beschreiben Sie 2 Beispiele?

1. Die Entwicklung verwendet den Root- Benutzer, um Daten in die Slave-Datenbank zu schreiben, was dazu führt, dass die Master-Slave-Daten inkonsistent sind und das Front-End den zu ändernden Inhalt nicht anzeigt (es sind immer noch die alten Daten).
2. Der Intranet-Testumgebungsserver verlor plötzlich die Stromversorgung, was zu einem Fehler bei der Master-Slave-Synchronisierung führte.

[Serverarchitektur]

81. Gängige MySQL- Architekturen ?

Master-Slave-Organisation Master-Slave-Struktur Master-Slave-Struktur

82. Grundprinzip der MySQL- Replikation

1. Master: Binlog- Thread zeichnet alle Anweisungen auf, die Datenbankdaten ändern, und fügt sie in das Binlog auf dem Master ein ;
2. Von: io- Thread nach der Verwendung von „Start Slave“ ist er dafür verantwortlich, den Binlog- Inhalt vom Master abzurufen und ihn in sein eigenes Relay-Protokoll einzufügen ;
3. Von: SQL- Ausführungsthread Führen Sie die Anweisungen im Relay-Protokoll aus;

83. Wie viele Threads werden in MySQL repliziert und wie viele hängen zwischen ihnen zusammen?

Die MySQL- Replikation basiert auf dem Zusammenspiel der folgenden drei Threads:
1. Der Binlog-Dump- Thread auf dem Master , der für die Übertragung der Binlog-Ereignisse des Masters an den Slave verantwortlich ist ;
2. Der E/A- Thread auf dem Slave ist dafür verantwortlich, das Binlog vom Master zu empfangen und in das Relay-Log zu schreiben .
3. Der SQL- Thread auf dem Slave ist dafür verantwortlich, das Relay-Protokoll zu lesen und auszuführen.

84. Wie erkennt man Dateninkonsistenzen zwischen MySQL- Master und -Slave? Wie man es repariert?

1. Zur Überprüfung können Sie die pt-table-checksum der Percana-Toolkit- Toolkomponente verwenden.
2. Verwenden Sie dann pt-check-sync, um das Update zu synchronisieren (je nach tatsächlicher Situation verwenden).

85. Wie kann ein Fehler bei der Online- MySQL- Master-Slave-Replikation behoben werden?

Melden Sie sich über die Datenbank an
1 、执行 stop slave; 停止主从同步
2 、然后 set global sql_slave_skip_counter = 1 ; 跳过一步错误
3 、最后执行 start slave; 并查看主从同步状态
需要重新进行主从同步操作步骤如下
进入主库
1 、进行全备数据库并刷新 binlog, 查看主库此的状态
2 、恢复全备文件到从库,然后执行 change master
3 、开启主从同步 start slave; 并查看主从同步状态

86.如何监控主从复制是否故障?(或者zabbix监控mysql主从复制状态是否正常的脚本思路是?)

mysql uroot ppassowrd e "show Slave Status\G" | grep - E
"Slave_IO_Running|Slave_SQL_Running" | awk '{print $2}' | grep c Ja
Überwachen Sie den Master-Slave-Replikationsstatus, indem Sie die Anzahl der Ja beurteilen . Normalerweise ist sie gleich 2

87. Wie kann man die Produktion eines Masters und mehrerer Slaves manuell wiederherstellen, wenn sie ausgefallen ist?

1. Stop Slave ausführen oder den Dienst stoppen
2. Reparieren Sie die Slave-Datenbank
3. Führen Sie dann die Synchronisierung der Hauptdatenbank erneut durch

88. Die Produktion einer Master- und mehrerer Slave-Master-Datenbanken ist ausgefallen. Wie kann man sie manuell wiederherstellen?

1. Melden Sie sich bei jeder Slave-Datenbank an, um die Synchronisierung zu stoppen, und überprüfen Sie, wessen Daten die neuesten sind. Legen Sie sie als neue Master-Datenbank fest und lassen Sie andere Slave-Datenbanken ihre Daten synchronisieren.
2. Führen Sie nach der Reparatur der Master-Datenbank einfach die Master-Slave-Synchronisierungsschritte durch.
#Es ist zu beachten, dass diese Funktion deaktiviert werden muss, um sie beschreibbar zu machen, wenn die neue Hauptbibliothek zuvor schreibgeschützt war.
#Sie müssen in der neuen Slave-Bibliothek dieselben synchronisierten Benutzer und Berechtigungen erstellen wie in der vorherigen Master-Bibliothek
#Andere Slave-Bibliotheken führen Change Master in Master_Port = den Port der neuen Master-Bibliothek aus und starten den Slave

89.Was sind die Gründe für Replikationsverzögerungen in MySQL ? Wie löst man?

1. Es sind zu viele Daten aus der Datenbank vorhanden, die synchronisiert werden müssen.
2. Die Hardwareressourcen der Slave-Bibliothek sind schlecht und müssen verbessert werden.
3. Netzwerkprobleme, Netzwerkbandbreite muss erhöht werden
4. Die Hauptdatenbank enthält eine große Menge an geschriebenen Daten und erfordert eine optimale Konfiguration und Hardwareressourcen.
5. Die Ausführung von SQL- Anweisungen dauert zu lange und muss optimiert werden .
Vor 6.5.6 handelte es sich um eine Single-Thread-Replikation und später um eine Multi-Thread-Replikation. Versionen 5.7 und höher können ebenfalls verwendet werden.

90. Geben Sie eine praktikable Backup-Lösung für die unternehmensweite Produktion einer groß angelegten MySQL- Cluster-Architektur an?

1. Dual-Master und mehrere Slaves, Master-Slave-Synchronisationsarchitektur und dann eine bestimmte Slave-Datenbank als Sicherungsserver implementieren
2. Schreiben Sie ein Skript, um die Sicherung von Unterdatenbanken und Tabellen zu implementieren und geplante Aufgaben hinzuzufügen.
3. Schließlich wird der Sicherungsdienst auf den professionellen Intranetserver übertragen und der Datenbankserver wird eine Woche lang lokal aufbewahrt.
4. Der Sicherungsserver speichert die Sicherungsdaten entsprechend der tatsächlichen Situation (normalerweise 30 Tage).

91. Erzählen Sie uns etwas über die Bedeutung der drei Ports von Tomcat 8005 , 8009 und 8080 ?

8005 ‐ ‐ ‐ ‐ Wird im geschlossenen Zustand verwendet
8009 - - - - - ist der AJP- Port, der vom Container verwendet wird. Beispielsweise kann Apache über das AJP- Protokoll auf den 8009- Port von Tomcat zugreifen.
8080 ‐‐‐‐‐‐‐ Allgemeine Verwendung

92. Tomcat verfügt über drei Arbeitsmodi: Bio , Nio und Apr. Wie funktionieren sie?

Bio(Blockieren von E / A) : Standardarbeitsmodus, blockierender E / A- Vorgang, ohne Verarbeitung durch Optimierungstechnologie, relativ geringe Leistung.
Nio (Neue E / A oder nicht blockierend) : Nicht blockierende E / A- Operationen, Bio bietet eine bessere gleichzeitige Verarbeitungsleistung.
Apr (Apache Portable Runtime , Apache Portable Runtime ) : Der bevorzugte Arbeitsmodus, der hauptsächlich Anwendungen der oberen Ebene eine unterstützende Schnittstellenbibliothek der unteren Ebene zur Verfügung stellt, die auf mehreren Betriebssystemplattformen verwendet werden kann.
Tomcat verwendet die Apr- basierte Tomcat-native- Bibliothek , um eine Steuerung auf Betriebssystemebene zu erreichen, eine Optimierungstechnologie und nicht blockierende E / A- Vorgänge bereitzustellen und die gleichzeitigen Verarbeitungsfunktionen erheblich zu verbessern. Sie müssen jedoch die nativen Bibliotheken Apr und Tomcat installieren .

93. Bitte erläutern Sie, welche Anschlüsse in Tomcat verwendet werden .

In Tomcat werden zwei Arten von Konnektoren verwendet:
HTTP- Connector : Er verfügt über viele Eigenschaften, die geändert werden können, um seine Funktionsweise zu bestimmen und auf Funktionen wie Weiterleitungen und Proxy-Weiterleitung zuzugreifen
AJP- Connector : Er funktioniert auf die gleiche Weise wie der HTTP- Connector, verwendet jedoch das AJP- Protokoll von HTTP . AJP- Konnektoren werden in Tomcat normalerweise über die Plug-in-Technologie mod_jk implementiert

94.Was sind die allgemeinen Ideen für das Tomcat-Tuning?

1. Erhöhen Sie die maximale Anzahl an Verbindungen
2. Passen Sie den Arbeitsmodus an
3. Aktivieren Sie die gzip- Komprimierung
4. Passen Sie die JVM- Speichergröße an
5. Integrieren Sie Apache oder Nginx , um eine dynamische und statische Trennung zu erreichen
6. Wählen Sie einen sinnvollen Garbage-Collection-Algorithmus
7. Versuchen Sie, eine neuere JDK- Version zu verwenden

95. Bitte schreiben Sie den Befehl, um die aktuelle Konfigurationsdatei von nginx zu überprüfen , und starten Sie dann reibungslos neu

1. Bestätigen Sie , ob die Syntax der Nginx- Konfigurationsdatei korrekt ist
Nginx t
2. 平滑重启
kill HUP nginx 进程号
kill HUP / 路径 / nginx.pid

96.请简单描述nginxphp-fpm的两种连接方式及其优缺点

linux 中, nginx 服务器和 php‐fpm 可以通过 tcp socket unix socket 两种方式实现。
unix socket 是一种终端,可以使同一台操作系统上的两个或多个进程进行数据通信。这种方式需要再 nginx 配置文件中填写 php‐fpm pid 文件位置,效率要比 tcp socket 高。
Für die Kommunikationsmethode des TCP-Sockets müssen Sie die IP- Adresse und die Portnummer von PHP-FPM eingeben, das in der Nginx- Konfigurationsdatei ausgeführt wird . Der Vorteil dieser Methode besteht darin, dass sie serverübergreifend möglich ist. Diese Methode kann nur verwendet werden, wenn sich Nginx und PHP-FPM nicht auf demselben Computer befinden.

97.Wofür werden Ihre häufig verwendeten Nginx- Module verwendet?

Rewrite- Modul zur Implementierung der Rewriting-Funktion
Zugriffsmodul : Quellcodeverwaltung
SSL- Modul: sichere Verschlüsselung
ngx_http_gzip_module : Komprimierungsmodul für die Netzwerkübertragung
Das Modul ngx_http_proxy_module implementiert einen Proxy
Die Modulimplementierung ngx_http_upstream_module definiert die Backend-Serverliste
ngx_cache_purge implementiert die Cache-Löschfunktion

98. Weisen Sie darauf hin, welche Lastausgleichsmodi Nginx unterstützt und welche Anwendungsszenarien die einzelnen Modi haben.

1. Die Roundrobin- Abfragemethode, die Anforderungen nacheinander an jeden Hintergrundserver verteilt, ist die Standardmethode für den Lastausgleich. Es eignet sich für Situationen, in denen . Defekte Maschinen können automatisch aus der Serviceliste entfernt werden.
2. weight 根据权重来分发请求到不同的机器中,适用于后台机器性能不一样的情况。
3. ip_hash 根据请求者 ip hash 值将请求发送到后台服务器中,可以保证来自同一 ip 的请求被打到固定的机器上,可以解决 session 问题。
4. url_hash 根据请求的 url hash 值将请求分到不同的机器中,当后台服务器为缓存的时候效率高。
5. fair 根据后台响应时间来分发请求,响应时间短的分发的请求多。

99.讲一下Keepalived的工作原理?

In einem virtuellen Router sendet nur der VRRP- Router als MASTER immer VRRP- Ankündigungsinformationen , und BACKUP wird dem MASTER nicht zuvorkommen , es sei denn, seine Priorität ist höher. Wenn der MASTER nicht verfügbar ist (BACKUP kann keine Benachrichtigungsinformationen empfangen ), wird derjenige mit der höchsten Priorität unter mehreren BACKUPs als MASTER vorgezogen . Diese Vorabentscheidung erfolgt sehr schnell ( < 1 s) , um die Kontinuität des Dienstes sicherzustellen . Aus Sicherheitsgründen werden VRRP- Pakete mithilfe eines Verschlüsselungsprotokolls verschlüsselt. BACKUP sendet keine Benachrichtigungsinformationen , sondern empfängt nur Benachrichtigungsinformationen.

100.Was sind die Hauptmodule von keepalived ?

keepalived besteht hauptsächlich aus drei Modulen, nämlich core , check und vrrp .
Das Kernmodul ist der Kern von keepalived und für den Start und die Wartung des Hauptprozesses sowie das Laden und Parsen globaler Konfigurationsdateien verantwortlich.
check ist verantwortlich für Gesundheitskontrollen, darunter verschiedene gängige Kontrollmethoden
Das vrrp- Modul wird zur Implementierung des VRRP- Protokolls verwendet

101.Wie führt keepalived Gesundheitsprüfungen durch ?

Konfiguration des Keepalived- Zustandsprüfungsmodus
HTTP_GET | SSL_GET
HTTP_GET | SSL_GET
{
URL {
path / # HTTP/SSL- Prüfungs -URL kann mehrere sein
Digest < STRING > # Die Digest-Informationen nach der HTTP/SSL- Inspektion werden mit dem Tool genhash generiert
status_code 200 # Statuscode, der von der HTTP/SSL-Prüfung zurückgegeben wird
}
connect_port 80 #Port verbinden
bindto < IPADD >
connect_timeout 3 # Zeitüberschreitungszeit der Verbindung
nb_get_retry 3 #Anzahl der erneuten Verbindungen
delay_before_retry 2 #Verbindungsintervallzeit _
}

102.Wie erreicht Keepalived eine hohe Verfügbarkeit?

Die Failover-Übertragung zwischen Keepalived- Hochverfügbarkeitsdienstpaaren wird über das VRRP- Protokoll implementiert .
Wenn der Keepalived- Dienst normal funktioniert, sendet der Haupt- Master- Knoten kontinuierlich (Multicast-)Heartbeat-Nachrichten an den Backup-Knoten, um dem Backup- Backup- Knoten mitzuteilen, dass er noch aktiv ist. Wenn der Haupt- Master- Knoten ausfällt, kann er keine Heartbeat-Nachrichten senden. Deshalb , kann der Standby-Knoten den Heartbeat des primären Master- Knotens nicht mehr erkennen und ruft daher sein eigenes Übernahmeprogramm auf, um die IP- Ressourcen und Dienste des primären Master- Knotens zu übernehmen. Wenn der Master- Knoten wiederhergestellt ist, gibt der Backup- Knoten die IP- Ressourcen und Dienste frei, die er übernommen hat, als der Master-Knoten ausgefallen ist, und kehrt zu seiner ursprünglichen Backup-Rolle zurück.

103.Was sind die Haupttypen von Linux-Clustern?

1.LB - Lastausgleichscluster
Der Hauptzweck des Lastausgleichsclusters besteht darin, die Reaktionsfähigkeit von Diensten zu verbessern. Wenn eine Gruppe von Computerknoten (oder eine Gruppe von Prozessen) dieselben (homogenen) Dienste bereitstellt, sollten die Anforderungen für die Dienste gleichmäßig auf diese Knoten verteilt werden. Die beiden häufigsten auf Softwareebene sind : LVS und Haproxy
2. HA- Hochverfügbarkeitscluster
Hochverfügbarkeitscluster bieten hauptsächlich ununterbrochene 7 * 24 -Stunden-Dienste . Wenn ein bestimmter Computer ausfällt , wechselt er automatisch zu anderen Computern, um zu arbeiten , wodurch eine hohe Verfügbarkeit erreicht wird. Zu den gängigen HA- Hochverfügbarkeits-Clusterlösungen gehören die folgenden: heartbeat , corosync + openais RHCS , ultramokey , keepalived
3. HP Hochleistungscluster
Hochleistungscluster werden hauptsächlich in Szenarien verwendet, die viel CPU- Rechenleistung erfordern , wie z. B. Wettervorhersagen , die Produktion ausländischer 3D- Blockbuster mit Spezialeffekten und eine Reihe von Anwendungen, die viel Rechenleistung erfordern . Zu den gängigen Hochleistungsclusterlösungen von HP gehören: laubvoll

104. Vergleich mehrerer gängiger Lastausgleichsmethoden?

1. Eigenschaften von LVS
1. Arbeitet auf der 4. Schicht des Netzwerks, weist einen starken Lastwiderstand auf und wird zur Verteilung verwendet.
2. Die Konfigurierbarkeit ist relativ gering;
3. Funktioniert stabil und verfügt über eine eigene Hot-Backup-Lösung für zwei Maschinen.
4. Es verfügt über ein breites Anwendungsspektrum und kann die Last aller Anwendungen ausgleichen.
2. Eigenschaften von NGINX
1. Funktioniert auf Schicht 7 des Netzwerks ;
2. Relativ geringe Abhängigkeit vom Netzwerk;
3. Installation und Konfiguration sind relativ einfach und das Testen ist bequemer.
4. Kann hohem Lastdruck standhalten und stabil sein;
5. Interne Serverausfälle können über den Port erkannt werden.
6. Die asynchrone Verarbeitung von Anforderungen kann dem Knotenserver helfen, die Last zu reduzieren.
7. Kann http und E-Mail unterstützen ;
8. Standardmäßig gibt es nur zwei Lastausgleichsalgorithmen: Round-Robin und IP-Hash ;
3. Funktionen von Haproxy
1. Funktioniert über Netzwerkschicht 7 .
2. Es kann einige Mängel von Nginx ergänzen, z. B. Sitzungswartung , Cookie- Anleitung usw.
3. Unterstützt die Erkennung von Back-End-Serverproblemen bei der URL- Erkennung
4. Weitere Lastausgleichsstrategien
5. Bessere Lastausgleichsgeschwindigkeit
6. HAProxy kann den Lastausgleich für MySQL durchführen und die Back -End- DB- Knoten erkennen und einen Lastausgleich durchführen .

105.Was ist das Prinzip des Algorithmus für die minimale Anzahl von Verbindungen im LVS-Planungsalgorithmus?

Der Least Connection Scheduling-Algorithmus weist neue Verbindungsanforderungen dem Server mit der geringsten aktuellen Anzahl von Verbindungen zu. Der Least Connection Scheduling ist ein kurzer dynamischer Planungsalgorithmus. Er schätzt den Lastausgleich des Servers anhand der Anzahl der derzeit aktiven Verbindungen auf dem Server die Anzahl der von jedem Server hergestellten Verbindungen aufzeichnen. Wenn eine Anforderung an einen bestimmten Server geplant wird , wird die Anzahl der Verbindungen um 1 erhöht . Wenn die Verbindung beendet wird oder eine Zeitüberschreitung auftritt, wird die Anzahl der Verbindungen um eins verringert. Wenn das System implementiert ist, geben wir auch das Gewicht des Servers ein. Wenn es 0 ist , bedeutet dies , dass der Server nicht verfügbar ist und nicht geplant wird.

106. Stellen Sie kurz die drei Arbeitsmodelle von lvs vor

1. NAT- Modell _
Das NAT- Modell wird durch Netzwerkadressübersetzung implementiert . Die Arbeitsmethode besteht darin, dass die Benutzeranforderung zuerst den Front-End-Load-Balancer erreicht und der Load-Balancer dann die Zieladresse der Benutzeranforderung entsprechend an den Back-End-Anwendungsserver ändert Vordefinierter Planungsalgorithmus. Nachdem der Programmserver die Anforderung verarbeitet hat, gibt er das Ergebnis an den Benutzer zurück. Während dieses Vorgangs muss es den Lastausgleicher durchlaufen . Der Lastausgleicher ändert die Quelladresse der Nachricht in die von angeforderte Zieladresse den Benutzer und leitet es dann an den Benutzer weiter , wodurch der gesamte Lastausgleichsprozess .
2. DR- Modell _
Das DR- Modell ist eine durch Routing-Technologie implementierte Lastausgleichstechnologie . Der Unterschied zwischen diesem Modell und dem NAT- Modell besteht darin , dass der Lastausgleicher die Anforderung an den realen Server sendet, indem er die MAC- Adresse in der Benutzeranforderungsnachricht umschreibt , und direkt an den realen Server reagiert auf den Benutzer. Dadurch wird der Druck auf den Load Balancer erheblich reduziert , und das DR- Modell ist auch das am häufigsten verwendete.
3. TUN- Modell _
Das TUN- Modell wird durch IP- Tunneltechnologie implementiert . Das TUN- Modell ähnelt in gewisser Weise dem DR- Modell . Der Unterschied besteht darin, dass der Kommunikationsmechanismus zwischen dem Load Balancer (Director Server) und dem Anwendungsserver (Real Server) Benutzeranforderungen an A Real weiterleitet Server, und der Real Server reagiert auch direkt auf Benutzer

107. Was ist die Lösung für die Ressourcenisolation in einem Cluster?

1. Wenn ein Cluster in zwei kleine Cluster aufgeteilt wird, kommt es zu Ressourcenkonflikten. Um katastrophale Systemabstürze zu vermeiden, die durch Konflikte um das Back-End-Speichersystem verursacht werden, verursacht das Clustersystem
Nach dem Eintritt in den Abstimmungsmechanismus kann nur der Cluster mit mehr als der Hälfte der gesetzlichen Stimmen überleben, andernfalls wird das Clustersystem gestartet.
2. Wenn der Cluster eine gerade Zahl ist, können bei einer Teilung beide Seiten die gleiche Anzahl an Stimmen haben; daher sollte das Clustersystem keine gerade Zahl sein. Wenn es eine gerade Zahl ist, ist ein Betrag erforderlich.
Externe Ping- Knoten nehmen an der Abstimmung teil.
3. Nachdem ein Cluster mit unzureichenden Stimmen den Clusterdienst verlässt, muss der STONITH- Mechanismus Ressourcen isolieren , um sicherzustellen, dass er nicht um Ressourcen konkurriert .

Guess you like

Origin blog.csdn.net/wuds_158/article/details/132900287