Browsing Tag

install

IT/Linux/Kubernetes

xcp-ng 8.2 install (xen server)

안녕하세요. ManVSCloud 김수현입니다.

오늘은 XenServer의 무료 버전인 XCP-ng 오픈소스 하이퍼바이저를 설치하도록 하겠습니다.
비유를 하지면 Xen이 Redhat, XCP-ng가 CentOS라고 보면 이해하기 쉬울 것입니다.

XCP-ng를 설치하는 이유는 곧 CloudNet@에서 진행하는 DKOS(Docker Kubernetes Online Study)를 실제 서버에 올려서 운영 테스트까지 하는 것이 목적이기 때문입니다.

서버 여러대 사용하는 것도 조금 아닌 것같고 그렇다고 약 8주간 스터디 동안 클라우드에 테스트용 서버를 계속 올렸다가 스냅샷찍고 내렸다가 반복하는 것도 아닌 것같아서 Xcp-ng를 설치하게 되었습니다.

알고계신가요? 네이버 클라우드도 XenServer으로 만들어졌다는 사실?
Xen Server와 가상화에 대한 개념이 궁금하신 분을 위해 아래 링크를 추가해두었습니다.


XCP-ng Install

XCP-ng는 위 링크에서 .iso파일을 다운로드할 수 있습니다.

설치 진행 시 첫 화면
키보드 레이아웃을 설정하는 곳입니다.
us로 선택하면 됩니다.
OS 설치가 진행되면 디스크에 기존 데이터들이 전부 삭제되니 백업을 하라는 내용입니다.
백업이 필요할 경우 Reboot 그냥 진행하려면 OK를 누르면 됩니다.
라이센스 동의하는지 묻는 내용입니다.
[Accept EULA]를 바로 선택해줍시다.
일반 서버에 설치하면 나오지않습니다.
일반 서버에 설치한 것은 화질이 좋지않아 제가 VirtualBox로 한번 더 이미지 뽑느라 나온 것!
VirtualBox에서 설치하면 가상화 지원에 이상이 있다고 알려주는 내용이니 무시합시다.
스토리지를 선택하는 곳입니다.
참고로 설치 시 최소 용량이 약 46G? 이상이 필요한 것으로 압니다.
일반 리눅스 설치할 때처럼 적게 용량을 주면 설치가 안될 것입니다.
설치한 .iso 파일을 마운트하여 설치하는 것이니 [Local media]를 선택하여 설치합니다.
위에서 선택한 media 설치 소스를 검증하기 위해 테스트할지 스킵할지 물어보는 것입니다.
Skip 해줍시다.
설치 후 XCP-ng Center의 초기 패스워드입니다.
계정은 root입니다.
네트워크 설정을 해줍시다.
DHCP를 체크 해제하고 Static configuration에서 고정 IP 설정이 가능합니다.
Host와 DNS 설정을 해주는 곳입니다.
위 이미지와 같이 원하는 host명과 DNS를 설정합니다.
Time Zone 설정하는 곳입니다.
[Asia]로 설정
[Seoul]을 선택합니다.
현지 시간 결정을 어떻게할지 물어봅니다.
NTP Server를 지정해줄 수 있습니다.
time.bora.net, time.nuri.net 등 공용 NTP 서버는 많으니 원하시는 NTP Server를 등록해주면 됩니다.
설정이 끝났습니다 Install 해줍시다.
이건 추가 패키지 설치할래? 물어보는 건데
추가 패키지 설치할 거 없으면 [No]를 선택하면 됩니다.
설치가 완료되면 위와 같은 화면을 볼 수 있습니다.
이 화면이 메인 화면인 Ctrl+Alt+F1 화면입니다.
Ctrl+Alt+F2는 시스템 메시지 화면이고 Ctrl+Alt+F3부터 아래와 같은 터미널 구경이 가능합니다.
Ctrl+Alt+F3
이건 제가 서버에 XCP-ng 설치 후 XCP-ng Center로 접속한 화면입니다. (XCP-ng-Center-20.04.00.32.msi)

