100%[==================================================================================================================================>] 14,946,146 54.5MB/s in 0.3s
부팅시 Failed to load SELinux policy, freezing. 에러 발생
/etc/selinux/config 파일을 수정이후 부팅이 실패 할 경우
[root@centos7:/root]$ cat /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - SELinux is fully disabled.
SELINUX=enforcing
# SELINUXTYPE= type of policy in use. Possible values are:
# targeted - Only targeted network daemons are protected.
# strict - Full SELinux protection.
SELINUXTYPE=targeted
[root@centos7:/root]$
부팅 화면에서 키보드 e 를 누르고
selinux=0 추가 후 재부팅
Ctrl + x 를 누르면 다시 부팅이 된다.
SELinux 란?
SELinux(보안 강화 리눅스)는 리눅스 운영 체제의 보안 기능 중 하나로, 프로세스, 파일 및 네트워크에 대한 접근을 제어하는 매커니즘입니다. SELinux는 NSA(미국 국가 안보국)와 레드햇이 공동으로 개발한 프로젝트로, 리눅스 커널에 포함되어 있습니다.
/etc/selinux/config 파라미터 설명
enforcing 모드: 모든 SELinux 정책이 적용되고 보안 위반이 감지되면 해당 작업이 차단됩니다.
setsebool -P httpd_can_connect_zabbix on
setsebool -P httpd_can_network_connect_db on
setsebool -P zabbix_can_network on
service httpd restart
zabbix 로그 확인
tail -f /var/log/zabbix/zabbix_server.log
Zabbix Web 연결 설정
정상적으로 설치가 완료 되면 zabbix 웹 에 접속 하여 추가 환경 설정을 셋팅 한다.
접속 Url 은 http://[서버ip]/zabbix/ 이다
Zabbix 접속 화면
zabbix install 정보 확인
PostgreSQL 접속 정보 셋팅
Zabbix 서버 접속 정보 설정
Zabbix 셋팅 정보 요약
Zabbix 설치 완료
/etc/zabbix/web/zabbix.conf.php
설치가 완료되면 Zabbix 웹 페이지에 접속 해서 모니터링 셋팅을 진행 한다.
최초 접속 비밀 번호는 Admin/zabbix 이다 .
로그인 후 DashBord 화면
Zabbix 5.0 모니터링 설정
정상적으로 설치 및 셋팅이 완료 되었다면 Zabbix 가 설치된 리눅스 서버의 리소스를 모니터링 할수 있다
Monitoring -> Hosts -> Zabbix server -> Graphs
조회기간 변경 검색 조회
Zabbix 5.0 Agent 설치
원격 서버의 시스템 자원을 모니터링하기 위해 agent 를 설치하는 방법에 대한 설명한다.
Zabbix repository 및 Agent 설치
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
yum clean all
yum install zabbix-agent
Zabbix Agent Config 수정
vi /etc/zabbix/zabbix_agentd.conf
Zabbix Server IP 수정
Zabbix Agent Port 설정
### Option: Server # List of comma delimited IP addresses, optionally in CIDR notation, or DNS names of Zabbix servers and Zabbix proxies. # Incoming connections will be accepted only from the hosts listed here. # If IPv6 support is enabled then '127.0.0.1', '::127.0.0.1', '::ffff:127.0.0.1' are treated equally # and '::/0' will allow any IPv4 or IPv6 address. # '0.0.0.0/0' can be used to allow any IPv4 address. # Example: Server=127.0.0.1,192.168.1.0/24,::1,2001:db8::/32,zabbix.example.com # # Mandatory: yes, if StartAgents is not explicitly set to 0 # Default: # Server=
Server=192.168.116.200
### Option: ListenPort # Agent will listen on this port for connections from the server. # # Mandatory: no # Range: 1024-32767 # Default: ListenPort=10050
ZabbixAgent 재시작
systemctl restart zabbix-agent
systemctl enable zabbix-agent
systemctl status zabbix-agent
Zabbix Web Host 추가
모니터링할 서버에 Zabbix Agent 를 성공적으로 설치 완료 하였다면 Zabbix Webpage 에 접속하여
호스트를 작성하여 설치한 리모트 서버의 Zabbix Agent 를 등록해 줍니다.
Host name : 모티너링 대상 서버 별칭
Agent : Zabbix Agent 를 설치한 서버 IP
Port : Zabbix Agent Port (default : 10050)
템플릿-> Template OS Linux by Zabbix agent 선택
정상적으로 호스트 등록이 완료 되면 ZBX 박스가 녹색으로 표시된다.
Zabbix Web DashBord 설정
Zabbix 기능중에는 Dash Bord 작성기능이 있습니다.
원하는 지표를 사용자 정의에 따라 구성하여 모니터링을 할수 있습니다.
신규로 DashBoard 를 생성 하고 원하는 위젯을 추가 하여 원하는 지표를 생성 합니다.
매뉴-> 대시보드 ->대시보드 작성 클릭
DashBoard 구성이 완료 되면 변경사항 저장합니다.
Zabbix Agent Disk 사용량 항목 추가
Zabbix Agent를 설치시 Disk 모니터링 지표는 기본적으로 설치 되지 않습니다.
Template Import 기능을 사용해서 Disk 부가 정보를 모니터링 하기위한 지표를 추가 합니다.
NFS(Network File System)는 여러 컴퓨터 간에 파일을 공유하기 위한 분산 파일 시스템 프로토콜입니다. NFS는 클라이언트-서버 모델을 기반으로 하며, 클라이언트는 네트워크를 통해 NFS 서버의 파일 시스템에 액세스할 수 있습니다. 이를 통해 여러 사용자가 동일한 파일이나 디렉터리를 공유하고, 파일 시스템 자원을 효율적으로 활용할 수 있습니다.
NFS 동작 원리
서버 설정: 먼저 파일을 공유할 서버에서 NFS를 설정해야 합니다. 서버의 파일 시스템 중 NFS로 공유하고자 하는 디렉터리를 선택하고, 이 디렉터리를 /etc/exports와 같은 설정 파일에 등록합니다. 이 설정 파일은 클라이언트에게 공유 디렉터리의 경로와 액세스 권한을 제공합니다.
클라이언트 마운트: NFS 클라이언트에서는 NFS 서버의 공유 디렉터리를 마운트하여 사용할 수 있습니다. 클라이언트에서는 NFS 마운트 포인트를 생성하고, 이를 통해 서버의 공유된 디렉터리에 액세스할 수 있습니다.
NFS 동작 원리
파일 공유: NFS는 여러 사용자가 동일한 파일이나 디렉터리를 공유할 수 있도록 합니다. 이를 통해 여러 사용자가 동일한 파일에 접근하여 작업할 수 있습니다.
중앙 관리: NFS를 사용하면 파일이 중앙 서버에 저장되므로 관리 및 유지 보수가 간단해집니다. 파일의 한 복사본을 유지하므로 데이터 일관성도 쉽게 유지할 수 있습니다.
데이터 백업: NFS를 사용하여 클라이언트에서 중앙 서버로 데이터를 백업할 수 있습니다. 이를 통해 중앙화된 백업 시스템을 유지하고, 데이터를 보호할 수 있습니다.
클라우드 스토리지: 클라우드 환경에서도 NFS는 파일 공유 및 저장에 널리 사용됩니다. 클라우드에서 NFS를 사용하면 여러 가상 머신 간에 데이터를 공유하고, 파일 시스템을 유연하게 확장할 수 있습니다.
NFS 서버 설치
centos 7.9 환경에서 NFS 설치 하는 방법에 대해 알아보겠습습니다.
nfs 패키지 설치
#설치 유무 확인
rpm -qa | grep nfs-utils
#nfs 팩키지 설치
yum install nfs-utils
--- Logical volume --- LV Path /dev/centos/swap LV Name swap VG Name centos LV UUID cwMNqw-gJSs-7nDO-GrRU-bgxE-FLB5-7acfhK LV Write Access read/write LV Creation host, time localhost, 2023-03-09 07:40:48 +0900 LV Status available # open 2 LV Size 8.00 GiB Current LE 2048 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:1
--- Logical volume --- LV Path /dev/centos/root LV Name root VG Name centos LV UUID kRPPw7-Ffr2-Bf20-CsE9-UDkt-aCdO-Y4DvFo LV Write Access read/write LV Creation host, time localhost, 2023-03-09 07:40:48 +0900 LV Status available # open 1 LV Size <6.00 GiB Current LE 1535 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:0
디스크 추가
fdisk -l 을 통해 추가한 disk 정보를 확인 합니다.
용량 증설을 위해 hdd 를 20G 추가 했습니다.
추가한 디스크에 대해 파티션을 생성 합니다.
fdisk /dev/sdb
[root@mysvr:/root]$ fdisk /dev/sdb Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them. Be careful before using the write command.
Device does not contain a recognized partition table Building a new DOS disklabel with disk identifier 0x8135267e.
Command (m for help): n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p Partition number (1-4, default 1): 1 First sector (2048-41943039, default 2048): =>엔터 Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): =>엔터 Using default value 41943039 Partition 1 of type Linux and of size 20 GiB is set
Command (m for help): t Selected partition 1 Hex code (type L to list all codes): 8e Changed type of partition 'Linux' to 'Linux LVM'
Command (m for help): w The partition table has been altered!
Calling ioctl() to re-read partition table. Syncing disks.
파티셔닝한 디스크 /dev/sdb1 를 Physical Volume 생성 한다.
pvscan 이나 pvdisplay 명령을 통해 pysical volume 정보를 확인 한다.
pvcreate /dev/sdb1
pvscan
pvdisplay
vgextend 명령을 통해 centos 볼륨 그룹에 새로 추가한 pysical volume 를 확장 한다.
vgextend centos /dev/sdb1
lvextend 명령을 통해 부족했던 lvm 을 확장 합니다.
lvextend /dev/mapper/centos-root -l +100%FREE
pvscan 명령을 통해 centos 으로 pv 가 추가 되었는지 확인 한다.
xfs_growfs 명령을 통해 논리 볼륨을 resizing 한다.
ext4 포멧일 경울 resize2fs /dev/mapper/centos-root 수행 합니다.
xfs type 에 대해 resize2fs 명령을 수행 하면 아래 처럼 에러가 발생함.
[root@mysvr:/root]$ resize2fs /dev/mapper/centos-root resize2fs 1.42.9 (28-Dec-2013) resize2fs: Bad magic number in super-block while trying to open /dev/mapper/centos-root Couldn't find valid filesystem superblock. [root@mysvr:/root]$ blkid /dev/mapper/centos-root /dev/mapper/centos-root: UUID="f4704f6c-5120-4c0f-b46b-7a0c31f390e5" TYPE="xfs"
remote: Enumerating objects: 13, done. remote: Counting objects: 100% (13/13), done. remote: Compressing objects: 100% (10/10), done. remote: Total 11 (delta 1), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (11/11), done. From http://192.168.17.83:6060/comdoc/testProject * branch main -> FETCH_HEAD [dev-account@centos7:/home/dev-account/test]$ ls guide_doc [dev-account@centos7:/home/dev-account/test]$ ll total 0 drwxr-xr-x 4 dev-account dev-account 35 Dec 19 19:35 . drwx------ 7 dev-account dev-account 193 Dec 19 19:25 .. drwxr-xr-x 8 dev-account dev-account 162 Dec 19 19:35 .git drwxr-xr-x 3 dev-account dev-account 17 Dec 19 19:35 guide_doc
GitLab 파일 수정 및 추가 후 업로드 [git push]
다운로드 받은 디렉토리에서 파일을 추가 하거나 수정 할경우 아래 절차로 gitlab 서버에 파일을 업로드 할수 있습니다.
git add [파일명]
git commit -m "[comment]"
git push origin main
테스트를 위해 임의로 쉘 스크립트를 만들었습니다.
[dev-account@centos7:/home/dev-account/test/guide_doc/doc]$ vi test.sh #!/bin/bash
while [[ $# -gt 0 ]]; do case $1 in -a|--option-a) arg_a="$2" shift ;; -b|--option-b) arg_b="$2" shift ;; *) # 알 수 없는 옵션에 대한 처리 echo "Unknown option: $1" exit 1 ;; esac shift done
echo "Option -a: $arg_a" echo "Option -b: $arg_b"
git add option_test.sh
git commit -m "option test shell commit"
git commit 명령 수행중 에러가 발생하면 에러 내용에 따라 git lab 계정정보를 등록 해주면 됩니다.
아래 쉘은 사용가능 한 Ranage 를 입력받고 현재 사용중인 port 리스트 중 range 가 사용자가 입력한 범위 이상의 포트 대역대만 출력 하는 스크립트입니다.
read -p 를 통해 사용하고자 하는 포트 범위를 입력 합니다.
#!/bin/bash
read -p " 원하는 포트 범위를 입력하세요:" check_port_range
echo " $check_port_range 범위 이상의 포트 범위를 체크합니다. "
# 현재 사용 중인 포트와 포트 범위를 확인하는 스크립트
# netstat 명령어를 사용하여 현재 사용 중인 포트를 확인하고 awk로 정리합니다.
# 마지막에 sort 명령어를 사용하여 포트를 정렬합니다.
used_ports=$(netstat -tulpn | awk '/LISTEN/ {print $4}' | awk -F ":" '{print $NF}' | sort -n | uniq)
# 포트 범위를 확인하는 함수
check_port_range() {
local start_port=$1
local end_port=$2
port_range=$(expr $end_port - $start_port)
if [ $port_range -ge $check_port_range ]; then
echo " [ $(expr $port_range ) ] : $(expr $start_port + 1 ) ~ $(expr $end_port + 1 ) "
fi
}
# 사용 중인 포트를 확인하면서 포트 범위를 확인합니다.
IFS=$'\n'
start_port=0
echo "PORT_RANGE : START_PORT ~ END_PORT"
echo "================================================="
for port in $used_ports; do
check_port_range "$start_port" "$port"
start_port=$port
done