S0C : Survivor 0 영역의 현재 크기 (바이트)

S1C : Survivor 1 영역의 현재 크기 (바이트)

S0U : Survivor 0 영역의 사용 중인 크기 (바이트)

S1U : Survivor 1 영역의 사용 중인 크기 (바이트)

EC : Eden 영역의 현재 크기 (바이트)

EU : Eden 영역의 사용 중인 크기 (바이트)

OC : Old (Tenured) 영역의 현재 크기 (바이트)

OU : Old (Tenured) 영역의 사용 중인 크기 (바이트)

MC : Metaspace 영역의 현재 크기 (바이트)

MU : Metaspace 영역의 사용 중인 크기 (바이트)

CCSC : Compressed Class Space의 현재 크기 (바이트)

CCSU : Compressed Class Space의 사용 중인 크기 (바이트)

YGC : Young Generation에서의 총 가비지 컬렉션 횟수

YGCT : Young Generation 가비지 컬렉션에 소요된 시간 (초)

FGC : Full 가비지 컬렉션 횟수

FGCT : Full 가비지 컬렉션에 소요된 시간 (초)

GCT : 총 가비지 컬렉션에 소요된 시간 (초)

'리눅스' 카테고리의 다른 글

nginx 업그레이드  (0) 2024.05.14
GC 로그 및 heap 덤프 설정  (0) 2024.05.13
Ansible  (0) 2022.11.04
Shell Script 실습  (0) 2022.11.03
Shell Script  (0) 2022.11.03

IAC (Infrastructure As Code)

- 수동으로 엔지니어가 하나하나 리소스 정리하고 용량 정리하고 그 속에 운영체제, 서비스 구성하는 환경에서 자동화할 수 있는 도구를 사용해서 코드로 정의해서 한 번에 해결할 수 있게 하는 게 최근 트렌드

- 최근 수동으로 하는 작업은 잘 없음 (그렇다고 아예 없는 건 아님)

- 인프라를 코드로 정의해서 관리하는 것

- 테라폼이라는 도구를 이용해서 클라우드 환경에 해당하는 리소스들을 정의

- 리소스(인프라 자체)를 구성하는 데 사용하지 않는다

- 이미 구성이 되어있고 이미 정의가 된 image들의 공통의 작업을 수행해야 할 때 한 번에 설정할 때 사용

 

EX) AWS를 테라폼으로 관리를 하겠다면 YAML이라는 파일을 정의한다.

- 인스턴스 용량이라던지 속해야 하는 파일을 정리하는 것

- 정의를 하게 되면 AWS상에서 가상 네트워크 등이 생성된다.

- OS를 설치하지 않고 image를 사용한다. 이미지에 OS가 다 설치되어있음.

- 그래서 가상 머신에 OS가 자동으로 설치가 되어있다.

- 이런 시스템을 코드의 형태로 만드는 게 IAC

- AWS Cloudformation

 

※ 병렬 처리 : 동시다발적으로 처리한다.

 

 

 

Ansible 특징

- Agent Less 방식을 사용하는 게 가장 큰 특징

- 플레이북 단위로 작업 수행

- yaml을 작성해서 실행

 

절차적 작업 : 패키지를 설치 및 실행

선언적 작업 : 패키지가 설치된 상태에서 실행 중인 상태를 확인 후 있으면 다음 작업을 실행

 

Ansible 구성요소

# Ansible Software

- 상주 프로세스가 없고, 명령줄에 의해 동작 -> 장점

- Software만 설치하면 동작한다.

 

# Inventory

- 조작할 관리 대상 서버의 목록을 정의

- 여러 대의 관리대상 서버를 그룹화(인벤터리에서 제일 중요한 작업)하여 정의 가능

- WEB서버 DB서버 그룹화해서 사용 가능

- 정적 구성과 동적 구성으로 구분 (동적 인벤터리는 잘 사용하지 않음)

 

# Module

- Ansible에서 실행되는 하나의 명령

- 변경사항이 있을 경우에만 작업 수행

- Ansible 내부에 기본 내장 모듈이 존재

 

