운영 및 유지 관리 엔지니어는 초기 단계에서 컴퓨터를 수리하고 네트워크를 끊는 작업을 수행할 수 있습니다. 당신은 지위가 없는 것 같아요! 시간도 매우 파편화되어 있고, 온갖 사소한 일들이 당신을 둘러싸고 있습니다. 점차적으로 당신은 업계에 대해 혼란스러워지고 있습니다. 발전 전망 없음.
이러한 지루하고 지루한 작업은 실제로 기술적인 관점에서 사람들을 배고프게 만들 것입니다. 이것은 실제로 나중에 운영 및 유지 관리 작업에 눈에 띄지 않게 도움이 되는 기본 기술입니다. 깊이 깨달았습니다. 그러므로 이 기간 동안 긍정적인 태도를 유지하고 계속해서 학습해야 합니다. 언젠가는 꼭 보상을 받을 것이라 믿습니다!
자, 본론으로 들어가겠습니다. 다년간의 운영 및 유지보수 업무 경험을 바탕으로 배운 내용을 여러분과 공유하겠습니다. 선임 운영 및 유지보수 엔지니어의 길.
그냥 처음에는 Linux/Windows 운영체제 설치, 디렉터리 구조, 시작 프로세스 등에 대해 잘 알고 있어야 합니다.
주로 Linux 시스템을 배우며, 작업은 기본적으로 캐릭터 인터페이스에서 이루어집니다. 사용자 관리, 디스크 파티셔닝, 소프트웨어 패키지 관리, 파일 권한, 텍스트 처리, 프로세스 관리, 성능 분석 도구 등 일반적으로 사용되는 10가지 기본 관리 명령을 마스터해야 합니다.
OSI 및 TCP/IP 모델에 익숙해야 합니다. 스위치와 라우터의 기본 개념과 구현 원리를 알아야 합니다.
쉘의 기본 문법 구조를 익히고 간단한 스크립트를 작성할 수 있으면 충분합니다.
가장 일반적으로 사용되는 네트워크 서비스를 배포해야 합니다. , vsftp, nfs, 삼바, 바인드, dhcp 등과 같은
코드 버전 관리 시스템은 필수입니다. 주류 SVN과 GIT를 배워서 간단하게 배포하고 사용할 수 있습니다.
서버 간에 데이터를 자주 전송하므로 rsync 및 scp를 사용할 수 있어야 합니다.
데이터 동기화: inotify/sersync.
일부 작업을 반복적으로 완료하려면 정기적으로 실행되도록 스크립트를 작성해야 하므로 Linux에서 예약된 작업 서비스 crond를 구성할 수 있어야 합니다.
웹사이트를 운영하려면 기본적으로 웹 서비스 플랫폼을 구축해야 합니다. .
PHP 언어로 개발을 하면 주로 LAMP와 LNMP 웹사이트 플랫폼을 구축하게 됩니다. 따로 말하면 Apache, Nginx, MySQL 등을 배포할 수 있어야 합니다. PHP.
JAVA 언어로 개발된 경우에는 일반적으로 Tomcat을 사용하여 프로젝트를 실행하며, 액세스 속도를 높이기 위해 Nginx 역방향 프록시 Tomcat을 사용하여 정적 페이지를 처리하고 Tomcat은 동적 페이지를 처리합니다. 동적 및 정적 분리를 달성합니다.
배포만큼 간단하지는 않습니다. 또한 HTTP 프로토콜의 작동 방식과 간단한 성능 조정도 알아야 합니다.
데이터베이스는 전 세계에서 가장 널리 사용되는 오픈소스 데이터베이스인 MySQL입니다. 당신이 배우는 것이 맞습니다! 또한 몇 가지 간단한 SQL 문, 사용자 관리, 공통 스토리지 엔진, 데이터베이스 백업 및 복구도 알아야 합니다.
더 깊이 들어가려면 마스터-슬레이브 복제, 성능 최적화, 주류 클러스터 솔루션(MHA, MGR 등)을 알아야 합니다. 물론 NoSQL이 인기가 많습니다. Redis와 MongoDB만 배우세요.
보안은 매우 중요합니다. 보안 정책을 수립하기 전에는 이미 너무 늦었습니다. 따라서 보안 접근 통제 정책을 즉시 수립해야 합니다. iptables 제한 사용과 같은 신뢰할 수 있는 소스 IP에서만 액세스를 허용하고 일부 쓸모 없는 서비스 및 포트를 닫습니다.
몇 가지 일반적인 공격 유형을 알아야 합니다. 그렇지 않으면 어떻게 올바른 약을 처방할 수 있습니까? 예: CC, DDOS, ARP 등.
모니터링은 필수적이며 적시에 문제를 감지하고 추적하기 위한 생명을 구하는 수단입니다. 기능이 풍부하고 기본 모니터링 요구 사항을 충족할 수 있는 주류 Zabbix 오픈 소스 모니터링 시스템을 학습하도록 선택할 수 있습니다. 모니터링 포인트에는 기본 서버 자원, 인터페이스 상태, 서비스 성능, PV/UV, 로그 등이 포함됩니다.
대시보드를 만들어 Grafana와 같은 여러 실시간 주요 데이터를 표시할 수도 있는데 이는 매우 멋질 것입니다.
쉘 스크립트는 Linux에서 작업을 자동으로 완료하는 강력한 도구이므로 능숙하게 작성해야 하므로 함수, 배열, 신호, 이메일 보내기 등을 더 자세히 배워야 합니다.
텍스트 처리의 삼총사(grep, sed, awk)는 6을 플레이해야 합니다. Linux에서의 텍스트 처리는 이들에 달려 있습니다.
Shell 스크립트는 호출과 같은 좀 더 복잡한 작업만 완료할 수 있습니다. API, 멀티프로세스 등 고급 언어를 배워야 합니다.
Python은 운영 및 유지 관리 분야에서 가장 많이 사용되는 언어입니다. 간단하고 사용하기 쉬우므로 이 단계에서는 기본만 마스터하면 됩니다. 기본 구문 구조, 파일 객체 작업, 함수, 반복 객체, 예외 처리, 이메일 보내기, 데이터베이스 프로그래밍 등과 같은
사용자는 항상 다음과 같이 외칩니다. 웹 사이트에 대한 액세스 속도가 느리고 서버 리소스가 여전히 매우 풍부합니다. 웹 사이트에 대한 액세스 속도가 느린 것은 네트워크, 전달 레이어 수 등과 같은 많은 영향 요인이 원인이 아닐 수 있습니다.
네트워크와 관련하여 남북 통신 문제가 있으며 둘 사이의 액세스가 느려집니다. 이는 CDN을 사용하여 정적 페이지를 캐싱하면서 최상위 계층에서 요청을 가로채는 방법으로 해결할 수 있습니다. 가능한 한 많이, 백엔드 요청 및 응답 시간을 줄입니다.
CDN을 사용하지 않는 경우 Squid, Varnish, Nginx와 같은 캐싱 서비스를 사용하여 정적 페이지를 캐시하여 교통 입구에 배치할 수도 있습니다.
단일 서버에는 결국 리소스가 제한되어 있으며 높은 트래픽을 견딜 수 없다는 것이 가장 중요합니다. 이를 해결하기 위한 기술은 로드밸런서를 이용해 다수의 웹서버를 수평으로 확장하는 동시에 외부에 서비스를 제공함으로써 성능을 2배로 높이는 기술이다. 로드 밸런서의 주류 오픈 소스 기술에는 LVS, HAProxy 및 Nginx가 포함됩니다. 한두개 정도는 꼭 숙지해주세요!
웹 서버의 성능 병목 현상이 해결되었습니다. 클러스터를 사용하는 것이 더 좋습니다. 이를 바탕으로 제가 배운 MySQL을 들 수 있습니다. 읽기와 쓰기가 분리되어 있으며, 읽기는 여러 슬레이브가 담당하며, 전면에 4계층의 로드밸런서가 있어 수천만 개의 PV를 운반할 수 있습니다. 완벽합니다!
Keealived, Heartbeat 등이 주류인 단일 지점 도구를 피하려면 고가용성 소프트웨어도 사용해야 합니다.
웹사이트에 사진이 너무 많아서 NFS 공유 저장소는 지원할 수 없으며 처리 속도도 매우 느립니다. 성능 및 기타 기능에는 FastDFS, MFS, HDFS, Ceph, GFS 등이 포함됩니다. 초기 단계에서는 중소 규모 프로젝트의 요구 사항을 충족할 수 있는 FastDFS를 학습하는 것이 좋습니다.
하드웨어 서버 리소스 활용도가 매우 낮아 낭비입니다! 유휴 서버를 여러 가상 머신으로 가상화할 수 있으며 각 가상 머신은 완전한 운영 체제입니다. 자원 활용도가 크게 향상될 수 있습니다. 오픈 소스 KVM+OpenStack 클라우드 플랫폼을 학습하는 것이 좋습니다.
가상 머신은 기본 플랫폼으로 괜찮지만, 애플리케이션 사업의 탄력적 확장이 너무 무겁습니다! 시작하는 데 몇 분이 걸리고, 파일이 너무 커서 빨리 확장하기에는 너무 힘듭니다.
말하자면, 컨테이너를 사용하세요. 컨테이너의 주요 특징은 빠른 배포와 환경 격리입니다. 서비스는 이미지로 캡슐화되며, 몇 분 안에 수백 개의 컨테이너를 생성할 수 있습니다.
주요 컨테이너 기술은 바로 Docker입니다.
물론 프로덕션 환경의 독립 실행형 Docker는 대부분의 경우 비즈니스 요구 사항을 충족할 수 없습니다. Kubernetes 및 Swarm 클러스터 관리 컨테이너를 배포하여 대규모 리소스 풀을 형성하고 중앙에서 관리하여 인프라에 대한 강력한 지원을 제공할 수 있습니다.
반복적인 작업은 효율성을 향상시킬 수 없을 뿐만 아니라 가치를 반영할 수도 없습니다.
환경 버전, 디렉토리 구조, 운영 체제 등의 통합 등 모든 운영 및 유지 관리 작업이 표준화됩니다. 표준화를 기반으로 마우스 클릭이나 몇 가지 명령만으로 복잡한 작업을 완료할 수 있습니다.
따라서 모든 작업이 완료되어야 합니다. 최대한 자동화하여 인적 오류를 제거하고 업무 효율성을 향상시킵니다.
메인스트림 서버 중앙 집중식 관리 도구: Ansible, Saltstack
둘 중 하나만 선택하세요.
지속적 통합 도구: Jenkins
5. 고급 Python 개발
Python 개발 및 객체 지향 프로그래밍 마스터에 대해 자세히 알아볼 수 있습니다.
주로 운영 및 유지 관리 관리 시스템을 개발하기 위해 Django 및 Flask와 같은 웹 프레임워크 개발 웹사이트를 배우는 것이 가장 좋습니다. 그런 다음 중앙 집중식 관리 도구를 플랫폼에 통합합니다. 운영 및 유지 관리 자체에 속하는 관리 플랫폼을 만듭니다.
로그도 매우 중요합니다.
오픈 소스 로그 시스템: ELK
배포 및 사용 방법을 배우고 개발을 위한 로그 보기 요구 사항을 제공합니다.
성능 최적화만으로는 서비스 수용 능력을 극대화할 수 없습니다.
이 분야도 상대적으로 어렵고, 연봉을 많이 받기 위한 핵심 포인트 중 하나이기도 합니다.
부터 시작하면 됩니다! 하드웨어 계층, 운영 체제 계층, 소프트웨어 계층 및 아키텍처 계층 차원을 생각해 보세요.
학습은 긴 과정입니다. 우리 각자가 평생 지속해야 하는 직업입니다.
가장 중요한 것은 끈기, 어려움은 끈기, 성공은 끈기에 있습니다
#🎜🎜 #
목표가 없으면 일이라고 하지 않고, 수량화가 없으면 일이라고 하지 않는다. 목표라고.각 단계마다 목표를 세워보세요.
예: 먼저 달성하고 1억을 벌 수 있는 작은 목표를 설정하세요.
방향이 바르면 오래도 두렵지 않을 거야 road!#🎜 🎜#
Ten Linux 상식GNU 시스템과 Linux 커널이 결합되어 완전한 운영 체제, 즉 Linux 기반 GNU 시스템을 형성합니다. 이 운영 체제는 일반적으로 "GNU/Linux" 또는 간단히 Linux라고 합니다.
일반적인 Linux 배포에는 Linux 커널, 일부 GNU 프로그램 라이브러리 및 도구, 명령줄 셸, 그래픽 인터페이스 X Window 시스템 및 해당 데스크탑 환경(예: KDE 또는 GNOME)이 포함되어 있습니다. 사무용 제품군, 컴파일러, 텍스트 편집기부터 과학 도구까지.
주요 배포판:
Red Hat Enterprise Linux, CentOS, SUSE, Ubuntu, Debian, Fedora, Gentoo
Linux는 Unix를 기반으로 하며 Unix 범주에 속합니다. Uinx 운영 체제는 다중 사용자, 멀티 태스킹, 멀티 스레딩 및 다중 CPU 아키텍처를 지원하는 운영 체제를 지원합니다. Linux는 Unix의 네트워크 중심 설계 철학을 계승하여 안정적인 성능을 갖춘 다중 사용자 네트워크 운영 체제입니다.
스왑 파티션, 즉 스왑 영역으로, 물리적인 메모리가 부족할 때 시스템이 스왑을 합니다. 즉, 시스템의 물리적 메모리가 충분하지 않은 경우 하드 디스크 공간의 일부를 현재 실행 중인 프로그램에서 사용할 수 있도록 해제합니다. 해당 프로그램을 실행하면 저장된 데이터가 Swap 파티션에서 메모리로 복원됩니다. 메모리 공간이 해제된 프로그램은 일반적으로 오랫동안 작동하지 않은 프로그램입니다.
스왑 공간은 일반적으로 물리적 메모리 크기보다 크거나 같아야 하며, 동시에 최소값은 64M보다 작아서는 안 되며, 최대값은 물리적 메모리의 두 배여야 합니다.
GNU GRUB("GRUB"로 지칭되는 GRand 통합 부트로더)는 GNU 프로젝트의 다중 운영 체제 시작 부팅 관리 프로그램입니다.
GRUB는 여러 운영 체제를 지원하는 부팅 관리자입니다. 여러 운영 체제가 있는 컴퓨터에서 GRUB를 사용하면 컴퓨터가 시작될 때 사용자가 실행하려는 운영 체제를 선택할 수 있습니다. 동시에 GRUB는 Linux 시스템 파티션에서 다른 커널을 부팅할 수 있으며 단일 사용자 모드로 전환하는 등 시작 매개변수를 커널에 전달하는 데에도 사용할 수 있습니다.
캐시(cache)는 CPU와 메모리 사이에 위치한 임시 메모리입니다. 캐시 용량은 메모리보다 훨씬 작지만 교환 속도는 훨씬 빠릅니다. 캐시는 파일 데이터 블록을 캐싱하여 CPU 작동 속도와 메모리 읽기 및 쓰기 속도 간의 충돌을 해결하고 CPU와 메모리 간의 데이터 교환 속도를 향상시킵니다. 캐시 캐시가 클수록 CPU 처리 속도가 빨라집니다.
버퍼(buffer) 캐시 메모리는 디스크(I/O 장치) 데이터 블록을 캐싱하여 디스크의 데이터에 대한 액세스 속도를 높이고, I/O를 줄이며, 메모리와 하드 디스크(또는 기타 I/O) 간의 연결을 향상시킵니다. 장치) 데이터 교환 속도. 버퍼가 디스크에 기록되려고 하고 디스크에서 캐시를 읽습니다.
(1) 요청 측에서 SYN(SYN=A) 패킷을 보내고 응답 측에서 확인을 기다립니다
(2) 응답 측에서 SYN을 수신합니다. 그리고 SYN(A+ 1)과 자신의 ACK(K) 패킷을 요청단에 반환합니다
(3) 요청단은 응답단으로부터 SYN+ACK 패킷을 수신하고 확인 패킷 ACK(K+1)를 보냅니다. ) 다시 응답 끝으로
끝 요청 응답자와 TCP 연결을 설정하고 3방향 핸드셰이크를 완료한 후 데이터 전송을 시작합니다.
Linux 파일 시스템은 링크가 있는 트리 디렉터리 구조를 채택합니다. 즉, 하위 수준 하위 디렉터리에 대한 정보가 포함된 루트 디렉터리(보통 "/"로 표시)가 하나만 있습니다. 또는 파일, 하위 디렉터리 하위 수준 하위 디렉터리나 파일에 대한 정보도 포함될 수 있습니다.
/: 첫 번째 계층 구조의 루트, 전체 파일 시스템 계층의 루트 디렉터리입니다. 즉, 파일 시스템의 최상위 디렉터리인 입구입니다.
/boot: 커널, initrd와 같은 Linux 커널 및 시스템 부팅 프로그램에 필요한 파일이 포함되어 있습니다.
/bin: 기본 시스템에 필요한 명령은 "/usr/bin"과 유사한 기능을 가지고 있습니다. 이 디렉터리에 있는 파일은 일반 사용자도 실행할 수 있습니다.
/sbin: 기본 시스템 유지 관리 명령으로, 슈퍼 유저만 사용합니다.
/etc: 모든 시스템 구성 파일.
/dev: 터미널, 디스크, 광학 드라이브 등 장치 파일 저장 디렉터리입니다.
/var: 로그, 이메일 등 자주 변경되는 데이터를 저장합니다.
/home: 일반 사용자를 위한 기본 저장 디렉터리입니다.
/opt: 타사 소프트웨어용 저장 디렉터리입니다. 예를 들어 사용자 정의 소프트웨어 패키지와 컴파일된 소프트웨어 패키지가 이 디렉터리에 설치됩니다.
/lib: 시스템 프로그램에 필요한 모든 공유 라이브러리 파일을 포함하여 라이브러리 파일과 커널 모듈이 저장되는 디렉터리입니다.
하드 링크: 하드 링크는 동일한 인덱스 노드(inode 번호)를 사용하는 링크로, 여러 파일 이름이 동일한 파일 인덱스 노드(하드)를 가리킬 수 있습니다. 링크는 디렉토리 링크를 지원하지 않으며 파티션 간에 링크할 수 없습니다. 하드 링크를 삭제해도 인덱스 노드의 소스 파일과 그 아래의 여러 하드 링크에는 영향을 미치지 않습니다.
소프트 링크(심볼릭 링크): 심볼릭 링크는 Windows의 바로가기 링크와 유사하게 경로 형태로 생성된 링크입니다. 심볼릭 링크를 사용하면 여러 파일 이름을 만들 수 있습니다. 동일한 소스 파일에 대해 해당 소스 파일이 삭제되면 그 아래의 모든 소프트링크를 사용할 수 없게 됩니다. (소프트 링크 지원 디렉터리, 교차 파티션 및 교차 파일 시스템)
디스크 어레이(독립 디스크의 중복 어레이, RAID), 저렴한 중복(독립) 디스크 어레이.
RAID는 여러 개의 독립적인 물리적 하드 디스크를 서로 다른 방식으로 결합하여 하드 디스크 그룹(논리 하드 디스크)을 형성하는 기술로, 단일 하드 디스크보다 더 높은 저장 성능과 데이터 백업을 제공합니다. RAID 기술은 여러 디스크를 하나의 논리 볼륨으로 결합하여 디스크 확장 기능을 제공할 수 있습니다. 데이터를 여러 데이터 블록(블록)으로 나누고 여러 디스크를 병렬로 쓰기/읽기하여 디스크 액세스 속도를 높일 수 있습니다. 내결함성을 제공합니다. 특정 기능은 다양한 RAID 조합으로 구현됩니다.
사용자 입장에서 보면 RAID로 구성된 디스크 그룹은 하드디스크와 같아서 파티션 분할, 포맷 등의 작업이 가능합니다. RAID의 저장 속도는 단일 하드 디스크보다 훨씬 빠르며 자동 데이터 백업과 우수한 내결함성을 제공할 수 있습니다.
RAID 0: 스트리핑 스트라이프 스토리지 기술이라고 하며, 모든 디스크는 완전히 병렬로 읽고 쓰여집니다. 이는 디스크 어레이 RAID 0만을 구축하는 가장 간단한 방법입니다. 2개 이상의 하드 드라이브가 필요하고 저렴하며 전체 디스크의 성능과 처리량을 제공할 수 있습니다. 그러나 RAID 0은 데이터 중복성 및 오류 복구 기능을 제공하지 않으므로 단일 하드 드라이브가 손상되면 모든 데이터가 손실됩니다. 길을 잃다. (RAID 0은 데이터에 대한 신뢰성 보장 없이 디스크 용량과 성능만 향상시킵니다. 데이터 보안 요구 사항이 낮은 환경에 적합합니다.)
RAID 1: 미러 스토리지, 두 디스크 중 하나를 결합하여 데이터를 다른 디스크에 미러링 데이터 중복성을 달성하기 위해 두 개의 디스크에 상호 백업 데이터가 생성되며 용량은 디스크 하나의 용량과 동일합니다. 데이터가 하나의 디스크에 기록되면 다른 유휴 디스크에 미러가 생성되어 성능에 영향을 주지 않고 시스템의 신뢰성과 복구 가능성을 최대화합니다. 두 개의 하드 드라이브 중 더 빠른 것) 읽기 성능을 향상시킵니다. 반대로 RAID 1은 쓰기 속도가 느립니다. RAID 1은 일반적으로 "핫 스왑"을 지원합니다. 즉, 시스템을 중단하지 않고 시스템이 실행되는 동안 어레이에 있는 하드 디스크의 제거 또는 교체를 수행할 수 있습니다. RAID 1은 디스크 어레이 중 하드 디스크의 단위 비용이 가장 높지만 높은 데이터 보안, 신뢰성 및 가용성을 제공합니다. 하드 디스크에 장애가 발생하면 시스템은 재구성할 필요 없이 읽기 및 쓰기를 위해 자동으로 미러 디스크로 전환할 수 있습니다. 데이터.
RAID 0+1: RAID 10이라고도 하며 실제로는 RAID 0과 RAID 1의 조합입니다. 데이터를 비트 또는 바이트 단위로 지속적으로 분할하고 여러 디스크를 병렬로 읽고 씁니다. 각 디스크는 중복성을 위해 미러링됩니다. . RAID 0+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과 비슷한 데이터 읽기 속도를 가지지만, 패리티 검사 정보가 추가되어 있고, 데이터 쓰기 속도가 단일 디스크에 쓰는 것보다 약간 느립니다. 동시에 여러 데이터가 하나의 패리티 정보에 해당하기 때문에 RAID 5는 RAID 1보다 디스크 공간 활용도가 높고 저장 비용이 상대적으로 저렴하여 현재 널리 사용되는 솔루션입니다.
더 많은 Linux 관련 기술 기사를 보려면 Linux 튜토리얼 열을 방문하세요. 배우다!
위 내용은 Linux 운영 및 유지 관리를 초보자에서 고급으로 발전시키는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!