XCP-ng Center는 아래 링크에서 다운로드 및 내용 확인이 가능합니다.


마무리

금일 저녁부터 DKOS가 시작됩니다.
스터디 이후에도 정기적으로 쿠버네티스 학습이 필요할 것으로 보입니다.
XCP-ng를 이용하여 쿠버네티스 Master,Node를 생성하고 각종 테스트 실습을 거칠 예정입니다.

집에 사용하지 않는 PC가 있다면 Xcp-ng를 설치하여 사용하면 생각보다 다양하게 사용할 수 있어 좋습니다.

긴 글 읽어주셔서 감사합니다.

IT/Linux/Kubernetes

Docker Kubernetes Online Study – Ubuntu 20.04 Install

안녕하세요. ManVSCloud 김수현입니다.

CloudNet@에서 진행했던 ANOS 2기 스터디에 이어 DKOS(DOCKER KUBERNETES ONLINE STUDY)의 기회를 얻게되었습니다.

핵심만 콕! 쿠버네티스

위 책을 기반으로 공부를 하게 될 것으로 보이며 스터디가 6월 6일부터 시작되어 Ubuntu 설치와 사전 권장 학습을 진행해야합니다.

오늘은 간단하게 Ubuntu 20.04 설치에 대해서 포스팅했습니다.


Ubuntu 20.04 Install

VirutalBox

VirutalBox는 위 링크에서 다운로드 받을 수 있으며 Ubuntu는 20.04 Server 버전으로 VirtualBox를 이용하여 설치해줄 것입니다.

일단 DKOS-Ubuntu-Master라는 이름으로 생성해주었습니다.
이후 Node를 OS부터 하나씩 설치하지않고 Master를 특정 부분까지 설치 및 설정 해준 뒤 스냅샷으로 Node를 생성할 것입니다.

English 선택
키보드 레이아웃 고르는 것입니다.
저는 Korean으로 선택해주었습니다.
네트워크 설정해주는 곳인데 저는 이곳에서 설정을 해줬습니다.
이후 서버 내에서 설정하는 것도 알려드리겠습니다.
DHCP로 하지않고 고정으로 설정 해보겠습니다.
저는 VirtualBox에서 네트워크 연결 방식을 “어댑터에 브릿지” 으로 설정해두었으므로
위와 같이 설정해주었습니다.
192.168.0.30을 Master IP로 사용할 것입니다.
이전에 CentOS 환경으로 Kubernetes를 설치 및 테스트한 경험이 있습니다.
이전에 테스트 당시 만들어둔 표인데 대충 참고만하면 좋을듯합니다.
Disk 파티션을 설정하는 곳입니다.
Custom storage layout을 선택하면 사용자 설정을 할 수 있지만 저는 그냥 통으로 설치했습니다.
사용자 계정과 패스워드 등을 설정해줍시다.
위 Install OpenSSH Server를 체크해줍시다.
이후 따로 설치해줄 필요없습니다.
설치가 진행되고 이후 update&reboot이 나오면 reboot을 진행해주고 설치를 마무리합니다.
설치가 완료되면 설치 시 생성한 사용자 계정을 통해 접속이 가능합니다.
설치가 완료되었다면 VirtualBox에서 스냅샷을 찍어줍시다.★
스냅샷을 찍어두는 습관은 이후에도 많은 도움이 됩니다.
putty를 이용하여 생성한 OS에 접근
Ubuntu 20.04 설치 완료

Today’s Tips

Ubuntu는 CentOS와 다른 것들이 많았습니다.
저도 Redhat 기반의 경험이 많아 데비안 환경은 조금 불편할 때가 많았습니다.

  • sudo
    (sudo su – 를 하여 root 계정으로 사용할 수 있지만 사용자 계정 환경에 익숙해져보려고 합니다.)
  • apt-get
    (CentOS에서는 패키지관리자가 yum으로 사용되었지만 Ubuntu에서는 apt-get으로 사용해줍니다. +rpm과 dpkg의 차이)