# Playbook

- YAML(어떤 구조인지만 파악) = JSON 같이 사용함

- 실제 스크립트 작업 과정을 YAML 형식으로 정의

- YAML : 데이터 정의어, 하나의 문법이라고 생각

- 프로젝트 단위 (작업 단위보다는 좀 더 큰 범주의 단위)

Ansible ad-hoc

- 단일 태스크 실행하여 자동화 가능

- 1회성 실행

 

 

 

'리눅스' 카테고리의 다른 글

GC 로그 및 heap 덤프 설정  (0) 2024.05.13
jstat 항목별 의미  (0) 2024.05.08
Shell Script 실습  (0) 2022.11.03
Shell Script  (0) 2022.11.03
PAM 인증  (0) 2022.11.02

실습할 폴더를 만들어 준 후

 

vi 내부 명령어

// 없는 걸 만들어내는 프로그래밍을 하는 게 아니라 있는 걸 가져와서 사용한다.

// 자주 사용하는 명령들을 shellscript로 사용하는 것

// 작업의 편의성을 위해 사용해야 한다.

 

 

// 실행권한을 부여해준 후 스크립트를 실행하면 명령어가 실행되면서 파일이 생성된다.

 

// \u : 사용자, \h : 호스트, \W : 현재위치

// \T : 시간

 

vi 내부 명령어

// calc.sh 파일을 생성한 후 명령어를 작성한다.

// -n : 라인 변경 안 한다..

// read : 입력한 값을 선언한 변수에 넣는다.

// 숫자 값을 입력해서 int가 아닌 string으로 인식을 함.

// "Sum: `expr $num1 + $num2`" : expr 은 꼭``로 묶어줘야 함..

// expr : 안에 있는 숫자들을 계산한다.

expr``로 묶어주면 string으로 묶인 num1,2 변수가 int로 변환된다..

// *만 쓰면 모든 것으로 인식하기 때문에 \로 곱셈이라고 알려줘야 한다.

// *과 마찬가지로 ()도 다른 역할이 있기 때문에 \\로 묶어줘야 한다. 앞뒤로 띄어쓰기가 무조건 들어가야 한다.

 

실행 결과

 

// arg.sh파일을 생성

// readonly : 프로세스가 종료될 때까지 써놓은 문자열을 출력한다.

// [ $0 ] : 배열로 저장된다.

[ $1 ] [ $2 ] [ $3 ]로 저장된다.

 

실행 결과

 

// arr.sh 파일 생성

// 배열을 묶을 때 ()를 사용해야 한다..

// 구분자는 띄어쓰기로 한다. 다른 구분자는 사용하지 않는다.

// 데이터의 순서 번호(인덱스 번호)를 넣어줘야 한다.

// 배열을 지정할 때는${}를 사용

// [@] : arr group @는 배열 그룸을 의미, 전체 데이터를 선택하는 행위

// printf "%s\n" "${arr1[@]}" : arr1 전체 데이터를 출력

 

실행 결과
참고

 

'리눅스' 카테고리의 다른 글

jstat 항목별 의미  (0) 2024.05.08
Ansible  (0) 2022.11.04
Shell Script  (0) 2022.11.03
PAM 인증  (0) 2022.11.02
Log  (0) 2022.11.02

지역 변수

- 해당 지역(만든 곳)에서만 사용이 가능한 변수

 

환경 변수

- 부모 프로세스에서 환경 변수를 선언하면 자식 프로세스도 사용할 수 있는 변수

 

// 지역 변수는 표시되지 않는다.

// 새로운 putty 창에서 변수 검색을 하면 나오지 않는다.

// 종료 시 변수는 모두 날아간다.

 

export NAME="Park"

// 변수를 영구적으로 저장하는 파일

 

// 파일 변경 사항을 덮어 씌운다.

// itbank로 접속 후 echo명령어 입력 시 나오지 않는다.

// skel파일에 환경 변수를 넣어주면 계정 생성 시 상속받기 때문에 skel파일을 설정해줘야 한다.

