Accordion Install Ⅰ

 

Accordion 2.0 install – v2.11(single)

이 문서는 Accordion v2.11 master node 1대, worker node 2대로 구성하여 설치하는 방법을 설명합니다.

구분OSCPUMemoryDisk
MasterCentOS: 미지원
RHEL: RHEL 8.4이상, RHEL 9
Rocky: RockyLinux 8.4이상, RockyLinux 9
Ubuntu: Ubuntu 22.04 이상, Ubuntu 24.04 이상
OracleLinux: OracleLinux 8.4 이상, OracleLinux 9 (UEK 커널 미지원, RHCK 커널 지원)
최소 8Core최소 16GB최소 300GB
WorkerCentOS: 미지원
Rocky: RockyLinux 8.4이상, RockyLinux 9
Ubuntu: Ubuntu 22.04 이상, Ubuntu 24.04 이상
OracleLinux: OracleLinux 8.4 이상, OracleLinux 9 (UEK 커널 미지원, RHCK 커널 지원)
최소 8Core최소 16GB최소 100GB

1. 시스템 요구사항

  • Accordion 설치를 위해 master node 서버 1대와 서비스를 수행할 worker node 1대 이상(2대 이상 권장) 이 있어야 합니다.
  • master, worker node 서버 간에는 네트워크 통신이 가능해야 합니다
  • 클러스터 구성을 위한 모든 서버는 시간이 동일해야 합니다.

2. 서버 별 시스템 요구 사항

3. 아코디언 사용 포트

외부에서 서비스를 접근해야 하는 경우 아래 Port들이 방화벽에 오픈되어 있어야 합니다.
해당 문서에서는 방화벽 서비스는 비활성화했습니다.

구분Port사용 용도
admin30000Accordion Web Admin
registry30001 User registry
thanos30002-30003thanos metric 수집
app service80 / 443App service 용도 (http/https)

4. Accordion Install

 

Step 1. 환경 구성

master node 1대와 worker node 2대를 준비 후 아래의 설정들을 적용합니다.

  1. 전체 노드에 hostname 설정 및 hosts 설정을 해줍니다.

accordion

  1. 전체 노드에서 swap을 비활성화 해줍니다.

* 쿠버네티스에서는 노드에 swap이 켜져 있으면 kubelet이 동작하지 않거나 경고를 발생시키기 때문에 설치 전에   swap을 비활성화 해야합니다.

$ swapoff -a
$ vi /etc/fstab (영구 비활성화를 위해 아래 swap 부분 주석처리)

#/dev/mapper/rhel-swap none swap defaults 0 0

  1. ssh Root 접근 허용

아코디언 설치는 Ansible 스크립트를 통해 이뤄집니다.
Ansible 스크립트 수행을 위해 각 노드에서 ssh로 root 로그인이 가능하도록 설정을 변경합니다.

$ vi /etc/ssh/sshd_config


PasswordAuthentication yes
PermitRootLogin yes

  1. ssh key 복사

master node 에서 ssh 키를 생성합니다. (master 포함)
* 클러스터 구성 서버 모두 등록할 때 까지 반복해야합니다.
해당 작업으로 다른 노드에 공개키를 등록하여 비밀번호 없이 SSH 접속이 가능해집니다.

$ ssh-keygen
$ ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.82.101
$ ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.82.104
$ ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.82.105

이 후 ssh 키 설정이 올바르게 적용되었는지 확인합니다.

$ ssh 192.168.82.104 ## 해당 명령어로 비밀번호 입력 없이 ssh 접속이 가능하면 됩니다.

  1. selinux 비활성화

$ grubby –update-kernel ALL –args selinux=0 ##  rhel 9에서 사용되며 커널레벨에서부터 비활성화 시킵니다.

 

Step 2. Accordion 설치 파일 확인

Accordion 설치에 앞서 아래와 같이 다운로드 한 파일이 손상되지 않았는지 확인하는 과정이 필요합니다.
해당 명령어를 이용하여 나온 값이 맨텍에서 제공해주는 체크섬과 같은 지 확인합니다.

$ md5sum accordion-installer-v2.11.1.tar.gz
8e48db8b7cf76000ca1e508d017d8c85  accordion-installer-v2.11.1.tar.gz

 

Step 3. Podman 설치

다운로드 받은 Accordion 설치 파일을 마스터 노드 서버에서 압축을 해제합니다.

$ tar zxvf accordion-installer-v2.11.1.tar.gz

압축 해제 후 운영체제에 맞는 Ansible 설치 스크립트를 실행합니다.

Redhat 계열 9버전 : $rpms/rpm_redhat9/7_podman/install.sh

Step 4. Ansible 인벤토리 설정

accordion-installer/hosts 파일에서 아래와 같이 표시 된 부분을 사용 환경에 맞게 수정합니다.

$ vi hosts

install-server ansible_host=127.0.0.1 ansible_connection=local node_role=infra