또한 Ubuntu18 이후 버전부터는 네트워크 설정 파일이 yaml 파일로 설정되어있습니다.
/etc/sysconfig/network-scripts/가 아닌 /etc/netplan/ 아래 yaml 파일을 이용하여 네트워크 설정이 가능합니다.

//편의를 위한 root 권한으로 변경
manvscloud@dkos-master:~$ sudo su -
[sudo] password for manvscloud:

//작업 전 백업
root@dkos-master:~# sudo cp -avp /etc/netplan/00-installer-config.yaml /etc/netplan/00-installer-config.yaml_org
'/etc/netplan/00-installer-config.yaml' -> '/etc/netplan/00-installer-config.yaml_org'
root@dkos-master:~# cat /etc/netplan/00-installer-config.yaml
# This is the network config written by 'subiquity'
network:
  ethernets:
    enp0s3:
      addresses:
      - 192.168.0.30/24
      gateway4: 192.168.0.1
      nameservers:
        addresses:
        - 168.126.63.1
        search:
        - 169.126.63.2
  version: 2

위 yaml 파일을 보면 설치 시 설정했던 IP와 nameserver 등이 들어가있는 것을 볼 수 있습니다.
위 파일 수정 후 적용은 아래 명령어로 적용할 수 있습니다.

root@dkos-master:~# netplan apply

이후 스냅샷으로 생성한 Node들의 IP 설정을 해줄 때 사용하게 될 것입니다.
추가로 Hostname 변경 방법도 추가해두겠습니다.

//현재 hostname 확인
root@dkos-master:~# hostnamectl status

//hostname 변경
root@dkos-master:~# hostnamectl set-hostname dkos-node1

//hosts 파일 변경
root@dkos-master:~# vi /etc/hosts

network 및 hostname 설정간에 큰 어려움 없으시길 바랍니다.


Personal Comments

Kubernetes 시험 등록 후 다른 여러 일정으로 아직까지 시험을 못보고 있었습니다.
CloudNet@에서 진행하는 DKOS로 쿠버네티스 학습에 조금 더 집중을 할 수 있게 될 것같습니다. 2021-08-17 전에 시험 합격을 목표로 하고 있어 “네이버 클라우드에서의 보안” 포스팅을 제외하고는 쿠버네티스에 몰두할 예정입니다.

기회를 주신 CloudNet@ 팀에 다시 한 번 감사의 인사 올리며 포스팅을 마무리 하겠습니다.
긴 글 읽어주셔서 감사합니다.

IT/Linux/Kubernetes

Rocky Linux 8.3 Release Candidate 1 출시 / Test Installation

안녕하세요. ManVSCloud 김수현입니다.

어제 일자로 기다리던 ROCKY LINUX 8.3 RELEASE CANDIDATE 1이 출시되었습니다.
아직 불안정한 시험판으로 나오긴 했으나 상당히 기대되지 않을 수 없습니다.

Rocky Linux 는 CentOS 프로젝트의 창시자인 Gregory Kurtzer 가 시작한 프로젝트로 현재의 CentOS 처럼 RHEL 의 공개 소스를 가져와서 다시 빌드하고 패키징하는 것을 목표로 하고 있으며 심지어 RHEL 의 버그까지 똑같이 재연하는 것을 목표로 하고 있습니다.

레드햇 측에서 CentOS 프로젝트가 CentOS 8 지원을 2021 년 말에 종료하는 것을 발표했었습니다. CentOS 7 버전이 2024 년까지 계속 지원될 예정이지만 CentOS 8의 지원 종료 기간이 2021년 12월 31일로 정해지며  Red Hat Enterprise Linux 8 에 대한 무료 배포판 역할이 사라지게 된 것입니다.

물론 아직까지 지원 종료가 되어버린 CentOS4,5,6을 사용하는 유저들도 존재하는 것으로 알고있습니다. 2024년도 이후 CentOS 7 마저 지원이 종료된다면 보안 패치의 부재와 Repo 중단으로 많은 불편함이 존재할 것입니다.

기존 CentOS 8 유저나 OS 버전 업이 필요할 경우 CentOS Stream으로 전환이 필요하게됩니다.

https://www.lesstif.com/lpt/centos-8-centos-stream-98927171.html

