運用保守エンジニアは、初期段階では非常に大変な仕事です。この期間中、コンピューターの修理、ネットワークケーブルの切断、機械の移動などのタスクを実行する可能性があり、ステータスがないように見えます。時間も断片化され、さまざまな些細な問題があなたを取り囲んでいます。個人の価値を反映することは難しく、徐々に業界について混乱し、発展の未来がないと感じるようになります。 こうした退屈な作業は、確かに人々に不満を感じさせます。技術的な観点から見ると、これらは実際には基本的なスキルであり、後の運用および保守作業に目に見えない形で一定の助けをもたらします。なぜなら、私もこれを経験しており、深く理解しているからです。したがって、この期間中は前向きな姿勢を維持し、学習を継続する必要があります。いつか将来恩返しできると信じています! さて、本題に入りましょう。運用と保守における私の長年の経験に基づいて、上級運用保守エンジニア向けの学習パスを皆さんと共有したいと思います。 主要な 1. Linux の基礎: 初期段階では、Linux/Windows オペレーティング システムのインストール、ディレクトリ構造、起動プロセスなどに精通している必要があります。 2. システム管理 主に Linux システムを学びます。実稼働環境では、ほとんどの作業が文字インターフェイスで完了するため、ユーザー管理、ディスクパーティション、ソフトウェアパッケージ管理、ファイル権限、テキスト処理、プロセス管理、パフォーマンス分析ツールなど、よく使用される数十の基本管理コマンドを習得する必要があります。 3. ネットワークの基礎 OSI および TCP/IP モデルに精通している必要があります。スイッチとルーターの基本的な概念と実装原則を知っておく必要があります。 4. シェルスクリプトプログラミングの基礎 Shell の基本的な構文構造を習得し、簡単なスクリプトを作成できるようになります。 中級 1. ネットワーク サービス vsftp、nfs、samba、bind、dhcp など、最も一般的に使用されるネットワーク サービスを導入する必要があります。 コードのバージョン管理システムは必須です。主流のSVNとGITを学べば簡単に導入・利用できるようになります。 データはサーバー間で頻繁に転送されるため、rsync と scp を使用できる必要があります。 データ同期: inotify/sersync。 いくつかの繰り返しタスクを完了するには、それらをスクリプトに記述して定期的に実行することができます。そのため、Linux でスケジュールされたタスク サービス crond を構成できる必要があります。 2. Webサービス ほぼすべての企業がウェブサイトを所有しており、ウェブサイトを運営するためにはウェブサービスプラットフォームを構築する必要があります。 PHP 言語で開発する場合、通常は LAMP または LNMP の Web サイト プラットフォームが構築されます。これは技術用語の組み合わせの綴りです。個別に言えば、Apache、Nginx、MySQL、PHP を展開できる必要があることを意味します。 JAVA 言語で開発する場合、プロジェクトの実行には通常 Tomcat が使用されます。アクセス速度を上げるために、Tomcat のリバース プロキシとして Nginx を使用できます。Nginx は静的ページを処理し、Tomcat は動的ページを処理することで、動的と静的の分離を実現します。 デプロイメントはそれほど簡単ではありません。HTTP プロトコルの動作原理と簡単なパフォーマンス チューニングも知っておく必要があります。 3. データベース 選択されたデータベースは、世界で最も広く使用されているオープンソース データベースである MySQL です。ぜひ学んでおくことをお勧めします。また、簡単な SQL ステートメント、ユーザー管理、一般的なストレージ エンジン、データベースのバックアップとリカバリについても知っておく必要があります。 さらに深く理解したい場合は、マスター/スレーブ レプリケーション、パフォーマンスの最適化、主流のクラスター ソリューション (MHA、MGR など) について知っておく必要があります。 NoSQL は人気があるので、もちろん欠かせません。Redis と MongoDB を学んでください。 4. セキュリティ セキュリティは非常に重要です。システムがハッキングされるまでセキュリティ ポリシーを作成しないでください。その時点では手遅れです。したがって、サーバーがオンラインの場合は、iptables を使用して信頼できるソース IP のみにアクセスを制限したり、不要なサービスやポートをシャットダウンしたりするなど、セキュリティ アクセス制御ポリシーをすぐに実装する必要があります。 一般的な攻撃の種類をいくつか知っておく必要があります。そうしないと、適切な対策を処方できません。たとえば、CC、DDOS、ARP などです。 5. 監視システム 監視は不可欠であり、問題をタイムリーに検出して追跡するための命綱となります。豊富な機能を備え、基本的な監視ニーズを満たすことができる主流の Zabbix オープンソース監視システムを学習することもできます。監視ポイントには、基本的なサーバー リソース、インターフェイスの状態、サービス パフォーマンス、PV/UV、ログなどが含まれます。 また、Grafana などのリアルタイムの重要なデータを表示するダッシュボードを作成することもできます。これは非常に便利です。 6. 高度なシェルスクリプトプログラミング シェル スクリプトは、Linux でタスクを自動的に完了するための強力なツールです。シェル スクリプトの作成には熟練している必要があるため、関数、配列、シグナル、電子メールの送信などをさらに学習する必要があります。 テキスト処理の三銃士 (grep、sed、awk) は本当に優れています。Linux でのテキスト処理にはこれらを頼りにできます。 7. Python開発の基礎 シェル スクリプトでは、いくつかの基本的なタスクしか実行できません。API の呼び出しやマルチプロセスなどのより複雑なタスクを実行したい場合は、高級言語を学ぶ必要があります。 Python は、運用と保守の分野で最も広く使用されている言語です。シンプルで使いやすいため、学んで間違いはありません。この段階では、基本的な文法構造、ファイルオブジェクトの操作、関数、反復オブジェクト、例外処理、電子メールの送信、データベースプログラミングなどの基本を習得するだけで十分です。 高級な 1. Web静的キャッシュ ユーザーは、Web サイトへのアクセスが遅いとよく不満を言いますが、サーバーのリソースはまだ豊富です。Web サイトへのアクセスが遅いのは、サーバーのリソースが飽和しているからではない可能性があります。ネットワーク、転送層の数など、影響する要因は多数あります。 ネットワークに関しては、南北通信の問題があり、その間のアクセスが遅くなります。これは、CDN を使用し、静的ページをキャッシュし、最上位レベルの応答でリクエストを可能な限り傍受して、バックエンドのリクエストと応答時間を削減することで解決できます。 CDN を使用しない場合は、Squid、Varnish、Nginx などのキャッシュ サービスを使用して静的ページをキャッシュし、トラフィックの入り口に配置することもできます。 2. クラスター 結局のところ、単一のサーバーではリソースが限られており、高トラフィックをサポートできません。この問題を解決する最も重要な技術は、ロードバランサーを使用して複数のWebサーバーを水平に拡張し、同時に外部にサービスを提供して、パフォーマンスを何倍にも高めることです。ロードバランサーの主流のオープンソーステクノロジーには、LVS、HAProxy、Nginx などがあります。ぜひ1つか2つは覚えておきましょう! Web サーバーのパフォーマンス ボトルネックが解決されました。データベースはより重要です。クラスターを使用する必要があります。たとえば、MySQL にマスター スレーブ アーキテクチャを使用できます。これに基づいて、読み取りと書き込みが分離されます。マスターは書き込みを担当し、複数のスレーブは読み取りを担当します。スレーブ データベースは水平方向に拡張できます。数千万の PV を運ぶために、前面に 4 層のロード バランサーが追加されます。完璧です! また、単一攻撃ポイントを回避するために、高可用性ソフトウェアの使用方法も知っておく必要があります。主流のソフトウェアには、Keepalived、Heartbeat などがあります。 なぜウェブサイトに写真がこんなにたくさんあるのでしょうか?NFS共有ストレージはそれをサポートできず、処理が非常に遅いのです。対処は簡単です!分散ファイルシステム、タスクの並列処理、単一ポイントなし、高信頼性、高パフォーマンスなどの機能があり、主流はFastDFS、MFS、HDFS、Ceph、GFSなどです。初期段階では、小規模から中規模のニーズを満たすことができる FastDFS を学習することをお勧めします。 3. 仮想化 ハードウェア サーバー リソースの使用率は非常に低く、これは非常に無駄です。アイドル状態のサーバーは、それぞれが完全なオペレーティング システムである多数の仮想マシンに仮想化できます。リソースの利用率を大幅に向上できます。オープンソースの KVM + OpenStack クラウド プラットフォームを学習することをお勧めします。 仮想マシンは基本プラットフォームとしては問題ありませんが、アプリケーション業務の弾力的なスケーリングが重すぎます!起動に数分かかるし、ファイルが大きいのですぐに拡張するのは難しすぎます! それは簡単です。コンテナを使用します。コンテナの主な機能は、迅速な展開と環境の分離です。サービスはイメージにカプセル化され、数百のコンテナを数分で作成できます。 主流のコンテナ技術は、ほかでもない Docker です。 もちろん、ほとんどの場合、本番環境の単一の Docker マシンではビジネス ニーズを満たすことはできません。代わりに、Kubernetes と Swarm を導入してクラスター内のコンテナーを管理し、集中管理用の大規模なリソース プールを形成してインフラストラクチャを強力にサポートすることができます。 4. 自動化 作業を繰り返すと、効率が向上しないだけでなく、その価値も反映されません。 環境バージョン、ディレクトリ構造、オペレーティングシステムなどの統一など、すべての運用保守作業が標準化されています。標準化に基づいてのみ、より便利な自動化を実現できます。複雑なタスクも、マウスをクリックするか、いくつかのコマンドを入力するだけで完了できます。すばらしいですね。 そのため、人為的ミスを減らし、作業効率を向上させるために、すべての操作を可能な限り自動化しています。 主流のサーバー集中管理ツール: Ansible、Saltstack これら2つのいずれかを選択できます。 継続的インテグレーションツール: Jenkins 5. 高度なPython開発 Python 開発をさらに学び、オブジェクト指向プログラミングを習得できます。 また、Django や Flask など、主に運用保守管理システムの開発に使用される Web サイト開発用の Web フレームワークを学習することも最適です。プラットフォームにいくつかの複雑なプロセスを記述し、集中管理ツールを統合して、運用保守用の管理プラットフォームを作成できます。 6. ログ解析システム ログも非常に重要です。定期的な分析により、潜在的なリスクを発見し、貴重な情報を抽出できます。 オープンソースのログシステム: ELK デプロイと使用方法を学習し、開発者向けのログ表示要件を提供します。 7. パフォーマンスの最適化 デプロイするだけでは不十分です。パフォーマンスの最適化により、サービス容量を最大化できます。 これもかなり難しいですが、高給を得るための重要なポイントの 1 つです。お金のためには、学ぶ努力をしなければなりません。 ハードウェア層、オペレーティングシステム層、ソフトウェア層、アーキテクチャ層という次元から考えることができます。 意識 1. 粘り強さ 学習は非常に長いプロセスであり、私たち一人ひとりが生涯を通じて継続する必要があるキャリアです。 粘り強さは貴重であり、粘り強さは困難であり、成功は粘り強さの中にあります。 2. 目標 目標のないものは仕事とは呼ばれず、定量化されていないものは目標とは呼ばれません。 各ステージごとに目標を設定します。 例えば、まずは達成可能な小さな目標を設定して、1億円を稼ぐ! 3. シェアする 共有することを学びましょう。テクノロジーの価値は、知識を効果的に外の世界に伝え、より多くの人々に知ってもらう能力にあります。 みんなが少しずつ貢献したら、何が起こるでしょうか? 正しい方向に向かっているなら、距離を心配する必要はありません! Linuxの常識10選 1. GNUとGPL GNU プロジェクト (GNU プロジェクトとも呼ばれる) は、1983 年 9 月 27 日にリチャード・ストールマンによって公に開始されたフリー ソフトウェアの共同コラボレーション プロジェクトです。その目標は完全に無料のオペレーティング システムを作成することです。 GNU はフリーソフトウェアエンジニアリングプロジェクトとしても知られています。 GPL は GNU 一般公衆利用許諾書 (GPL) であり、「反著作権」の概念であり、GNU プロトコルの 1 つです。その目的は、GNU ソフトウェアの自由な使用、コピー、研究、変更、リリースを保護することです。同時に、ソフトウェアはソースコードの形式でリリースされる必要があります。 GNU システムと Linux カーネルを組み合わせると、完全なオペレーティング システム、つまり Linux ベースの GNU システムが形成されます。これは通常、「GNU/Linux」または単に Linux と呼ばれます。 2. Linuxディストリビューション 一般的な Linux ディストリビューションには、Linux カーネル、いくつかの GNU プログラム ライブラリとツール、コマンド ライン シェル、グラフィカル インターフェイス X ウィンドウ システム、KDE や GNOME などの対応するデスクトップ環境、オフィス スイート、コンパイラ、テキスト エディターから科学ツールに至るまでの数千のアプリケーション ソフトウェアが含まれています。 主流のディストリビューション: Red Hat Enterprise Linux、CentOS、SUSE、Ubuntu、Debian、Fedora、Gentoo 3. UnixとLinux Linux は Unix をベースとしており、Unix クラスに属します。Unix オペレーティング システムは、マルチユーザー、マルチタスク、マルチスレッドをサポートし、複数の CPU アーキテクチャをサポートします。 Linux は Unix のネットワーク中心の設計コンセプトを継承し、安定したパフォーマンスを備えたマルチユーザー ネットワーク オペレーティング システムです。 4. スワップパーティション スワップ パーティション (スワップ領域とも呼ばれます) は、物理メモリが不足している場合にシステムによってスワップするために使用されます。つまり、システムの物理メモリが不足している場合、ハードディスク領域の一部が現在実行中のプログラムが使用できるように解放されます。これらのプログラムを実行すると、保存されたデータがスワップ パーティションからメモリに復元されます。メモリ領域が解放されるプログラムは、一般的には長期間動作していないプログラムです。 スワップ領域は、通常、物理メモリのサイズ以上である必要があります。最小サイズは 64 MB 以上、最大サイズは物理メモリの 2 倍である必要があります。 5. GRUBの概念 GNU GRUB (GRand Unified Bootloader、以下「GRUB」) は、GNU プロジェクトのマルチ オペレーティング システム ブート管理プログラムです。 GRUB は、複数のオペレーティング システムをサポートするブート マネージャーです。複数のオペレーティング システムを搭載したコンピューターでは、GRUB を使用して、コンピューターの起動時にユーザーが実行するオペレーティング システムを選択できます。同時に、GRUB は Linux システム パーティション上でさまざまなカーネルを起動することができ、シングル ユーザー モードに入るなどの起動パラメータをカーネルに渡すためにも使用できます。 6. バッファとキャッシュ キャッシュはCPUとメモリの間にある一時的なストレージです。キャッシュ容量はメモリよりもはるかに小さいですが、交換速度はメモリよりもはるかに高速です。キャッシュはファイル データ ブロックをキャッシュして、CPU の動作速度とメモリの読み取りおよび書き込み速度の不一致を解決し、CPU とメモリ間のデータ交換速度を向上させます。キャッシュが大きいほど、CPU の処理速度が速くなります。 バッファ: 高速キャッシュ メモリは、ディスク (I/O デバイス) のデータ ブロックをキャッシュすることでディスク上のデータへのアクセスを高速化し、I/O を削減し、メモリとハード ディスク (またはその他の I/O デバイス) 間のデータ交換速度を向上させます。バッファがディスクに書き込まれようとしており、キャッシュがディスクから読み取られています。 7. TCP 3ウェイハンドシェイク (1)要求側はSYN(SYN=A)パケットを送信し、応答側からの確認を待つ。 (2)応答側はSYNを受信し、SYN(A+1)と自身のACK(K)パケットを要求側に返します。 (3)リクエスタはレスポンダからSYN+ACKパケットを受信し、再度ACKパケット(K+1)をレスポンダに送信する。 要求側と応答側は TCP 接続を確立し、3 ウェイ ハンドシェイクを完了して、データ転送を開始します。 8. Linuxシステムのディレクトリ構造 Linux ファイル システムは、リンク付きのツリー状のディレクトリ構造を使用します。つまり、ルート ディレクトリ (通常は「/」で表されます) は 1 つだけであり、このルート ディレクトリには下位レベルのサブディレクトリまたはファイルに関する情報が含まれます。サブディレクトリには、さらに下位レベルのサブディレクトリまたはファイルに関する情報が含まれる場合があります。 /: 最初の階層のルート、ファイル システム階層全体のルート ディレクトリ。つまり、ファイル システムへのエントリ、つまり最上位のディレクトリです。 /boot: カーネル、initrd など、Linux カーネルとシステム ブート プログラムに必要なファイルが含まれています。grub システム ブート マネージャーもこのディレクトリにあります。 /bin: 基本システムに必要なコマンド。機能は「/usr/bin」と同様です。このディレクトリ内のすべてのファイルは実行可能です。一般ユーザーも実行できます。 /sbin: スーパーユーザーのみが使用できる基本的なシステムメンテナンス コマンド。 /etc: すべてのシステム構成ファイル。 /dev: 端末、ディスク、光学ドライブなどのデバイス ファイルの保存ディレクトリ。 /var: ログや電子メールなど、頻繁に変更されるデータを保存します。 /home: 通常のユーザーのディレクトリのデフォルトの保存ディレクトリ。 /opt: ユーザー定義のソフトウェア パッケージやコンパイルされたソフトウェア パッケージなどのサードパーティ ソフトウェアの保存ディレクトリがこのディレクトリにインストールされます。 /lib: ライブラリ ファイルとカーネル モジュールが保存されるディレクトリ。システム プログラムに必要なすべての共有ライブラリ ファイルが含まれます。 9. ハードリンクとソフトリンク ハード リンク: ハード リンクは同じインデックス ノード (inode 番号) を使用するリンクです。つまり、複数のファイル名が同じファイル インデックス ノードを指すことができます (ハード リンクはディレクトリ リンクをサポートしておらず、パーティション間でリンクすることはできません)。ハード リンクを削除しても、インデックス ノードのソース ファイルとその下の複数のハード リンクには影響しません。 ln ソース 新しいリンク ln -s ソース 新しいリンク 10. RAIDテクノロジー 独立したディスクの冗長アレイ (RAID)、安価な冗長 (独立) ディスク アレイ。 RAID は、複数の独立した物理ハードディスクをさまざまな方法で組み合わせてハードディスクグループ (論理ハードディスク) を形成し、単一のハードディスクよりも高いストレージパフォーマンスとデータバックアップテクノロジを提供するテクノロジです。 RAID テクノロジーは、複数のディスクを論理ボリュームとして結合してディスク スパニング機能を提供します。また、データを複数のデータ ブロック (ブロック) に分割し、複数のディスクを並行して書き込み/読み取りすることでディスク アクセスの速度を向上させます。さらに、ミラーリングや検証操作を通じてフォールト トレランスも提供します。特定の機能は、さまざまな RAID の組み合わせで実装されます。 ユーザーの観点から見ると、RAID で構成されたディスク グループは、パーティション分割、フォーマットなどの操作が可能なハード ディスクのようなものです。 RAID のストレージ速度は単一のハードディスクよりもはるかに高速で、自動データバックアップと優れたフォールトトレランスを提供できます。 RAID レベル。さまざまな RAID の組み合わせは、さまざまな RAID レベルに分類されます。 RAID 0: ストライピング ストレージ テクノロジと呼ばれます。すべてのディスクは並列に読み書きされます。これはディスク アレイの最も単純な形式です。必要なのは 2 台以上のハード ディスクだけです。低コストで、ディスク全体のパフォーマンスとスループットを提供できます。ただし、RAID 0 ではデータの冗長性とエラー修復機能は提供されません。そのため、1 台のハード ディスクが損傷すると、すべてのデータが失われます。 (RAID 0 はディスク容量とパフォーマンスを向上させるだけで、データの信頼性を保証するものではありません。高いデータ セキュリティを必要としない環境に適しています。) RAID 1: ミラーリングされたストレージ。2 つのディスクのうちの 1 つのデータを他のディスクにミラーリングすることでデータの冗長性を実現し、2 つのディスク上に相互にバックアップするデータを生成します。その容量は 1 つのディスクの容量と同等です。データが 1 つのディスクに書き込まれると、別のアイドル ディスクにミラー イメージが作成され、パフォーマンスに影響を与えることなくシステムの信頼性と修復可能性が最大限に高まります。元のデータがビジー状態の場合、データはミラー コピー (2 つのハード ディスクのうち高速な方) から直接読み取られ、読み取りパフォーマンスが向上します。逆に、RAID 1 は書き込み速度が遅くなります。 RAID 1 は一般に「ホットスワップ」をサポートします。つまり、システムの実行中にシステムを中断することなく、アレイ内のハードディスクを取り外したり交換したりできます。 RAID 1 は、ディスク アレイ内のハード ディスクの単価が最も高くなりますが、データのセキュリティ、信頼性、可用性が高くなります。ハード ディスクに障害が発生すると、システムは自動的にミラー ディスクの読み取りと書き込みに切り替えることができ、障害が発生したデータを再編成する必要がありません。 RAID 0+1: RAID 10 とも呼ばれ、実際には RAID 0 と RAID 1 の組み合わせです。データをビットまたはバイト単位で継続的に分割し、冗長性のために各ディスクをミラーリングしながら、複数のディスクを並行して読み取り/書き込みます。 RAID 0+1 の組み合わせにより、データが複数のディスクに分散されるだけでなく、各ディスクに独自の物理ミラー ディスクが存在するため、冗長性が提供され、データの可用性に影響を与えることなく 1 つ以下のディスク障害を許容し、高速な読み取り/書き込み機能を提供します。 RAID 0+1 では、ディスクミラーリングでストライプ セットを作成するために少なくとも 4 台のハード ディスクが必要です。 RAID 0+1 テクノロジーは、高いデータ信頼性を保証すると同時に、データの読み取り/書き込みの効率も高めます。 RAID 5: ストレージ パフォーマンス、データ セキュリティ、ストレージ コストを考慮したストレージ ソリューションです。 RAID 5 は、RAID 0 と RAID 1 の妥協案として理解できます。RAID 5 には少なくとも 3 台のハード ドライブが必要です。 RAID 5 はシステムのデータ セキュリティを提供できますが、セキュリティの度合いはミラーリングよりも低く、ディスク領域の使用率はミラーリングよりも高くなります。 RAID 5 は、追加のパリティ情報があることを除いて、RAID 0 と同等のデータ読み取り速度を持ち、データ書き込み速度は単一のディスクへの書き込みよりもわずかに遅くなります。同時に、複数のデータが 1 つのパリティ情報に対応するため、RAID 5 のディスク領域利用率は RAID 1 よりも高く、ストレージ コストは比較的低く、現在広く使用されているソリューションです。 以下もご興味があるかもしれません:
|
<<: MAC で MySQL のデフォルトの文字セットを utf8 に変更する方法
>>: JavaScript 定期検証パスワード強度実装方法
この記事の例では、カスタムスクロールバーコンポーネントを実装するためのjsの具体的なコードを参考まで...
CentOS6.7にmysql5.7.18をインストールする 1. /usr/localディレクトリ...
概要: 多くの企業、特にインターネット Web サイトを主な事業とする企業のほとんどが、「アーティス...
最近、何人かの友人から、仮想マシンに CentOS をインストールした後、ifconfig コマンド...
弊社のプロジェクトは Java で開発され、ミドルウェアは Tomcat でした。運用中に、Tomc...
Nginx におけるいわゆる接続制限は、実際には TCP 接続、つまり 3 ウェイ ハンドシェイク後...
JavaScript では、要素の removeAttribute() メソッドを使用して、指定され...
1.マスクレイヤーのHTMLコードと画像をdivに配置する.img_div に入れました。 <...
冒頭に書いた以前、Renren で JS ベースのスクリーンショット ソリューションについて説明した...
MySQLのパーティショニングは、非常に大きなテーブルを管理するのに役立ちます。MySQLのパーティ...
目次1. バックグラウンドで実行されるジョブ2. 信号を使用してプロセスを制御する基本的なプロセス管...
今日は、Linux ホスト上で 4 つの MySQL データベースを起動する方法について説明します。...
序文これまで遭遇したデータベースのデッドロックはすべて、バッチ更新中のロック順序の不一致が原因でした...
Redis は分散キャッシュ サービスです。キャッシュは、大規模システムの開発やパフォーマンスの最適...