#########################################################################################
# host-cluster List
#########################################################################################
acc-host-master    ansible_host=192.168.82.101   ansible_connection=ssh   node_role=infra # master 서버의 IP Address
#acc-host-master2   ansible_host=192.168.82.102    ansible_connection=ssh     node_role=infra
#acc-host-master3   ansible_host=192.168.82.103    ansible_connection=ssh     node_role=infra
acc-host-node1    ansible_host=192.168.82.104    ansible_connection=ssh     node_role=infra # worker 서버의 ip Address
acc-host-node2    ansible_host=192.168.82.105    ansible_connection=ssh     node_role=infra # worker 서버의 ip Address

#########################################################################################
# member-cluster List
#########################################################################################
#acc-member-master    ansible_host=10.140.1.2    ansible_connection=ssh   node_role=infra
#acc-member-node1    ansible_host=10.140.1.3    ansible_connection=ssh     node_role=infra
#acc-member-node2    ansible_host=10.140.1.4    ansible_connection=ssh     node_role=infra
#acc-member-master2   ansible_host=10.140.1.5    ansible_connection=ssh     node_role=infra
#acc-member-master3   ansible_host=10.140.1.6    ansible_connection=ssh     node_role=infra

#########################################################################################
# Group List
#########################################################################################
[local]
install-server

#########################################################################################
# Manager Group

[host-master]
acc-host-master

[host-master-cluster]
#acc-host-master2
#acc-host-master3

[host-minions]
acc-host-node1
acc-host-node2

[host-infra]

[host-etcd]

#########################################################################################
# Member Group

[member-master]
#acc-member-master

[member-master-cluster]
#acc-member-master2
#acc-member-master3

[member-minions]
#acc-member-node1
#acc-member-node2

[member-infra]

[member-etcd]

#########################################################################################… 중략

 

Step 5. accordion-installer/group_vars/host.yml 설정

accordion-installer/group_vars/host.yml 파일을 열어 수집된 환경 변수를 수정합니다.
아래와 같이 표시 된 부분을 사용 환경에 맞게 수정합니다.

#- setup variable for cluster installation

########################################################
## Master configuation
########################################################
# cluster_name
cluster_name: "host-cluster"
# master isolation ( yes / no )
master_isolation: "no"
master_host_name: "acc-211-master01"
master_ip: 192.168.82.101

acc_interface: ens3
########################################################
# 3master mode( yes / no )
########################################################
master_mode: "no” # 싱글 구성이므로 no로 수정
master2_ip: 192.168.82.102
master3_ip: 192.168.82.103
master2_hostname: "acc-211-master02"
master3_hostname: "acc-211-master03"
# LB_mode ( L4 / haproxy )
LB_mode: "haproxy"
LB_port: 8443
LB_vip: 192.168.82.101 # 싱글 구성이므로 master node의 ip add 입력

# LB_domain_option ( yes / no )
LB_domain_option: "no"
LB_domain_address: "l4.domain.accordions.co.kr"

# Set it up if you want to add the master server later
# If master_mode is "no", it will not work.
# single_option( yes / no )
single_option: "no"

########################################################
## container_name (containerd & cri-o)
########################################################
container_option: "containerd"

# container_option (containerd)
selinux_enable: "no"

# container_option (cri-o)
pid_limit: "4096"

########################################################
# storage setting
########################################################
# storage_option ( nfs / ceph / local )
storage_option: "nfs"

# accordion_storage_path
accordion_storage_path: "/nfs/data2" # 사용하는 nfs 경로로 수정

# nfs_setup ( internal / external )
nfs_setup: "internal" # 별도의 nfs 서버를 두지 않고 master node를 이용
nfs_server_ip: 192.168.82.101 # master node의 ip add 입력

# nfs_version ( v3 / v4 / v4.1 / v4.2 )
nfs_version: "v3"

# ceph_option ( cephfs / rbd )
ceph_option: "cephfs"

#ceph health, ceph fsid, ceph auth get-key client.admin, ceph status
ceph_server_ip: "10.20.200.107"
ceph_server_port: "6789"
ceph_id: "admin"
ceph_key: "AQCKoqVh0eR5MxAAL4WziV7oyVsdtHC6Wz0RcQ=="
#ceph_id: "kubernetes"
#ceph_key: "AQBDpKVhFhPCIRAAf1xqSLgi558DIH+FvcCyMQ=="
ceph_fsid: "84ab6f51-d13e-4a83-9ccc-fd3b9228e728"
ceph_fsname: "cephfs"
#ceph_fsname: "cephrbd_pool"

basic_storageclass_name: "accordion-storage"

#######################################################
# sub storage setting
#######################################################
# user_storage_option ( yes / no )
user_storage_enabled: "no"

user_storageclass_name: "user-storage"

# storage_option ( nfs / local )
user_storage_option: "nfs"

# user_storage_path
user_storage_path: "/nfs/user"

# user_nfs_setup ( internal / external )
user_nfs_setup: "internal"
user_nfs_server_ip: 10.140.0.2

# user_nfs_version ( v3 / v4 / v4.1 / v4.2 )
user_nfs_version: "v3"

########################################################
# etcd external option
########################################################
etcd_external: "no"