CentOS 가 종료되고 CentOS Stream 로 전환되는 22년부터는 아래와 같은 관계가 됩니다.

https://www.lesstif.com/lpt/centos-8-centos-stream-98927171.html

즉, 안정성 입증이 어려워졌고 신뢰성이 떨어진 현재 CentOS를 더 사용하기 애매해져버린 상황입니다.

오늘은 어제 발표된 ROCKY LINUX 8.3 RELEASE CANDIDATE 1을 간단하게 설치해보는 것까지 진행해볼 것이고 이후 서비스 운영부분까지 테스트해볼 예정입니다.


설치

설치는 간단하게 “Rocky-8.3-x86_64-minimal” 로 설치했습니다.
좌측에 Rocky Linux가 매력있는 듯합니다.

아직 정식 출시가 아닌 RC라 개발 및 테스트 목적으로만 사용하시길 바랍니다.

설치 및 부팅 후 CLI 콘솔 화면에서 Rocky 로고가 나옵니다.
Rocky Linux 설치 시 cockpit이 설치가 되어있나봅니다.

  • cokpit : Web UI 기반의 모니터링 및 관리 툴입니다.
원래는 9090포트입니다. (포트포워딩 해둬서 9999상태)
[아래 네트워크 작업을 한 뒤 확인 한 것]

NAME이 Rocky Linux로 나오네요.
멋있습니다.

네트워크 설정을 간단히 마쳐주고 간단하게 이런저런 설치만 해보았습니다.

Rocky Linux 8.3 AppStream 에서 dnf 로 php 설치 시 기본 버전이 7.2로 되어있습니다.

dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm

위 명령어처럼 EPEL 저장소를 추가해주어야 dnf module list php 명령어를 입력했을 때 추가 버전을 확인할 수 있을 것입니다.

그외에도 ImageMagick을 설치 시 –set-enabled powertools 을 해주어야하는 부분 역시 CentOS 8과 동일했습니다.

dnf install -y epel-release
dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
dnf config-manager --set-enabled powertools
dnf install -y ImageMagick ImageMagick-devel
pecl install imagick
echo "extension=imagick.so" > /etc/php.d/20-imagick.ini
cat /etc/php.d/20-imagick.ini

# Repo 추가 및 사용 방법도 CentOS8과 동일함

vi /etc/yum.repos.d/MariaDB.repo

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.5/centos8-amd64
module_hotfixes=1
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

dnf install MariaDB-server MariaDB-client –disablerepo=AppStream

그 외에도 이런 저런 간단한 설치들을 하는데에 크게 문제없이 잘 되는듯보였습니다.
간단한 설치 테스트는 여기서 마치고 이후에는 CentOS 7에서 서비스를 CentOS8로 이전, 서비스 정상 작동 여부까지 확인 해볼 것입니다.


후기

오래 전부터 기다리고 있던 Rocky Linux의 RC 1 이 나와서 정말 기뻤습니다.
이번 설치 테스트 때 GUI 설치 후 GUI 구경을 못해본 게 아쉬운데 다음 테스트 때 설치해서 구경해야겠습니다.

Rocky Linux의 정식 출시를 응원하며 글을 마무리하도록 하겠습니다.

긴글 읽어주셔서 감사합니다.

Dev

[Dev] 도커를 이용한 jupyter notebook Install & pandas test

안녕하세요. ManVSCloud 김수현입니다.

최근에 슬슬 개발 언어를 배워볼 필요성을 느끼게 되었습니다.
제가 배워보기로 한 언어는 Python입니다.

Python이 배우기 쉬운 언어라 선택하기보다 제가 만들고 싶은 것도 있고 해보고 싶은 작업에 Python이 필요로 하기때문에 선택하게 되었습니다.


Python을 배워 데이터 분석과 Python용 AWS SDK인 boto3에 활용할 예정이며
언어를 배우기 앞서 웹 브라우저를 통해 코드 작성 후 실행을 해볼 수 있도록
“JUPYTER NOTEBOOK”을 설치할 것입니다.


ENV & BASE INSTALL

