Maison > Article > Opération et maintenance > Comment faire progresser l'exploitation et la maintenance de Linux de débutant à avancé
Les ingénieurs d'exploitation et de maintenance ont un travail très difficile au début. Au cours de cette période, ils peuvent effectuer le travail de réparation d'ordinateurs, de coupe de câbles réseau et de déplacement de machines. , qui semble n'avoir aucun statut ! Le temps est également très fragmenté, avec toutes sortes de questions insignifiantes qui vous entourent, ce qui rend difficile la réflexion sur votre valeur personnelle. Peu à peu, vous vous perdez dans l'industrie et vous sentez qu'il n'y a aucune perspective de développement.
Ces travaux ennuyeux donneront en effet faim aux gens. D'un point de vue technique, ce sont en fait des compétences de base, qui aideront les travaux ultérieurs d'exploitation et de maintenance, car je suis aussi venu ici et je peux le comprendre profondément. arriver. Vous devez donc conserver une attitude positive et continuer à apprendre pendant cette période. Un jour dans le futur, je crois que je vous remercierai !
D'accord, allons droit au but. Sur la base de mes nombreuses années d'expérience dans les travaux d'exploitation et de maintenance, je partagerai avec vous le parcours d'apprentissage d'un senior. ingénieur d'exploitation et de maintenance.
Au début, vous devez être familier avec Linux/ Installation du système d'exploitation Windows. Structure du répertoire, processus de démarrage, etc.
Apprenez principalement le système Linux Dans l'environnement de production, le travail se fait essentiellement sur l'interface des personnages, vous devez donc maîtriser des dizaines de choses courantes. utilisé des commandes de gestion de base, y compris la gestion des utilisateurs, le partitionnement de disque, la gestion des progiciels, les autorisations de fichiers, le traitement de texte, la gestion des processus, les outils d'analyse des performances, etc.
Vous devez être familier avec les modèles OSI et TCP/IP. Vous devez connaître les concepts de base et les principes de mise en œuvre des commutateurs et des routeurs.
Maîtriser la structure grammaticale de base de Shell et être capable d'écrire des scripts simples.
Les services réseau les plus couramment utilisés doivent être déployés, tels que vsftp, nfs, samba. , bind , DHCP, etc.
Un système de gestion des versions de code est indispensable. Vous pouvez apprendre les principaux SVN et GIT et pouvoir les déployer et les utiliser simplement.
Les données sont souvent transférées entre serveurs, vous devez donc pouvoir utiliser : rsync et scp.
Synchronisation des données : inotify/sersync.
Pour effectuer certaines tâches de manière répétée, vous pouvez écrire un script à exécuter régulièrement, vous devez donc être capable de configurer le crond du service de tâches planifiées sous Linux.
Chaque entreprise aura essentiellement un site Web. Pour faire fonctionner le site Web, vous devez créer une plate-forme de services Web.
Si vous développez en langage PHP, vous créez généralement des plateformes de sites Web LAMP et LNMP. Il s'agit d'une combinaison de termes techniques parlant séparément, vous devez être capable de déployer Apache, Nginx, MySQL et PHP.
S'il est développé en langage JAVA, Tomcat est généralement utilisé pour exécuter le projet. Afin d'améliorer la vitesse d'accès, vous pouvez utiliser le proxy inverse Nginx Tomcat pour traiter les pages statiques et Tomcat pour obtenir des pages dynamiques. séparation dynamique et statique.
Ce n'est pas aussi simple que le déploiement. Vous devez également connaître le fonctionnement du protocole HTTP et un réglage simple des performances.
La base de données est MySQL, qui est la base de données open source la plus utilisée au monde. Vous avez raison de l'apprendre ! Vous devez également connaître quelques instructions SQL simples, la gestion des utilisateurs, les moteurs de stockage courants, la sauvegarde et la récupération de bases de données.
Si vous souhaitez approfondir, vous devez connaître la réplication maître-esclave, l'optimisation des performances, les solutions de cluster grand public : MHA, MGR, etc. Bien sûr, NoSQL est très populaire. Apprenez simplement Redis et MongoDB.
La sécurité est très importante. N'attendez pas que le système soit envahi avant d'élaborer des politiques de sécurité. Il est donc déjà trop tard ! le serveur est mis en ligne Des stratégies de contrôle d'accès de sécurité doivent être mises en œuvre immédiatement, comme l'utilisation d'iptables pour restreindre l'accès aux seules adresses IP sources fiables, la fermeture de certains services et ports inutiles, etc.
Vous devez connaître certains types d'attaques courantes, sinon comment prescrire les bons médicaments tels que CC, DDOS, ARP, etc.
La surveillance est essentielle et constitue une paille qui sauve des vies pour la découverte et le traçage en temps opportun des problèmes. Vous pouvez choisir d'apprendre le système de surveillance open source grand public Zabbix, qui est riche en fonctions et peut répondre aux besoins de surveillance de base. Les points de surveillance incluent les ressources de base du serveur, l'état de l'interface, les performances du service, PV/UV, les journaux, etc.
Vous pouvez également créer un tableau de bord pour afficher plusieurs données clés en temps réel, comme Grafana, ce qui sera très cool.
Le script Shell est un outil puissant pour Linux pour effectuer automatiquement le travail. Il doit être écrit avec compétence, vous devez donc apprendre davantage les fonctions, tableaux, signaux, envoyer des e-mails, etc.
Les trois mousquetaires du traitement de texte (grep, sed, awk) doivent jouer à 6. Le traitement de texte sous Linux en dépend.
Les scripts Shell ne peuvent effectuer que certaines tâches de base si vous souhaitez effectuer des tâches plus complexes, telles que l'appel d'API, de multi-processus, etc. Vous devez apprendre une langue de haut niveau.
Python est le langage le plus utilisé dans le domaine de l'exploitation et de la maintenance. Il est simple et facile à utiliser, vous avez donc raison de l'apprendre. A ce stade, il vous suffit de maîtriser les bases, comme par exemple ! structures de syntaxe de base, opérations sur les objets fichier, fonctions, objets d'itération et gestion des exceptions, envoi d'e-mails, programmation de bases de données, etc.
Les utilisateurs se plaignent toujours de la lenteur de l'accès au site Web. Regardez le serveur. Ressources riches ! L'accès lent au site Web ne peut pas être causé par la saturation des ressources du serveur. Il existe de nombreux facteurs d'influence, tels que le réseau, le nombre de couches de transfert, etc.
Pour le réseau, il y a un problème de communication nord-sud, et l'accès entre les deux sera lent. Cela peut être résolu en utilisant CDN, tout en mettant en cache les pages statiques, en interceptant autant que possible les requêtes au niveau de la couche supérieure. possible, et en réduisant les temps de requête et de réponse back-end.
Si vous n'utilisez pas CDN, vous pouvez également utiliser des services de mise en cache tels que Squid, Varnish et Nginx pour mettre en cache les pages statiques et les placer à l'entrée du trafic.
Un seul serveur a des ressources limitées après tout, et il est définitivement incapable de supporter un trafic élevé. La technologie la plus critique pour résoudre ce problème est de. utilisez un équilibreur de charge, développez horizontalement plusieurs serveurs Web et fournissez des services externes en même temps, doublant ainsi les performances. Les principales technologies open source pour les équilibreurs de charge incluent LVS, HAProxy et Nginx. Assurez-vous de vous familiariser avec un ou deux !
Le goulot d'étranglement des performances du serveur Web a été résolu. La base de données est plus critique. Il est préférable d'utiliser un cluster comme exemple. Il peut s'agir d'une architecture maître-multi-esclave. Sur la base, la lecture et l'écriture sont séparées. Le maître est responsable de l'écriture et plusieurs esclaves sont responsables de la lecture, la bibliothèque esclave peut être étendue horizontalement et il y a un équilibreur de charge à quatre couches devant, qui peut transporter des dizaines de millions. PV, ce qui est parfait !
Un logiciel haute disponibilité est également nécessaire pour éviter les outils monopoints. Les principaux incluent Keepalived, Heartbeat et al.
Il y a tellement d'images sur le site Web ! Le stockage partagé NFS ne peut pas le prendre en charge et le traitement est très lent. Utilisez un système de fichiers distribué, des tâches de traitement parallèles, pas de point unique, une grande fiabilité. , hautes performances et autres fonctionnalités, grand public Certains incluent FastDFS, MFS, HDFS, Ceph, GFS, etc. Au début, je recommande d'apprendre FastDFS, qui peut répondre aux besoins des projets de petite et moyenne taille.
L'utilisation des ressources matérielles du serveur est très faible, ce qui est un gaspillage. Vous pouvez virtualiser un serveur inactif et le transformer en plusieurs machines virtuelles, chaque machine virtuelle est un système d'exploitation complet. L’utilisation des ressources peut être grandement améliorée. Il est recommandé d'apprendre la plateforme cloud open source KVM+OpenStack.
Les machines virtuelles sont acceptables comme plate-forme de base, mais la mise à l'échelle élastique des applications est trop lourde. Le démarrage prend plusieurs minutes et le fichier est si volumineux qu'il est trop laborieux de se développer rapidement !
Facile à dire, utilisez des conteneurs, les principales caractéristiques des conteneurs sont un déploiement rapide et l'isolation de l'environnement. Un service est encapsulé dans une image et des centaines de conteneurs peuvent être créés en quelques minutes.
La technologie de conteneurs grand public n’est autre que Docker.
Bien sûr, Docker autonome dans l'environnement de production ne peut pas répondre aux besoins de l'entreprise dans la plupart des cas. Les conteneurs de gestion de cluster Kubernetes et Swarm peuvent être déployés pour former un grand pool de ressources et une gestion centralisée pour fournir un support solide à l'infrastructure. .
Le travail répété et répétitif ne parvient pas seulement à améliorer l'efficacité, mais ne reflète pas non plus la valeur.
Tous les travaux d'exploitation et de maintenance sont standardisés, tels que l'unification des versions d'environnement, des structures de répertoires, des systèmes d'exploitation, etc. Sur la base de la standardisation, davantage d'aspects de l'automatisation peuvent être réalisés. Une tâche complexe peut être réalisée en un clic de souris ou en quelques commandes. C'est tellement cool
Par conséquent, toutes les opérations doivent être automatisées ! autant que possible pour réduire les erreurs humaines, améliorer l'efficacité du travail.
Outils de gestion centralisée du serveur grand public : Ansible, Saltstack
Choisissez simplement l'un de ces deux.
Outil d'intégration continue : Jenkins
5. Développement Python avancé
Vous pouvez en apprendre davantage sur le développement Python et maîtriser la programmation orientée objet.
Il est préférable d'apprendre un site Web de développement de framework Web, tel que Django et Flask, principalement pour développer un système de gestion d'exploitation et de maintenance, écrire des processus complexes dans la plate-forme, puis intégrer des outils de gestion centralisés pour créer un. unique Exploitez et maintenez votre propre plateforme de gestion.
Les journaux sont également très importants. Une analyse régulière peut découvrir des risques potentiels et extraire des éléments précieux.
Un système de journalisation open source : ELK
Apprenez à le déployer et à l'utiliser pour fournir les exigences de visualisation des journaux pour le développement.
Le simple déploiement ne suffit pas. L'optimisation des performances peut maximiser la capacité du service.
Ce domaine est également relativement difficile, et c'est aussi l'un des points clés pour un salaire élevé. Il faut travailler dur pour apprendre pour de l'argent !
Vous pouvez commencer par la couche matérielle, couche du système d'exploitation, couche logicielle et architecture Pensez aux dimensions des couches.
L'apprentissage est un long processus dont chacun de nous a besoin pour passer sa vie à faire carrière. qui persiste.
La chose la plus importante est la persévérance, la difficulté réside dans la persévérance, le succès réside dans la persévérance !
A chaque étape, fixez-vous un objectif.
Par exemple : fixez-vous d'abord un petit objectif qui peut être atteint et gagnez 100 millions !
Apprenez à partager, la valeur. La technologie réside dans sa capacité à transférer efficacement les connaissances vers le monde extérieur et à les faire connaître à davantage de personnes.
Tant que tout le monde retire quelque chose, pensez à ce qui va se passer ?
Si vous allez dans la bonne direction, vous n'aurez pas à vous soucier du long voyage !
Le projet GNU (également connu sous le nom de GNU. Project) a été créé par Richard Stallman ( The Free Software Collective a été lancé publiquement par Richard Stallman le 27 septembre 1983. Son objectif est de créer un système d'exploitation totalement gratuit. GNU est également connu sous le nom de Free Software Engineering Project.
GPL est la licence publique générale GNU (GPL), qui est le concept « d'anti-droit d'auteur ». C'est l'un des protocoles GNU dont le but est de protéger la libre utilisation, la copie, la recherche et la recherche. développement de logiciels GNU. Modifier et publier. Il est également requis que le logiciel soit publié sous forme de code source.
Le système GNU et le noyau Linux se combinent pour former un système d'exploitation complet : un système GNU basé sur Linux. Ce système d'exploitation est généralement appelé « GNU/Linux », ou simplement Linux.
Une distribution Linux typique comprend : le noyau Linux, certaines bibliothèques et outils de programmes GNU, un shell de ligne de commande, une interface graphique du système X Window et l'environnement de bureau correspondant, tel comme KDE ou GNOME, et contient des milliers d'applications allant des suites bureautiques, compilateurs et éditeurs de texte aux outils scientifiques.
Distributions grand public :
Red Hat Enterprise Linux, CentOS, SUSE, Ubuntu, Debian, Fedora, Gentoo
Linux est basé sur Unix et appartient à la classe Unix. Le système d'exploitation Uinx prend en charge les systèmes multi-utilisateurs, multitâches, multithreads et prenant en charge plusieurs. Architectures CPU. Linux hérite de la philosophie de conception centrée sur le réseau d'Unix et est un système d'exploitation réseau multi-utilisateurs offrant des performances stables.
Partition d'échange, c'est-à-dire la zone d'échange, le système échange avec Swap lorsque la mémoire physique n'est pas suffisante. Autrement dit, lorsque la mémoire physique du système n'est pas suffisante, une partie de l'espace du disque dur est libérée pour être utilisée par le programme en cours d'exécution. Lorsque ces programmes doivent être exécutés, les données enregistrées sont restaurées de la partition Swap vers la mémoire. Les programmes dont l'espace mémoire est libéré sont généralement des programmes qui n'ont pas fonctionné depuis longtemps.
L'espace d'échange doit généralement être supérieur ou égal à la taille de la mémoire physique. Dans le même temps, le minimum ne doit pas être inférieur à 64 Mo et le maximum doit être le double de la mémoire physique.
GNU GRUB (GRand Unified Bootloader appelé "GRUB") est un programme de gestion de démarrage de démarrage multi-systèmes d'exploitation du GNU projet.
GRUB est un gestionnaire de démarrage qui prend en charge plusieurs systèmes d'exploitation. Sur un ordinateur doté de plusieurs systèmes d'exploitation, GRUB peut être utilisé pour sélectionner le système d'exploitation que l'utilisateur souhaite exécuter au démarrage de l'ordinateur. Dans le même temps, GRUB peut démarrer différents noyaux sur la partition système Linux et peut également être utilisé pour transmettre des paramètres de démarrage au noyau, comme l'entrée en mode mono-utilisateur.
Le cache (cache) est une mémoire temporaire située entre le CPU et la mémoire. La capacité du cache est bien inférieure à la mémoire mais la. la vitesse d'échange est plus rapide que la mémoire. Beaucoup plus rapide. Le cache résout le conflit entre la vitesse de fonctionnement du processeur et la vitesse de lecture et d'écriture de la mémoire en mettant en cache les blocs de données de fichiers et améliore la vitesse d'échange de données entre le processeur et la mémoire. Plus le cache Cache est grand, plus la vitesse de traitement du processeur est rapide.
La mémoire cache tampon (buffer) accélère l'accès aux données sur le disque en mettant en cache les blocs de données du disque (périphérique d'E/S), réduit les E/S et améliore la mémoire et le disque dur (ou d'autres périphériques d'E/S ) ). Le tampon est sur le point d'être écrit sur le disque et le cache est lu à partir du disque.
(1) L'extrémité requérante envoie un paquet de données SYN (SYN=A) et attend confirmation de l'extrémité répondante
(2) Le répondeur reçoit SYN et renvoie SYN (A+1) et son propre paquet ACK (K) au demandeur
( 3) L'extrémité requérante reçoit le paquet SYN+ACK de l'extrémité répondante et envoie à nouveau un paquet d'accusé de réception ACK (K+1) à l'extrémité répondante
Le L'extrémité requérante et l'extrémité répondante établissent une connexion TCP et terminent la poignée de main à trois voies, démarrent la transmission des données.
Le système de fichiers Linux adopte une structure de répertoires arborescente avec des liens, c'est-à-dire qu'il n'y a qu'un seul répertoire racine (généralement représenté par " /"). Il contient des informations sur les sous-répertoires ou les fichiers de niveau inférieur ; les sous-répertoires peuvent également contenir des informations sur les sous-répertoires ou les fichiers de niveau inférieur.
/ : La racine de la première hiérarchie, le répertoire racine de toute la hiérarchie du système de fichiers. C'est-à-dire l'entrée du système de fichiers, le répertoire de plus haut niveau.
/boot : contient les fichiers requis par le noyau Linux et le programme de démarrage du système, tels que le noyau, initrd ; le gestionnaire de démarrage du système grub se trouve également dans ce répertoire.
/bin : Les commandes requises par le système de base ont des fonctions similaires à "/usr/bin". Les fichiers de ce répertoire sont tous exécutables. Les utilisateurs ordinaires peuvent également les exécuter.
/sbin : commandes de maintenance de base du système, qui ne peuvent être utilisées que par les super utilisateurs.
/etc : Tous les fichiers de configuration du système.
/dev : répertoire de stockage de fichiers de l'appareil, tel qu'un terminal, un disque, un lecteur optique, etc.
/var : stocke les données qui changent fréquemment, telles que les journaux, les e-mails, etc.
/home : Le répertoire de stockage par défaut pour les utilisateurs ordinaires.
/opt : Le répertoire de stockage des logiciels tiers. Par exemple, les packages logiciels définis par l'utilisateur et les packages logiciels compilés sont installés dans ce répertoire.
/lib : Répertoire où sont stockés les fichiers de bibliothèque et les modules du noyau, y compris tous les fichiers de bibliothèque partagés requis par les programmes système.
Lien physique : les liens physiques utilisent le même lien de nœud d'index (numéro d'inode), c'est-à-dire plusieurs noms de fichiers peuvent être autorisés à pointer vers le même nœud d'index de fichier (les liens physiques ne prennent pas en charge les liens de répertoire et ne peuvent pas traverser les liens de partition). La suppression d'un lien physique n'affectera pas le fichier source du nœud d'index et les plusieurs fichiers situés en dessous. lien.
Lien logiciel (Lien symbolique) : Un lien symbolique est un lien créé sous la forme d'un chemin, semblable à un raccourci Windows Liens et les liens symboliques permettent la création de plusieurs noms de fichiers liés au même fichier source. Si le fichier source est supprimé, tous les liens symboliques situés en dessous seront indisponibles. (Les liens logiciels prennent en charge les répertoires, les partitions croisées et les systèmes de fichiers croisés)
RAID 0 : appelée technologie de stockage par bande Stripping, tous les disques sont entièrement lus et écrits en parallèle, est la plus simple Il s'agit d'une forme de configuration d'une matrice de disques. Il ne nécessite que plus de 2 disques durs. Il est peu coûteux et peut fournir les performances et le débit de l'ensemble du disque. Cependant, RAID 0 ne fournit pas de fonctions de redondance des données et de réparation des erreurs. Un seul dommage au disque dur entraînera la perte de toutes les données. (RAID 0 améliore simplement la capacité et les performances du disque, sans offrir de garantie de fiabilité des données. Il convient aux environnements ayant de faibles exigences en matière de sécurité des données)
RAID 1 : Stockage miroir, en combinant deux disques Les données d'un disque sont mis en miroir sur un autre disque pour obtenir la redondance des données, et les données de sauvegarde mutuelle sont générées sur les deux disques, et leur capacité n'est égale qu'à la capacité d'un disque. Lorsque les données sont écrites sur un disque, un miroir sera produit sur un autre disque inactif pour maximiser la fiabilité et la réparabilité du système sans affecter les performances ; lorsque les données d'origine sont occupées, elles peuvent être copiées directement à partir du miroir. Lire les données (à partir du plus rapide des deux disques durs) pour améliorer les performances de lecture. Au contraire, RAID 1 a une vitesse d'écriture plus lente. RAID 1 prend généralement en charge le « hot swap », c'est-à-dire que le retrait ou le remplacement des disques durs de la matrice peut être effectué pendant que le système est en cours d'exécution sans l'interrompre. RAID 1 a le coût unitaire de disques durs le plus élevé de la matrice de disques, mais il offre une sécurité, une fiabilité et une disponibilité élevées des données. Lorsqu'un disque dur tombe en panne, le système peut automatiquement basculer vers le disque miroir pour la lecture et l'écriture sans avoir besoin de se réorganiser. les données.
RAID 0+1 : également connu sous le nom de RAID 10, il s'agit en fait d'une combinaison de RAID 0 et RAID 1. Il divise en continu les données en unités de bits ou d'octets et lit/écrit plusieurs disques en parallèle. En même temps, chaque disque est mis en miroir pour la redondance. Grâce à la combinaison de RAID 0+1, en plus des données distribuées sur plusieurs disques, chaque disque possède son propre disque miroir physique, offrant une redondance, permettant une ou plusieurs pannes de disque sans affecter la disponibilité des données, et offrant une vitesse de lecture/écriture rapide. capacité. RAID 0+1 nécessite au moins 4 disques durs pour créer un ensemble de bandes dans l'image disque. La technologie RAID 0+1 garantit non seulement une fiabilité élevée des données, mais garantit également une grande efficacité de lecture/écriture des données.
RAID 5 : C'est une solution de stockage qui équilibre les performances de stockage, la sécurité des données et le coût de stockage. RAID 5 peut être compris comme un compromis entre RAID 0 et RAID 1. RAID 5 nécessite au moins trois disques durs. RAID 5 peut assurer la sécurité des données du système, mais le degré de protection est inférieur à celui de la mise en miroir et l'utilisation de l'espace disque est supérieure à celle de la mise en miroir. RAID 5 a une vitesse de lecture des données similaire à RAID 0, mais possède des informations de contrôle de parité supplémentaires et la vitesse d'écriture des données est légèrement plus lente que l'écriture sur un seul disque. Dans le même temps, étant donné que plusieurs données correspondent à une information de parité, le RAID 5 utilise plus d'espace disque que le RAID 1 et le coût de stockage est relativement faible. Il s'agit d'une solution actuellement largement utilisée.
Pour plus d'articles techniques liés à Linux, veuillez visiter la colonne Tutoriel Linux pour apprendre !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!