'리눅스' 카테고리의 다른 글

Ansible  (0) 2022.11.04
Shell Script 실습  (0) 2022.11.03
PAM 인증  (0) 2022.11.02
Log  (0) 2022.11.02
NFS 실습  (0) 2022.11.01

PAM 인증

Linux Authentication Module

- 인증 모듈 : PAM ( Pluggable Authentication Modules )

- 모듈 사용 시 주의할 점 : 항상 Test환경에서 실행 후 실제 적용할 것( 다시 재설정하기 어려움 )

 

Linux PAM

- 사용자 인증의 핵심, 인증 형태, 자원 접근 등의 선택형 라이브러리

- 모듈의 종류가 다양하며 착탈식 인증 모듈

- Telent, SSH 등의 서비스 인증 부분에서 접근 통제 설정 가능

- PAM 활용한 su의 접근 통제 설정 가능

 

PAM 동작순서

1. 프로그램이 사용자 인증 필요시PAM 라이브러리 호출

2. 라이브러리가 호출되면 프로그램의 PAM 설정 파일을 참조

3. 참고한 파일에서 모듈을 수행

4. 결괏값은 프로그램으로 반환되어 인증 여부를

 

PAM 라이브러리 관련 경로

- /etc/pam.d

   > PAM 라이브러리를 이용하는 응용프로그램의 설정 파일 위치

   > 파일명은 서비스 이름으로 되어 있다.

 

- /usr/lib64/security

   > PAM 라이브러리가 제공하는 인증 모듈들

   > 다양한 인증 작업 모듈, 라이브러리(*.so)로 구현되어 있음.‘

 

- /etc/security

   > PAM 모듈 실행에 필요한 설정 파일

   > 파일명은 해당 서비스명.conf

 

PAM 구성 파일 작성 방법

[type]                    [control]               [module-path]     [module-argument]

Type : PAM에게 어떤 타입의 인증이 사용될 것인지 지정

   - auth : 사용자 인증에 사용, 올바른 패스워드인지 확인 절차를 가짐

   - account : 계정관리, 사용자의 위치, 시간, 권한 등의 확인 절차를 가짐

   - password : 사용자가 패스워드 변경할 수 있는 모듈 지정

   - session : 로그인 전 후 수행되는 일을 지정 ( EX: 로그 )

 

Control : PAM에서 사용되는 모듈의 결과에 따라 동작 지정

   - required

        : 성공 값 반환 시 성공 후 Pass, 실패 시 마지막까지 다 실행 후 ( 실패가 나더라도 뒤의 자료도 보겠다 )

        : 대부분의 실패 확인 작업은 required 설정을 한다.

        : 특정 인증절차 부분에서 어떠한 부분에서 인증을 실패했는지 찾기 위한 것

        : 예를 들어 IP 입력 후 ID 입력에서 실패인지 IP 입력부터가 실패인지 확인한다.

        : 최초 실패 시 이후 결과에서 성공이 발생하더라도 무조건 실패 처리된다.

   - requisite( 리큐지트 ): 성공 값 반환 시 성공 후 Pass, 실패 시 곧바로 실패 ( 계정이 없으면 바로 실패 )

   - sufficient( 서피젼드 ) : 성공 값 반환 시 곧바로 성공, , 위에서 required 실패 시 실패( 우선순위가 제일 낮다 )

 

Module-path : 사용할 모듈의 위치

- 기본 Default 경로는 /usr/lib64/security로 사용된다. (PAM 모듈의 이름만 넣어도 실행)

 

Module-arguments : 모듈에게 전달되는 인수

(옵션이므로 선택적 사용이 가능, if문과 비슷한 역할을 하는 옵션을 주로 사용)

   - no_warn : 경고 메시지 표시 안 함

   - use_first_pass : 패스워드를 요구하지 않음, 패스워드가 없다면 인증받지 못함 (패스워드 오류 시 종료)

   - try_first_pass : 입력받은 패스워드로 인증을 시도, 없다면 사용자에게 물어봄 (패스워드 오류 시 다시 입력)

'리눅스' 카테고리의 다른 글