########################################################
# base registry
########################################################
# accordion_registry_option ( local / external )
base_registry_option: "local"
base_registry_addr: 192.168.82.101 # master node의 ip add 입력
base_registry_port: 5000
base_registry_id: acc-registry
base_registry_passwd: accordionadmin

 

Step 6. accordion install

위 환경 구성이 다 되었다면 accordion-installer/container-start.sh를 실행하여 ansible 컨테이너를 실행합니다.

$ sh container-start.sh

컨테이내 내부 기본 경로는 /mantech이며 /mantech/accordion-installer로 이동하여 설치를 진행합니다.

아코디언 인스톨 전 사전 환경 체크를 위해 pre-check.sh 를 실행하여 fail이 없는지 확인 후 install을 진행합니다.
$ sh pre-check.sh
# pre-check.sh는 OS호환성, 마스터 노드 개수, 최소 메모리, 최소 커널, 호스트 이름을 검사합니다.

이제 아코디언 설치를 진행합니다.

$ sh install.sh

설치는 서버 및 네트워크 성능에 따라 차이가 크며 약 1시간 정도가 소요됩니다.

 

Step 7. accordion install error

아코디언을 설치하다보면 설치 환경에 따라 install 과정이 매끄러울 수도, 그렇지 않을 수도 있습니다.

설치가 실패한다면 실패 한 해당 TASK에서 어떤 문제가 발생했는지를 찾기 보다는 1,2회 정도는 전체 uninstall 후 재설치를 하는 것이 권장됩니다. (개인 사견)

네트워크 및 리소스 문제로 설치 과정 중 응답 확인 부분에서 태스크가 끊기는 경우가 아니라면, /tmp 밑의 ansible 로그를 확인하여 인스톨 중 어느 TASK에서 문제가 발생했는지를 확인하여 에러를 해결 후 재설치해줍니다.

설치가 어느정도 진행 된 상황에서 fail이 발생하여 fail이 뜬 TASK부터 install을 해주는 것도 가능 합니다만, 기본적으로 전체 uninstall 및 초기화 후 처음부터 install 하는 것이 권장됩니다.

$ ansible-playbook -i hosts all.yml –start-at-task=”Join nodes with manager-master”
# Join nodes with manager-master 라는 TASK부터 install을 다시 실행

 

Step 8. accordion uninstall

install 할 때와 마찬가지로 accordion-installer/container-start.sh를 실행하여 ansible 컨테이너를 실행합니다.

$ sh container-start.sh

컨테이너 내부 기본 경로는 /mantech이며 /mantech/accordion-installer로 이동하여 uninstall을 진행합니다.

$ sh uninstall.sh

uninstall 과정이 끝났다면 uninstall 후 아래 clean-up 명령어를 이용하여 완전히 초기화 합니다.

[clean-up]

$ rm -rfv /etc/kubernetes/*
# 쿠버네티스의 설정 파일들이 저장되는 경로입니다. 이전 설치의 설정이 남아 있으면 새로 설치 시 충돌이 발생하므로 삭제합니다.

$ rm -rfv /var/lib/etcd
# 쿠버네티스의 내장 etcd 데이버베이스의 실제 데이터 디렉토리입니다. 이전 클러스터 데이터가 남아 있으면 새로 설치 시 충돌이 발생하므로 삭제합니다.

$ rm -rfv /etc/cni/net.d
# CNI 네트워크 플러그인 설정 파일 경로입니다. 이전 설정이 남아 있으면 새로 설치 시 충돌이 발생하므로 삭제합니다.

$ sudo rm -rfv /var/lib/containers
$ sudo rm -rfv /var/lib/containerd
# 컨테이너 런타임의 내부 데이터 저장소입니다. 이미지, 컨테이너 캐시, 네임스페이스 등의 정보 등이 들어있으므로 초기화 시 깨끗한 상태로 런타임을 재구성하기 위해 삭제합니다.

$ rm -rfv /etc/containers/*
# containerd / crio / podman 등에서 사용하는 전역 설정 파일 경로입니다. 정책 파일(policy.json), 레지스트리 설정(registries.conf) 등이 들어 있으므로 설정 초기화를 위해 삭제합니다.

$ rm -rfv ~/.kube/*
# 현재 사용자(보통 root)의 쿠버네티스 클라이언트 설정파일입니다.
kubeconfig, cache 정보등이 들어있으며 인증 정보가 남아있으면 새로 설치 시 충돌이 발생하므로 삭제합니다.

$ rm -rfv /var/lib/kubelet/*
# kubelet이 관리하는 pod, volume, plugin, Secret 등의 로컬 캐시 등의 정보가 남아있으면 새 클러스터에서 충돌이 발생할 수 있으므로 삭제합니다.

 

<<Accordiaon Install Ⅱ>>에서 이어집니다!

 

자유롭게 댓글을 달아주세요! 언제나 환영합니다.
기타 문의:  info@neoclova.co.kr
네오클로바 기술블로그 홈 바로가기: https://neoclova.net
네오클로바 홈페이지: http://neoclova.co.kr

 

 

Similar Posts

One Comment

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다