/
Installing Server Node

Installing Server Node

 

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>

Install Pre-required Packages

Setting InfluxDB and Kapacitor containers via Docker Compose

[주의] CloudHub와의 호환성 유지

CloudHub는 위 InfluxDB와 Kapacitor의 임의의 버전에는 상하위 호환되지 않을 수 있습니다.

반드시 CloudHub Release(https://github.com/snetsystems/cloudhub/releases)페이지에서 설치할 CloudHub 버전과 호환되는 InfluxDB와 Kapacitor 버전을 확인한 후, 해당 버전으로 설치해야 합니다.

예>
InfluxDB가 1.8.0, Kapacitor가 1.5.4라면,
아래 6번을 수행한 후, sandbox/.env 파일을 아래와 같이 수정합니다.
INFLUXDB_TAG=1.8.0
KAPACITOR_TAG=1.5.4
이후, 아래 7번을 수행합니다.

  1. 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
      • 저장소 설정 및 추가

      • Install Docker Engine - Community

  2. Docker log rotation 설정

    • logrotate을 사용하여 Docker Log를 관리 합니다.

    • Log 파일 경로 : /var/lib/docker/containers/*/*.log

    • Log 설정 파일 : $ vim /etc/logrotate.d/docker-container

      daily : 매일 log를 rotate 합니다.
      rotate 7 : 최대 log.1, log.2 등 7개의 파일을 보관합니다.
      missingok : log가 없는 경우 에러 없이 다음 rotate로 넘어갑니다.
      dateext : log 파일에 YYYYMMDD 형식의 확장자를 추가합니다.
      compress : 이전 log를 압축합니다.
      notifempty :  log 내용이 없으면 rotation 하지 않습니다.

  3. Docker 실행

  4. Docker Compose 설치 확인

    • 버전 : Docker Compose version 1.24 이상

    • 버전이 낮거나 미 설치 시 Docker Compose 설치

      • 파일 다운로드

      • 다운로드 파일에 권한 적용

      • 버전 확인

  5. Git 설치

  6. Snetsystems/Sandbox Download

  7. Sandbox 실행

Setting SaltStack for master

Yum install

  1. SaltStack 저장소 등록

  2. Salt-Master, Salt-API, Salt-Minion 설치

  3. Config 설정

    1. Salt-Master의 Config 와 Salt-API의 Config 파일을 설정해야 합니다.

    2. Salt-Master : $ vim /etc/salt/master.d/master.conf

    3. 주의 Host에 여러 Interface가 있을 경우 Salt-Minion과 연결 가능한 네트워크 Interface IP로 설정해야 합니다.
      ex) interface: 61.254.65.58
      아래 예와 같이 any(0.0.0.0)로 설정해도 master ↔︎ minion 간 통신은 문제가 없으나,
      CloudHub UI에서 원하지 않는 IP로 표시될 수 있습니다.

    4. Salt-Minion : $ vim /etc/salt/minion.d/minion.conf

  4. 계정 생성 및 패스워드 설정
    아래 추가된 password는 추후 salt-api authentication을 위한 pam_token를 발급 받는데 쓰이므로, 잘 기억해두어야 합니다.

  5. 서비스 시작

For off internet

  • 상단 설치 과정은 인터넷이 허용되는 환경에서의 Pre-required Packages 설치 방법입니다.

  • 인터넷이 안되는 폐쇄망 환경에서 Package Deployment on Private Network(Server)설치 방법 입니다.

Download telegraf into salt file_roots path on salt-master

아래 링크에서 설치하고자 하는 버전을 다운로드 할 수 있습니다.

Download URL: https://github.com/snetsystems/telegraf/releases

Install CloudHub Portal

Download

아래 링크에서 설치하고자 하는 버전을 다운로드 할 수 있습니다.

Download URL: https://github.com/snetsystems/cloudhub/releases

Install CloudHub admin portal package

  • 설치명령어

    • $ sudo yum localinstall cloudhub-0.9.1~17fe47a.x86_64.rpm

  • Log 파일

    • service로 데몬 실행 시 log file : /var/log/cloudhub

    • systemd로 데몬 실행 시 log file: /var/log/messages

  • Environment or Argument file path

    • 실행(help) 옵션

      • $ cloudhub -h

    • 파일 : /etc/default/cloudhub

    • Argument 설정: 예> 61.250.122.xx

  • 서비스 시작/정지/재시작

    • $ sudo systemctl {start|stop|restart} cloudhub

  • 서비스 확인

Enabling HTTPS on CloudHub Portal

  • http가 기본으로 설정되어 있으며 https로 변경 하려면 cloudhub.service 중단 후 설정파일을 수정하고 'systemctl daemon-reload'를 하여 서비스를 재시작 합니다.

 

Related content

Quick Installation Guide on Server node
Quick Installation Guide on Server node
More like this
Introduction
Introduction
More like this
CloudHub Deploy onto K8s(작성중)
CloudHub Deploy onto K8s(작성중)
More like this