Shell Script 실습  (0) 2022.11.03
Shell Script  (0) 2022.11.03
Log  (0) 2022.11.02
NFS 실습  (0) 2022.11.01
NFS (Network File System)  (0) 2022.11.01

LOG

ELK Stack을 이용해서 Log를 관리하는 방식을 많이 쓰려고 한다.

EX) Elasticsearch, Logstash, Kibana, Beats

 

[ Elasticsearch ]

- Java로 개발된 오픈 소스 검색 엔진 ( ElasticsearchELK Stack의 핵심 구성 요소 )

- HTTP 대시보드 웹 인터페이스( Kibana )와 함께 분산되어 있는 다중 테넌트(분산 저장)에 저장된 전체 텍스트 검색 엔진을 제공

- JSON 문서 체계를 사용하여 데이터 요청, 검색, 저장을 수행하고, 로그 파일뿐만 아니라 각종 다양한 형태의 텍스트를 검색하는 데 사용된다.

 

[ Logstash ]

- 이벤트 및 로그 관리를 위한 오픈 소스 도구

- 데이터 수집을 위한 실시간 감시기능을 제공

- Logstash는 로그 데이터를 수집하고 데이터를 JSON 문서로 변환 후 Elasticsearch에 저장하는 역할을 수행

 

[ Kibana ]

- Elasticsearch를 위한 오픈 소스 데이터 시각화 도구

- Kibana는 직관적이고, 깔끔한 형태의 대시 보드 웹 인터페이스를 제공

- Elasticsearch에서 데이터를 관리하고, Kibana에서 데이터를 시각화

 

[ Beats ]

- BeatsClient에 설치하여 Client에서 발생하는 대량의 데이터를 Logstash & Elasticsearch 서버로 보낼 수 있는 경량 에이전트 데이터 전송 서비스

- Log File 전송에 사용되는 "Filebeat"외의 다양한 Beat를 제공 ( "Metricbeat", "Packetbeat", "Winlogbeat" )

- Beats 목록 및 다운로드 링크 : https://www.elastic.co/kr/downloads/beats

'리눅스' 카테고리의 다른 글

Shell Script  (0) 2022.11.03
PAM 인증  (0) 2022.11.02
NFS 실습  (0) 2022.11.01
NFS (Network File System)  (0) 2022.11.01
FTP  (0) 2022.10.31

blog-01에 HDD 1GB 추가

250M으로 4개 primary로 생성

 

필요한 패키지들

 

설치한 패키지들의 방화벽을 열어주고 /etc/exports안에 squash 옵션을 부여

# [Share Dir] [Allow Host/Network][(Option)]

/nfs_server1 192.168.1.150(rw,no_root_squash,sync)

/nfs_server2 192.168.1.0/24(rw,async,no_wdelay)

/nfs_server3 *(rw,all_squash,anonuid=1005,anongid=1005,sync)

/nfs_server4 192.168.1.150(rw,no_root_squash,sync)

 

// squash 옵션을 잘 모르면 절대로 사용하면 안 된다.. 보안상의 문제 때문에

// no_root_squash : 절대로 사용하면 안 되는 옵션

// * : 어디에서든 접속할 수 있는 명령어 -> 사용 안 하는 게 좋음

 

// portmapper 가 올라와 있어야 활성화된 것

// nlockmgr : 파일 시스템을 공유한 상태로 내부에 들어있는 데이터를 동시다발적으로 사용하는 환경이 만들어졌을 때 동시에 쓰기 작업을 사용하지 못하게 한다.

// nlockmgr 이 올라와야 한다.. 올라오지 않으면 안 된다.

// 동시다발적으로 쓰기 작업이 절대로 허용하면 안 된다. (무결성이 깨져버리기 때문)

EX) 데이터베이스

 

// /etc/exports를 편집할 상황이 생겼을 때 적용하려면 restart 해야 하지만 누군가가 데이터를 전송, 사용 중일 때 데이터 손실을 막기 위해 사용

// ra 서비스를 재시작하지 않아도 적용할 수 있는 명령어

 

