카테고리 없음
[CentOS] -
yongyongMom
2024. 11. 21. 09:15
SMALL
1. Cent OS
1) Red Hat Linux
- Fedora
- Red hat 에서 지원하는 Fedora 프로젝가 개발하는 리눅스
- 무료로 제공되는 리눅스 버전
- Red Hat 의 Beta 버전 성격
- Cent OS
- Red Hat Enterprise 의 Clone Linux
- 8버전부터 Red Hat 이 더 이상 Cent OS 를 지원하지 않음
- Cent OS 초기 개발자가 만든 버전이 Rocky 이고 RHEL 의 Clone 이 아니고 RHEL 의 베타 버전 성격의 리눅스임
- RHEL
- Red Hat Enterorise Linux
- 상용화된 리눅스로 설치나 문제 해결에 대한 기술 지원을 받을 수 있음
2) 설치
Download
Home Download Architectures Packages Others x86_64 RPMs Cloud | Containers | Vagrant ARM64 (aarch64) RPMs Cloud | Containers | Vagrant IBM Power (ppc64le) RPMs Cloud | Containers | Vagrant IBM Z (s390x) RPMs Cloud | Containers | Vagrant Documentation Relea
www.centos.org
- ISO 파일을 환경에 맞게 다운로드 받아서 vm 생성 가능
3) 기본 환경 구성
- hostname 설정
hostnamectl set-hostname <호스트이름>
- network 설정
- Cent OS 8 이상 -> NetworkManger 서비스를 이용해서 네트워크 관리를 수행
- nmcli 라는 도구를 이용해서 네트워크 설정을 수행
-> nmtui 나 GNOME 의 설정 모드에서 수행 가능 - 설치 여부 확인
rpm -q NetworkManger
- nmcli
- NetworkManger 의 패키지의 일부로 설치되므로 사용법 확인 필요
# 연결된 네트워크 확인
nmcli connection show
# 전체 상태 확인
nmcli general status
# 시스템에 설치된 장치의 상태를 확인
nmcli device status
- 네트워크 인터페이스 설정
# IP 설정
nmcli connection modify 디바이스이름 ipv4.address 이미피/서브넷 마스크
# DNS 설정
nmcli connection modify 디바이스이름 ipv4.gateway 아이피
# 네트워크 인터페이스를 재시작
nmcli connection up 디바이스 이름
- 스크립트로 수정 가능함
/etc/sysconfig/network-scripts/ifcfg-디바이스이름 키=값
4) 패키지 관련 명령
- 형식
yum [옵션] [명령어] [패키지이름]
- 설치 : 관리자 권한 필요
- 설치할 때 -y 옵션을 추가하는 것이 편리함
yum install <패키지이름>
- 패키지 삭제 - 의존 패키지도 삭제
yum erase <패키지이름>
yum remove <패키지이름>
- 패키지 정보 확인
yum info <패키지이름>
5) NTP 설정
- 서로 다른 시스템 및 그 위의 애플리케이션 간 연결, 수많은 로그 상의 정확한 타임 스탬프를 위해서 각 계층 및 구성 요소들의 일관된 시간 유지가 중요
- 인터넷 시간 서버, GPS 같은 비교적 정확한 소스로부터 시간을 제공받고 동기화하려면 NTP ( Network Time Protocol )
- chrony
- Cent OS 8 이상에서 NTP 를 구현하는 기본 도구이며 이전의 ntpd 는 더 이상 사용할 수 없음
- 두개의 프로그램으로 구성
- Chronyd : 부팅할 때 바로 시작할 수 있도록 해주는 데몬
- Chronyc : 성능을 모니터링하고 실행 중 다양한 작동 매개변수를 변경, 사용할 수있는 명령줄 인터페이스 프로그램
- install
# 설치
dnf install chrony
# 서비스 활성화
systemctl enable --now chronyd
# 서비스 상태 확인
systemctl status chronyd
# 클라이언트의 ntp 요청을 허용하는 방화벽 규칙을 추가
firewell-cmd --add-service=ntp --permanent
firewall-cmd --reload
- chrony 를 이용한 NTP 구성
- /etc/chrony.cong 파일이 chrony 의 설정 파일
- 기본적으로 2.rocky.pool.ntp.orh.iburst 가 설정되어 있음
- 이를 한국으로 수정 -> https://www.pool.ntp.org/zone/kr
# NTP 동기화를 설정
timedatectl set-ntp true
# chrony 를 재시작
systemctl restart chronyd
# 확인
chronyc sources
6) Selinux 비활성화
- Selinux ( Security-Enhanced Linux )
- 관리자가 시스템 엑세스 권한을 효과적으로 제어할 수 있는 Linux 시스템용 보안 아키텍쳐
- Linux 커널에 대한 일련의 패치로 개발한 것
- Open Stack 이나 가상화를 하고자 할 때는 해당 서비스를 중지 시킴
# 중지 방법
# /etc/selinux/config -> disable 설정
sudo vi /etc/selinux/config
SELINUX=disabled
7) Repository 설정
- Cent OS(Rocky) 의 패키지 repository 는 기본적으로 12개로 구성
- 3개의 repository 가 활성화
- Cent OS 8 DNF 로 변경
- RPM 기반 패키지 관리 도구
- repository 확인 : /etc/yum.repo.d/
dnf repolist
- dnf
- yum (Yellowdog, Updater, modified) 명령어는 RPM 을 관리하기 위해서 Cent OS 7까지 사용된 프론트엔드 도구
- 성능이 나쁘고 메모리를 과도하게 사용 -> 종속성 패키지 조회 및 제고엥 있어 속도 감소의 문제 발생
- YUM 은 종속성 해결을 위해 Public API 를 사용
- DNS 는 SUSE 에서 개발 및 유지 관리하는 libslov 를 사용해서 성능 향상을 이끌어냄
- DNF 의 API 는 완전히 문서화됨
- YUM 은 Python 만으로 작성 //// DNF 는 c,c__, python 으로 작성
2. 가상화
- 실습을 하고하는 경우 리눅스를 직접 설치
1) 가상화
- 실제 물리 머신에서 하이퍼바이저를 이용해서 추상화된 하드웨어로 구성된 가상의 시스템 인스턴스를 실행하는 방식
- 가상의 시스템을 VM 또는 Guest 라고 하고 실제 물리 머신을 host
- 가상화를 사용하게 되면 하나의 물리 머신에 다양한 운영체제를 동시에 사용할 수 있음
- 컴퓨팅 리소스를 여러 작은 부분으로 나누어 사용함으로써 더욱 효율적이고 경제적인 운용이 가능
- VM 안에서 레거시 환경에서 동작하는 소프트웨어의 설정과 기능을 텟트
- 격리된 network 환경을 구성해 보안적을 더욱 안전한 워크로드를 구성할 수 있음
- 종류
- Full virtualization (전가상화)
- Guest VM OS 의 커널을 수정하지 안흔ㄴ 방식
- Guest VM 이 직접 물리 머신과 매핑될 수 없고 반드시 하이퍼바이저를 거침
- KVM 이 전가상화의 대표적인 형태
- Full virtualization (전가상화)
- Para Virtualization (반가상화)
- 성능 향상을 목적으로 Guest VM OS 의 커널을 수정하여 가상 하드웨어 실제 하드웨어의 매핑을 단축 시키는 방식
2) 가상화의 장점
- 유연하고 세분화된 리소스 할당
- 가상화를 사용하지 않는 경우에는 물리적 리소스 할당을 하드웨어 수준에서 수행
- 가상화 시 -> 소프트웨어 수준에서 할 수 있어 유연함
- Guest OS 는 디스크로 보여지는 부분이 Host OS 에서는 하나의 파일로 보여짐
- 소프트웨어 제어 구성
- VM 의 전체 구성은 Host 에 데이터로 저장되고 소프트웨어 제어를 받음
- 생성, 제거, 복제, 마이그레이션, 원격 운영 또는 원격 Stroage 에 연결할 수 있음
- Host 에서 분리
- Guest OS 는 Host OS 와 별도로 가상화된 커널에서 실행
- Guest OS 가 불안정해지거나 손상되더라도 host 는 어떤 방식으로도 영향을 받지 않음
- 공간 및 비용 효율성
- 하나의 물리적 시스템이 많은 수의 VM 을 호스팅하는 것이 가능함
- 동일한 작업을 동시에 여러 개 수행하더라도 여러 물리적 시스템이 필요하지 않음
- 물리적 하드웨어와 관련된 공간, 전력, 유지 관리 요구사항이 줄어듬
- 소프트웨어 호환성
- Host OS 용으로 출시되지 않은 애플리케이션도 가상화를 통해 실행하는 것이 가능함
3) 하이퍼 바이저
- host 의 물리적 시스템을 파티셔닝하여 여러 개의 OS 를 동시에 작동시키기 위한 논리적 플랫폼
- 하이퍼바이저는 물리 시스템의 memory, network, CPU 와 같은 컴퓨팅 자원을 더 효과적으로 사용할 수 있도록 도와줌
- 종류
- Type1 ( bard-metal hypervisor ) : OS 가 없는 물리 머신위애서 바로 동작하는 하이퍼바이저
- Type2 ( hosted hypervisor ) : 물리 머신위에 OS 를 설치하고 그 OS 위에서 동작하는 하이퍼바이저
4) KVM (Kernel-based Virtual Machine)
- VM 을 여러 개 생성하고 동시에 운영할 수 있도록 하드웨어를 가상화할 수 있는 오픈 소스 기술
- 커널 수준의 VM 이라고도 하는데 KVM 모듈이 시스템 거널에 장착되어 Linux 시스템을 하이퍼바이저 변경
- KVM 은 커널 수준의 하이퍼바이저이기 때문 -> Type1 하이퍼바이저
- KVM 환경에서 Host OS 가 완전하게 동작하기 떄문에 Type 2 로 분류도 가능
5) QEMU
- Host Os 에서 동작하는 애뮬레이터
6) QEMU + KVM
- KVM 은 일반적으로 QEMU 와 같이 사용
- QEMU 는 하드웨어를 애뮬레이터하고 KVM 이 게스트 시스템을 실행할 때 최대 성능을 나타내도록 함
7) Libvit
- 가상화 플랫폼을 관리하는 API
- 클라우드기반 하이퍼바이저를 관리할 때 사용됨
3. KVM
1) KVM 환경 확인
- KVM 은 x86 하드웨어에 설치된 Linux 에서 동작하는 전가상화 솔루션
# x86 머신이 Virtualization Extensions 를 지원
lscpu | grep Virtualization
# kvm 가상화 모듈이 탑재되었는지 확인
lsmod | grep kvm
# 모듈을 실행
modprobe kvm_intel amd
- CPU 가 하드웨어 가상화를 지원하는지 체크
- CPU 정보에 vmx 나 svm 라는 단어가 포함되었는지 체크
- /proc/cpuinfo 라는 파일이 cpu 정보를 가지고 있음
grep -E 'vmx|swm' /proc/cpuinfo
2) Network 설정
- 외부에서 게스트 VM 의 network 에 접속할려면 NAT 또는 브릿지 netwokr 를 이용
- 종류
- NAT 를 이용한 가상 network
- Host 내부 게스트 VM 들 간에만 통신 가능한 Hosted network
- 시스템의 물리적 network 와 직접 연결된 브릿지 network
- 패키지 설치
- virt-manager, virt-install, virt-viewer
- qemu-kvm, libvirt, libvirt-client
- libvirtd 서비스 시작
- 네트워크 확인
nmcli con show
4. Open Stack 설치
1) 설치
- 패키지 관리자 업데이트
sudo yum update
# Powertools 를 설치
dnf install dnf-plugins-core
dnf config-manage --set-enabled crb
- Open Stack 저장소를 활성화
- zed 나 antelope, bobcat
- 인터넷에서 검색하면 rocky 나 ocata 가 있는데 조회가 안됨
dnf install centos-release-openstack-릴리스이름
- hostname 변경
# 수정명령
hostnamectl set-hostname controller
# 확인
hostnamectl
- 네트워크 수정
vi /etc/sysconfig/hetwork-scripts/ifcfg-enp0s3
TYPE=Ethernet
BOOTPORTO=none
NAME=enp0s3
DEVICE=enp0s3
ONBOOT=yes
IPADDR=10.0.2.16
PREFIX=24
GATEWAY=10.0.2.2
DNS1=8.8.8.8
# 수정한 내용 반영
sudo systemctl restart NetworkManager
- Controller Node 에 Python 종속성 설치
sudo dnf -y install python3-devel libffi-devel gcc openssl-devel python3-libselinux
- Kolla ansible 2.9 버전 이상 설치
python3 -m venv ~/kolla
source ~/kolla/bin/activate
pip install -U pip
pip install ‘ansible<3.0’
- 설정 파일을 생성하고 작성함
sudo mkdir /etc/ansible
sudo vi /etc/ansible/ansible.cfg
[defaults]
host_key_checking=False
pipelining=True
forks=100
# Kolla-Ansible 을 다운로드
pip install kolla-ansible
- Kolla-Ansble 사용 디렉터리 만들고 소유권을 혀냊 접속한 유저로 변경
sudo mkdir -p /etc/kolla
sudo chown $USER:$USER /etc/kolla
cp -r ~/kolla/share/kolla-ansible/etc_examples/kolla/* /etc/kolla
cp -r ~/kolla/share/kolla-ansible/ansible/inventory/* /etc/kolla
- multinode 파일을 편집해서 노드를 등록
[control]
controller ansible_host=IP ansible_become=true
[compute]
compute1 ansible_host=IP ansible_become=true
compute2 ansible_host=IP ansible_become=true
[network]
network ansible_host=IP ansible_become=true
[storage]
storage ansible_host=IP ansible_become=true
2) Ansible 은 SSH 를 사용
- 배포 host 와 대상 host 를 연결함
- ssh-keygen 명령을 public key 를 생성
- public key 를 각 node 에 배포
ssh-copy-id $USER@IP
# 자신의 컴퓨터는 localhost
- 배포에 사용된 비밀번호는 /etc/kolla/passwords.yml 파일에 저장
- 임의의 password 생성기를 사용시 복잡한 password 로 생성 -> 간편한 로그인을 위해서는 password 를 직접 설정
kolla-genpwd
vi /etc/passwords.yml
반응형
LIST