Quick Installation Guide on Server node
- 1 사전 점검
- 2 의존성 설치
- 2.1 Docker 설치
- 2.2 Docker Compose 설치
- 2.3 Docker log rotation 설정
- 2.4 Docker 서비스 실행
- 2.5 Git 설치
- 3 CloudHub Components 설치
- 3.1 Snetsystems/Sandbox 구동
- 3.1.1 Clone Snetsystems/Sandbox
- 3.1.2 Sandbox 실행
- 3.1.3 Sandbox 서비스 파일 생성 및 활성화
- 3.2 SaltStack 설치([On/Off]line 설치 겸용)
- 3.2.1 Predefinitions
- 3.2.2 Conda 설치
- 3.2.3 Download from Github release page
- 3.2.4 saltenv unpack
- 3.2.5 Config 설정
- 3.2.5.1 Salt-Master와 Salt-API의 Config 설정
- 3.2.5.2 Salt-Minion 설정
- 3.2.6 계정 생성 및 패스워드 설정
- 3.2.7 Register & Start Salt Services
- 3.2.7.1 Install Master + Minion + API Service
- 3.2.7.2 Install Minion Service Only
- 3.2.8 Download telegraf into salt file_roots path on salt-master
- 3.3 Install CloudHub Portal
- 3.4 Nginx 설치
- 3.4.1 Nginx 서버 설정
- 3.1 Snetsystems/Sandbox 구동
- 4 CloudHub Portal UI 초기 설정
사전 점검
Required Hardware Spec.
Single Server Node 기준
아래는 InfluxDB의 official 권고 사양을 참고한 normal workload(agent 당 하나의 어플리케이션을 모니터링)에 대한 기준 입니다.
또한, CH Portal + InfluxDB + Kapacitor + SaltStack Server가 한 대의 서버에 탑재되는 것으로 산정합니다.
단, 각 서버 및 에이전트 컴포넌트들(Introduction | Components Architecture)의 workload량 따라 가변적 입니다.
100 ~ 250 agent nodes: 8core, 16GB Ram
~ 500 agent nodes: 16core, 32GB Ram
~ 1000 agent nodes: 24core+, 48GB+ Ram
또한, Kapacitor(data processing component)의 경우는 job할당 개수나 프로세싱 부하에 따라 전체 workload는 차이가 클 수 있습니다.
운영 중 실제 부하량에 따라 각 컴포넌트를 분리-확장(Scale-out)하는 방법으로 권고 합니다.
OS
CentOS 7 x86_64 기준
CloudHub에서 사용되는 Port 및 방화벽 설정
개념도
참고 아래에서 화살표를 받는 쪽이 Port Listening 상태로 표기함.
External Ports: Internet 구간
443: CloudHub Portal에서 사용하는 웹 포트.
Internal Ports (Backend Server 간): Trusted Network 구간
8000 : Salt-API Server - CH Server와 데이터 송수신.
9094 : Kapacitor - InfluxDB와 데이터 송수신.
Intermediate Ports (Agent ↔︎ Backend Server 간): Semi-Trusted Network 구간
아래 포트들은 모니터링 대상 호스트들(MO: Managed Objects)과의 통신에 사용됩니다.
443 포트를 제외하고는 보안 위협이 될 수 있으므로,
Source IP 혹은 대역으로 ACL정책을 사용할 필요가 있습니다.
아래 설정 예시와 같이 firewalld filter를 사용하거나, 혹은 tcp_wrappers 등을 사용하여 hosts.allow, hosts.deny 등에 ACL을 설정할 수 있습니다.
(tcp_wrappers 설정 방법은 여기서는 다루지 않습니다. 필요한 경우, 인터넷 검색을 통하여 쉽게 사용법을 얻을 수 있으니 참고 바랍니다.)
4505-4506 : Salt-Master - Salt-Minion과 데이터 송수신.
8086 : InfluxDB - telegraf로부터 데이터 수신.
아래는 firewalld
설정 파일 예시이며,
주의 물리적인 보안 장비를 따로 사용하여 설정할 경우는 위 설명한 용도와 내용에 맞게 ACL을 설정하여 사용하여야 합니다.
<!-- /etc/firewalld/zones/public.xml -->
<?xml version="1.0" encoding="utf-8"?>
<zone>
<short>Public</short>
<description>For use in public areas.</description>
<service name="ssh"/>
<service name="dhcpv6-client"/>
<port protocol="tcp" port="443"/>
<rule family="ipv4">
<source address="xxx.xxx.xxx.0/24"/>
<port protocol="tcp" port="4505-4506"/>
<accept/>
</rule>
<rule family="ipv4">
<source address="xxx.xxx.xxx.xxx"/>
<port protocol="tcp" port="8000"/>
<accept/>
</rule>
<rule family="ipv4">
<source address="xxx.xxx.xxx.xxx"/>
<port protocol="tcp" port="8086"/>
<accept/>
</rule>
<rule family="ipv4">
<source address="xxx.xxx.xxx.xxx"/>
<port protocol="tcp" port="9094"/>
<accept/>
</rule>
</zone>
기 설치된 Docker 버전 확인 및 이전 버전 삭제
버전 : Docker version 18.09.4 이상
$ docker --version Docker version 18.09.4, build d14af54266
버전이 낮으면 이전 버전을 삭제 후 설치
이전 버전 삭제
$ yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
의존성 설치
Docker 설치
저장소 설정 및 추가
Install Docker Engine - Community
Docker Compose 설치
버전 : Docker Compose version 1.24 이상
버전이 낮거나 미 설치 시 Docker Compose [재]설치
파일 다운로드
실행 권한 부여
버전 확인
Docker log rotation 설정
Log 설정 파일 :
$ vim /etc/logrotate.d/docker-container
Docker 서비스 실행
Git 설치
CloudHub Components 설치
Snetsystems/Sandbox 구동
Clone Snetsystems/Sandbox
Sandbox 실행
Sandbox 서비스 파일 생성 및 활성화
install 명령어를 실행할 때 Working Directory로 지정하는 인자는 docker-compose 명령어가 실행되는 작업 디렉토리를 의미합니다. 따라서, 이 디렉토리 안에는 docker-compose.yml 파일이 있어야 합니다.
SaltStack 설치([On/Off]line 설치 겸용)
Predefinitions
설명의 편의를 위해, 아래와 같이 사전 정의된 경로를 사용하는 것을 전제로 합니다.
Conda Installed Path |
|
Conda 설치
위 첨부 파일에서 Miniconda3 배포 파일 다운로드 후,
아래 명령으로 적절히 용량이 큰 디스크 경로에 설치 권장.
conda 환경 변수 등록
conda 환경 변수 설정을 위해 conda init
명령어를 입력해야 합니다.
conda 기본 환경을 비활성화
Download from Github release page
https://github.com/snetsystems/salt/releases 에서 원하는 버전의 인스톨 파일들을 다운로드 합니다.
여기서는 “3001.4-15-g1d946bf
”버전으로 인스톨 할 것이며, 관련 파일들을 적당한 경로에 다운로드 합니다.
Conda 가상환경 압축 파일: 예>
saltenv-3001.4-15-g1d946bf-linux.tar.gz
install_salt_svc_for_conda_systemd.sh
saltenv unpack
/opt/miniconda3/envs/
에 saltenv-3001.4-15-g1d946bf-linux.tar.gz
를 압축 해제합니다.
그리고 나서, conda env list
로 확인하면 정상 등록되어 있을 것 입니다.
Config 설정
Salt-Master와 Salt-API의 Config 설정
Config path :
Salt-Minion 설정
Config path:
계정 생성 및 패스워드 설정
Register & Start Salt Services
$ ./install_salt_svc_for_conda_systemd.sh
를 실행하면 아래 예제와 같이 서비스가 설치되며, 자동 실행됩니다.
Install Master + Minion + API Service
서비스 명:
snet-salt-master.service
,snet-salt-minion.service
,snet-salt-api.service
Logrotate 설정.
Install Minion Service Only
서비스 명:
snet-salt-minion.service
Logrotate 설정.
Download telegraf into salt file_roots
path on salt-master
아래 링크에서 설치하고자 하는 버전을 다운로드 할 수 있습니다.
Download URL: https://github.com/snetsystems/telegraf/releases
아래 예제와 같이 지정된 경로에 원하는 버전의 rpm 파일을 다운로드 합니다.
Install CloudHub Portal
Download
아래 링크에서 설치하고자 하는 버전을 다운로드 할 수 있습니다.
Download URL: https://github.com/snetsystems/cloudhub/releases
Install
$ yum localinstall CloudHub-1.4.2.520d7bd.x86_64.rpm
Configure
$ vim /etc/systemd/system/multi-user.target.wants/cloudhub.service
localhost 인증서(cloudhub_self_signed.pem) 발급
<salt_token
> 발급
https://seversky.atlassian.net/wiki/spaces/CM/pages/254050538
노트 위 페이지 접근 권한이 없는 경우에는 Snetsystems CloudHub 팀에 문의/발급 받은 후,
아래 4번-k=salt:<salt_token>
에 기입하세요.$ vim /etc/default/cloudhub
Run
$ sudo systemctl {start|stop|restart} cloudhub
Nginx 설치
yum 외부 저장소 추가
/etc/yum.repos.d/ 경로에 nginx.repo 파일 추가
nginx.repo 파일
yum install 명령어를 이용해서 설치합니다.
Nginx 서버 설정
Nginx start
CloudHub Portal UI 초기 설정
Steps
로그인 창에서 Sign up(가입) 합니다.
로그인 후, 아래와 같이 초기 설정에서 단계 별로 적절한 값으로 설정합니다.
초기 설정으로는 InfluxDB가 설치된 host IP 정도만 맞게 설정하면 됩니다.
Connection Name는 Database(=Group) Name과 동일하면 편리합니다.Add Connection → Next를 반복 클릭하여 마무리 합니다.
아래 메뉴 화면에서 원하는 Group(Organization)을 추가합니다.
“Agent Configuration > Minions” 메뉴 화면에서 새로 등록된 minion을 Operation 버튼을 통해 “Accept”합니다.
“Agent Configuration > Collector Control”으로 이동 후, 설치하고자 하는 minion host를 선택하고 콤보박스에서 telegraf를 선택 후, INSTALL 합니다.
Group을 지정한 후,
[[outputs.influxdb]]
을 설정한 후, Test 후, Apply 합니다.그 외 필요한 설정은 Telegraf Configuration 항목을 참고 합니다.
또한, Plugins 목록의 “?” 버튼을 클릭하면 해당 Plugin의 기본 Configuration 방법에 대한 help 창이 출력 됩니다. Copy & Paste를 통해 편리하게 Configuration을 편집할 수 있습니다.
주의 사항
위 설정까지 완료하고 나면, InfluxDB에 동적으로 Database가 생성됩니다.
주의 Looking around(기능 둘러보기) | InfluxDB 의 “Retention Policy Duration” 지침을 반드시 따라야 합니다.