// 공유 정보

// nfs_server1~4까지 모두 공유가 잘 된 상태

// (~~~~) 적용된 옵션 -> 기본값에 맞춰서 자동으로 세팅

// sync : 동기식 작업, 실시간 스트리밍 형식으로 데이터가 저장

// 동기식 작업 : 실시간 데이터 작업

// async : 비동기식 작업, 하나의 블록단위가 만들어지고 한 덩어리씩 데이터가 저장되는 형식

// 비동기식 작업 : 캐시 메모리에 버퍼 공간을 만들고 버퍼에 저장된 데이터가 단위 형태로 실제 nfs서버에 저장되는 작업

// 다중 쓰기 작업이 많이 발생한다 -> 비동기식 작업

// 다중 사용자가 동시다발적으로 쓰기 작업을 사용하지 않는다 -> 동기식 작업

// wdelay(write delay 쓰기 지연) : sync와 세트 (async no_wdelay)

// hide : 다중 클라이언트 일 때 사용(단일 호스트 일 때는no host를 사용한다고 명시)

   - 보통 hide사용

// no_subtree : 하위 트리를 보여주지 않는다.

// rw : 읽기 쓰기

// secure : port번호의 범위를 명시 102보다 낮은 녀석 OK (default)

// insecure : 1024보다 크거나 같은 port 범위를 명시

// client에서 NFS를 사용하려면 root_squash, no_root_squash가 있어야 한다.

// root_squash, no_root_squash : 두 개씩 들어가야 함

   - 일반 사용자를 위한 매핑

   - root계정으로 로그인하면 root가 되는 게 아니라 nfs_nobody계정으로 접근된다.

   - nfs_nobody : 어떠한 권한도 없는 일반 사용자

// no_root_squash

   - client root, server root를 매핑하겠다.

   - 허가되지 않은 사용자(해커)가 내 root를 만들어서 serverroot에 접근하면 안 되기 때문에 사용하면 안 되는 옵션

 

 

// rpcbind를 켜준 후 portmapper 켜져 있는 것 확인

 

// blog-01에 있는 디렉터리 똑같이 생성

 

blog-01에서 mount 걸어준 후

 

blog-02에서 blog-01로 mount

 

blog-02에서 생성한 파일이 blog-01에서도 생성되는 것 확인

 

 

'리눅스' 카테고리의 다른 글

PAM 인증  (0) 2022.11.02
Log  (0) 2022.11.02
NFS (Network File System)  (0) 2022.11.01
FTP  (0) 2022.10.31
scp  (0) 2022.10.31

NFS (Network File System)

- 가장 대표적인 NAS(Network Area Storage) 환경을 구축 가능한 서비스

- 일반적인 네트워크 환경을 이용하여 자신의 File System을 공유하는 서비스

- 역할 : NFS Server(File System 공유) / NFS Client (공유된 File System을 사용)

- 공유된 File System에 접근하기 위해서는 반드시 Portmapper의 도움을 받아야 한다. (rpc-bind 패키지)

 

NFS 계정 Mapping Option : 실질적인 권한 부여 옵션

- 모든 공유 디렉터리에는 root Mapping 옵션과 그 외 사용자를 위한 Mapping 옵션 2가지가 반드시 설정

- 옵션을 지정하지 않을 경우 기본값(*)으로 자동 설정

- root_squash(*) : Client에서 root로 접근 시 Servernfsnobody 계정으로 Mapping

- no_root_squash : Client에서 root로 접근 시 Serverroot계정으로 Mapping

- all_squash : Client의 모든 계정 접근 시 Servernfsnobody 계정으로 Mapping

- no_all_squash(*) : Client의 모든 계정 접근 시 Server의 동일 계정으로 Mapping (동일 계정 X : nfsnobody)

 

 

'리눅스' 카테고리의 다른 글

Log  (0) 2022.11.02
NFS 실습  (0) 2022.11.01
FTP  (0) 2022.10.31
scp  (0) 2022.10.31
SSH 설정  (0) 2022.10.28

+ Recent posts