우선 고정적인 Python 버전과 변경된 Python 버전으로 인해 다른 시스템에 영향이 가는 것을 원하지 않아 독립된 가상 환경이 필요했습니다.

# OS : CentOS7
# Virtualization approach : Docker
# Python : 3.8.6
# Jupyter : 6.2.0

pyenv, virtualenv, anaconda, docker, kubernetes 등 다양한 선택지가 있었으나
저는 제가 조금 더 익숙한 docker를 이용하여 설치를 하였습니다.

아래 기본적인 설정과 docker 설치를 남겨놓았으나 이 포스팅은 Jupyter 설치가 메인이라 docker 설치 방법에 대한 설명을 따로 하지않도록 하겠습니다.

setenforce 0

sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config

[root@localhost jupyter]# sestatus | grep config
Mode from config file: disabled

yum update -y && yum install -y yum-utils

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

yum install -y docker-ce

curl -L https://github.com/docker/compose/releases/download/1.25.0-rc2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

cd /usr/local/bin

chmod +x docker-compose

base=https://github.com/docker/machine/releases/download/v0.16.0 && curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine && sudo install /tmp/docker-machine /usr/local/bin/docker-machine

systemctl enable docker
systemctl start docker

Jupyter NoteBook Install

docker와 docker-compose 설치 및 실행을 끝마치고
vi docker-compose.yaml 를 하여 아래와 같은 .yaml 파일을 생성합니다.

version:                "3"
services:
  datascience-notebook:
      image:            jupyter/datascience-notebook
      volumes:
        - /docker/jupyter:/home/jovyan/work
      ports:
        - 8888:8888
      container_name:   jupyter-container

위 사이트에서 처럼 원하시는 옵션에 맞게 사용자 지정하여 파일을 생성하셔도 좋습니다.

이후 docker-compose up -d 명령어를 이용하여 실행할 수 있습니다.
-d 옵션을 줘야 백그라운드로 실행이 됩니다.

jupyter의 경우 실행 시 토큰 값을 알아야 접속이 가능합니다.
(옵션에서 토큰or패스워드 값을 제거할 수도 있습니다.)

백그라운드로 실행했을 때는 docker-compose logs 명령어를 이용하여 확인이 가능합니다.

정상적으로 접근이 되지않고 302 에러가 발생할 경우 방화벽 문제가 있을 수 있습니다.
방화벽을 확인해보시기 바랍니다.

[root@localhost jupyter]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f1ccb4d9ba04 jupyter/datascience-notebook “tini -g — start-no…” About an hour ago Up 56 minutes 0.0.0.0:8888->8888/tcp jupyter-container

docker ps 명령어로 실행된 docker 컨테이너를 확인 할 수 있으며
docker exec -it f1ccb4d9ba04 /bin/bash (docker exec -it CONTAINER ID /bin/bash) 를 이용할 경우
컨테이너 내부로 접속이 가능합니다.

  • docker-compose 재시작 시 자동 실행 등록

vi /etc/systemd/system/docker-compose.service

[Unit]
Description=Docker Compose Application Service
Requires=docker.service
After=docker.service

[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/develop/docker
ExecStart=/usr/local/bin/docker-compose up -d
ExecStop=/usr/local/bin/docker-compose down
TimeoutStartSec=0

[Install]
WantedBy=multi-user.target

systemctl daemon-reload
systemctl enable docker-compose


pandas 라이브러리 테스트

마지막으로 생성한 jupyter notebook을 이용하여 python의 pandas 라이브러리를 테스트 해보겠습니다.

[New]에서 Python3을 선택합니다.
import pandas as pd

df = pd.DataFrame(
[[30, 173, 61],
[27, 181, 79],
[26, 158, 45]],
index=[1, 2, 3],
columns=['Age', 'Height', 'Weight'])

df

코드는 간단하게 테스트용으로 사용하였습니다.

pandas 라이브러리 테스트까지 정상적으로 마무리되었습니다.
지금부터라도 Python 공부를 해봐야겠습니다.


참고 사이트

긴 글 읽어주셔서 감사합니다.