Table of Contents | ||||
---|---|---|---|---|
|
사전 점검
Required Hardware Spec.
Info |
---|
Single Server Node 기준 아래는 InfluxDB의 official 권고 사양을 참고한 normal workload(agent 당 하나의 어플리케이션을 모니터링)에 대한 기준 입니다.
또한, Kapacitor(data processing component)의 경우는 job할당 개수나 프로세싱 부하에 따라 전체 workload는 차이가 클 수 있습니다. 운영 중 실제 부하량에 따라 각 컴포넌트를 분리-확장(Scale-out)하는 방법으로 권고 합니다. |
OS
CentOS 7 x86_64 기준
CloudHub에서 사용되는 Port 및 방화벽 설정
개념도
Status | ||||
---|---|---|---|---|
|
...
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 구간
Warning |
---|
아래 포트들은 모니터링 대상 호스트들(MO: Managed Objects)과의 통신에 사용됩니다. 아래 설정 예시와 같이 firewalld filter를 사용하거나, 혹은 tcp_wrappers 등을 사용하여 hosts.allow, hosts.deny 등에 ACL을 설정할 수 있습니다. |
4505-4506 : Salt-Master - Salt-Minion과 데이터 송수신.
8086 : InfluxDB - telegraf로부터 데이터 수신.
아래는 firewalld
설정 파일 예시이며,
Status | ||||
---|---|---|---|---|
|
...
language | xml |
---|
...
Table of Contents | ||||
---|---|---|---|---|
|
사전 점검
Required Hardware Spec.
Info |
---|
Single Server Node 기준 아래는 InfluxDB의 official 권고 사양을 참고한 normal workload(agent 당 하나의 어플리케이션을 모니터링)에 대한 기준 입니다.
또한, Kapacitor(data processing component)의 경우는 job할당 개수나 프로세싱 부하에 따라 전체 workload는 차이가 클 수 있습니다. 운영 중 실제 부하량에 따라 각 컴포넌트를 분리-확장(Scale-out)하는 방법으로 권고 합니다. |
OS
CentOS 7 x86_64 기준
CloudHub에서 사용되는 Port 및 방화벽 설정
개념도
Status | ||||
---|---|---|---|---|
|
...
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 구간
Warning |
---|
아래 포트들은 모니터링 대상 호스트들(MO: Managed Objects)과의 통신에 사용됩니다. 아래 설정 예시와 같이 firewalld filter를 사용하거나, 혹은 tcp_wrappers 등을 사용하여 hosts.allow, hosts.deny 등에 ACL을 설정할 수 있습니다. |
4505-4506 : Salt-Master - Salt-Minion과 데이터 송수신.
8086 : InfluxDB - telegraf로부터 데이터 수신.
아래는 firewalld
설정 파일 예시이며,
Status | ||||
---|---|---|---|---|
|
Code Block | ||
---|---|---|
| ||
<!-- /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.xxx0/24"/> <port protocol="tcp" port="80864505-4506"/> <accept/> </rule> <rule family="ipv4"> <source address="xxx.xxx.xxx.xxx"/> <port protocol="tcp" port="90948000"/> <accept/> </rule> </zone> |
기 설치된 Docker 버전 확인 및 이전 버전 삭제
...
버전 : Docker version 18.09.4 이상
Code Block | ||
---|---|---|
| ||
$ docker --version
Docker version 18.09.4, build d14af54266 |
버전이 낮으면 이전 버전을 삭제 후 설치
이전 버전 삭제
...
language | bash |
---|
...
<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 이상
Code Block language bash $ docker --version Docker version 18.09.4, build d14af54266
버전이 낮으면 이전 버전을 삭제 후 설치
이전 버전 삭제
Code Block language bash $ yum remove docker-client-latest \ docker-commonclient \ docker-client-latest \ docker-latest-logrotatecommon \ docker-logrotatelatest \ docker-engine
...
-latest-logrotate \ docker-logrotate \ docker-engine
의존성 설치
Docker 설치
저장소 설정 및 추가
Code Block language bash $ yum install -y yum-utils \ device-mapper-persistent-data \ lvm2 $ yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
Install Docker Engine - Community
Code Block language bash $ yum install docker-ce docker-ce-cli containerd.io
...
Code Block | ||
---|---|---|
| ||
$ cd {Sandbox 다운로드 할 디렉토리 이동} $ git clone https://github.com/snetsystems/sandbox.git # Server Single node mode로 구성하기 위해, 아래에서 etcd: 이하 configuration 부분 주석 또는 삭제. $ vim sandbox/docker-compose.yml ...(생략) #etcd: # # Full tag list: quay.io/coreos/etcd:v3.3.11 # #image: gcr.io/etcd-development/etcd:${ETCD_TAG} # image: quay.io/coreos/etcd:${ETCD_TAG} # entrypoint: /usr/local/bin/etcd ...(생략) |
Sandbox 실행
Code Block | ||
---|---|---|
| ||
$ cd sandbox
$ ./sandbox up
$ docker-compose ps
/usr/lib/python2.7/site-packages/requests/__init__.py:91: RequestsDependencyWarning: urllib3 (1.24.3) or chardet (2.2.1) doesn't match a supported version!
RequestsDependencyWarning)
Name Command State |
Sandbox 실행
Code Block | ||
---|---|---|
| ||
$ cd sandbox $ ./sandbox up $ docker-compose ps /usr/lib/python2.7/site-packages/requests/__init__.py:91: RequestsDependencyWarning: urllib3 (1.24.3) or chardet (2.2.1) doesn't match a supported version! RequestsDependencyWarning) Name Command State Ports -------------------------------------------------------------------------------------------------------------------------------------------------------------- sandbox_influxdb_1 /entrypoint.sh influxd Up 0.0.0.0:8082->8082/tcp,:::8082->8082/tcp, 0.0.0.0:8086->8086/tcp,:::8086->8086/tcp, Ports -------------------------------------------------------------------------------------------------------------------------------------------------------------- sandbox_influxdb_1 /entrypoint.sh influxd Up 0.0.0.0:8082->8082/tcp,:::8082->8082/tcp, 0.0.0.0:8086->8086/tcp,:::8086->8086/tcp, 0.0.0.0:8089->8089/udp,:::8089->8089/udp sandbox_kapacitor_1 /entrypoint.sh kapacitord Up 0.0.0.0:9094->9092/tcp,:::9094->9092/tcp |
Sandbox 서비스 파일 생성 및 활성화
Info |
---|
install 명령어를 실행할 때 Working Directory로 지정하는 인자는 docker-compose 명령어가 실행되는 작업 디렉토리를 의미합니다. 따라서, 이 디렉토리 안에는 docker-compose.yml 파일이 있어야 합니다. |
Code Block |
---|
$ cd <Sandbox 다운로드 받은 디렉토리>
$ ./sandbox install <Working Directory>
# 서비스 파일 확인
$ cat /etc/systemd/system/snet-sandbox.service
# 서비스 Enabled 상태 확인
$ systemctl status snet-sandbox |
SaltStack 설치([On/Off]line 설치 겸용)
Predefinitions
설명의 편의를 위해, 아래와 같이 사전 정의된 경로를 사용하는 것을 전제로 합니다.
...
Conda Installed Path
...
/opt/miniconda3
Conda 설치
Attachments | ||
---|---|---|
|
위 첨부 파일에서 Miniconda3 배포 파일 다운로드 후,
Info |
---|
다운로드 된 파일로 Offline Install 가능함. Linux의 경우 “Miniconda3-latest-Linux-x86_64.sh”을 다운로드 하는데, |
...
0.0.0.0:8089->8089/udp,:::8089->8089/udp
sandbox_kapacitor_1 /entrypoint.sh kapacitord Up 0.0.0.0:9094->9092/tcp,:::9094->9092/tcp |
Sandbox 서비스 파일 생성 및 활성화
Info |
---|
install 명령어를 실행할 때 Working Directory로 지정하는 인자는 docker-compose 명령어가 실행되는 작업 디렉토리를 의미합니다. 따라서, 이 디렉토리 안에는 docker-compose.yml 파일이 있어야 합니다. |
Code Block |
---|
$ cd <Sandbox 다운로드 받은 디렉토리>
$ ./sandbox install <Working Directory>
# 서비스 파일 확인
$ cat /etc/systemd/system/snet-sandbox.service
# 서비스 Enabled 상태 확인
$ systemctl status snet-sandbox |
SaltStack 설치([On/Off]line 설치 겸용)
Predefinitions
설명의 편의를 위해, 아래와 같이 사전 정의된 경로를 사용하는 것을 전제로 합니다.
Conda Installed Path |
|
Conda 설치
Attachments | ||
---|---|---|
|
위 첨부 파일에서 Miniconda3 배포 파일 다운로드 후,
Info |
---|
다운로드 된 파일로 Offline Install 가능함. Linux의 경우 “Miniconda3-latest-Linux-x86_64.sh”을 다운로드 하는데, |
아래 명령으로 적절히 용량이 큰 디스크 경로에 설치 권장.
Code Block | ||
---|---|---|
| ||
$ wget https://seversky.atlassian.net/wiki/download/attachments/1883635713/Miniconda3-latest-Linux-x86_64.sh
$ chmod 755 Miniconda3-latest-Linux-x86_64.sh # 쉘 실행 권한 부여
$ ./Miniconda3-latest-Linux-x86_64.sh -b -u -p /opt/miniconda3 # /opt/miniconda3에 설치 |
conda 환경 변수 등록
conda 환경 변수 설정을 위해 conda init
명령어를 입력해야 합니다.
Code Block |
---|
$ export PATH=/opt/miniconda3/bin:$PATH
$ conda init |
conda 기본 환경을 비활성화
Info |
---|
기본 환경을 비활성화 하려면 아래의 명령어를 입력해야 합니다. |
Code Block |
---|
$ conda config --set auto_activate_base false |
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
로 확인하면 정상 등록되어 있을 것 입니다.
Code Block | ||
---|---|---|
| ||
$ wget https://seversky.atlassian.net/wiki/download/attachments/1883635713/Miniconda3-latest-Linux-x86_64.sh
$ chmod 755 Miniconda3-latest-Linux-x86_64.sh # 쉘 실행 권한 부여
$ ./Miniconda3-latest-Linux-x86_64.sh -b -u -p /opt/miniconda3 # /opt/miniconda3에 설치 |
conda 환경 변수 등록
conda 환경 변수 설정을 위해 conda init
명령어를 입력해야 합니다.
Code Block |
---|
$ export PATH=/opt/miniconda3/bin:$PATH
$ conda init |
conda 기본 환경을 비활성화
Info |
---|
기본 환경을 비활성화 하려면 아래의 명령어를 입력해야 합니다. |
Code Block |
---|
$ conda config --set auto_activate_base false |
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
tar xzf saltenv-3001.4-15-g1d946bf-linux.tar.gz -C /opt/miniconda3/envs/ $ pwd /opt/miniconda3/envs $ ll total 219044 drwxr-xr-x. 13 root root 195 May 16 11:08 saltenv $ conda env list # conda environments: # base * /opt/miniconda3 saltenv /opt/miniconda3/envs/ |
...
그리고 나서, conda env list
로 확인하면 정상 등록되어 있을 것 입니다.
Code Block | ||
---|---|---|
| ||
$ tar xzf saltenv-3001.4-15-g1d946bf-linux.tar.gz -Csaltenv |
Warning |
---|
크로스 플랫폼 환경으로는 사용 불가. 예를 들어, linux packing → windows unpacking (X) |
Config 설정
Salt-Master와 Salt-API의 Config 설정
Config path :
Code Block |
---|
$ mkdir -p /opt/miniconda3/envs/ $ pwdsaltenv/master/etc/salt && vim /opt/miniconda3/envs $ ll total 219044 drwxr-xr-x. 13 root root 195 May 16 11:08 saltenv $ conda env list # conda environments: # base * /opt/miniconda3 saltenv /opt/miniconda3/envs/saltenv |
Warning |
---|
크로스 플랫폼 환경으로는 사용 불가. 예를 들어, linux packing → windows unpacking (X) |
Config 설정
Salt-Master와 Salt-API의 Config 설정
Config path :
Code Block |
---|
$ mkdir -p/saltenv/master/etc/salt/master |
Note |
---|
|
Code Block | ||
---|---|---|
| ||
## log_level ## # One of 'garbage', 'trace', 'debug', info', 'warning'(default), 'error', 'critical'. log_level: info root_dir: /opt/miniconda3/envs/saltenv/master/etc/salt && vim /opt/miniconda3/envs/saltenv/master/etc/salt/master |
Note |
---|
|
Code Block | ||
---|---|---|
| ||
## log_level ##
# One of 'garbage', 'trace', 'debug', info', 'warning'(default), 'error', 'critical'.
log_level: info
root_dir: /opt/miniconda3/envs/saltenv/master
##### Primary configuration settings #####
##########################################
# The address of the interface to bind to:
interface: x.x.x.x
# The tcp port used by the publisher:
publish_port: 4505
# Allow minions to push files to the master. This is disabled by default, for
# security purposes.
# file_recv: True
##### State System settings #####
##########################################
# The state system uses a "top" file to tell the minions what environment to
# use and what modules to use. The state_top file is defined relative to the
# root of the base environment as defined in "File Server settings" below.
state_top: top.sls
##### File Server settings #####
##########################################
# Salt runs a lightweight file server written in zeromq to deliver files to
# minions. This file server is built into the master daemon and does not
# require a dedicated port.
# The file server works on environments passed to the master, each environment
# can have multiple root directories, the subdirectories in the multiple file
# roots cannot match, otherwise the downloaded files will not be able to be
# reliably ensured. A base environment is required to house the top file.
file_roots:
base:
- /srv/salt/prod
# File Server Backend
#
# Salt supports a modular fileserver backend system, this system allows
# the salt master to link directly to third party systems to gather and
# manage the files available to minions. Multiple backends can be
# configured and will be searched for the requested file in the order in which
# they are defined here. The default setting only enables the standard backend
# "roots" which uses the "file_roots" option.
fileserver_backend:
- roots
##### Security settings #####
##########################################
# The external auth system uses the Salt auth modules to authenticate and
# validate users to access areas of the Salt system.
external_auth:
pam:
saltdev:
- .*
- '@runner'
- '@wheel'
- '@jobs'
# Allow eauth users to specify the expiry time of the tokens they generate.
# A boolean applies to all users or a dictionary of whitelisted eauth backends
# and usernames may be given.
token_expire_user_override:
pam:
- saltdev
##### API Server settings #####
##########################################
rest_cherrypy:
port: 8887
ssl_crt: /usr/lib/cloudhub/key/cloudhub_self_signed.crt
ssl_key: /usr/lib/cloudhub/key/cloudhub_self_signed.key
rest_cherrypy_ssl: True |
...
##### Primary configuration settings #####
##########################################
# The address of the interface to bind to:
interface: x.x.x.x
# The tcp port used by the publisher:
publish_port: 4505
# Allow minions to push files to the master. This is disabled by default, for
# security purposes.
# file_recv: True
##### State System settings #####
##########################################
# The state system uses a "top" file to tell the minions what environment to
# use and what modules to use. The state_top file is defined relative to the
# root of the base environment as defined in "File Server settings" below.
state_top: top.sls
##### File Server settings #####
##########################################
# Salt runs a lightweight file server written in zeromq to deliver files to
# minions. This file server is built into the master daemon and does not
# require a dedicated port.
# The file server works on environments passed to the master, each environment
# can have multiple root directories, the subdirectories in the multiple file
# roots cannot match, otherwise the downloaded files will not be able to be
# reliably ensured. A base environment is required to house the top file.
file_roots:
base:
- /srv/salt/prod
# File Server Backend
#
# Salt supports a modular fileserver backend system, this system allows
# the salt master to link directly to third party systems to gather and
# manage the files available to minions. Multiple backends can be
# configured and will be searched for the requested file in the order in which
# they are defined here. The default setting only enables the standard backend
# "roots" which uses the "file_roots" option.
fileserver_backend:
- roots
##### Security settings #####
##########################################
# The external auth system uses the Salt auth modules to authenticate and
# validate users to access areas of the Salt system.
external_auth:
pam:
saltenv:
- .*
- '@runner'
- '@wheel'
- '@jobs'
# Allow eauth users to specify the expiry time of the tokens they generate.
# A boolean applies to all users or a dictionary of whitelisted eauth backends
# and usernames may be given.
token_expire_user_override:
pam:
- saltenv
##### API Server settings #####
##########################################
rest_cherrypy:
port: 8887
ssl_crt: /usr/lib/cloudhub/key/cloudhub_self_signed.crt
ssl_key: /usr/lib/cloudhub/key/cloudhub_self_signed.key
rest_cherrypy_ssl: True |
Salt-Minion 설정
Info |
---|
Collector Server 설정 Minion ID를 "ch-collector"로 시작하도록 설정하면 Collector Server로 사용할 수 있으며, 이는 다음과 같이 활용됩니다:
|
Warning |
---|
|
Note |
---|
|
Config path:
Code Block |
---|
$ mkdir -p /opt/miniconda3/envs/saltenv/minion/etc/salt && vim /opt/miniconda3/envs/saltenv/minion/etc/salt/minion |
Code Block | ||
---|---|---|
| ||
## log_level ## # One of 'garbage', 'trace', 'debug', info', 'warning'(default), 'error', 'critical'. log_level: info root_dir: /opt/miniconda3/envs/saltenv/minion master: <master ip address> id: <유일한 minion id 설정해야 하며, 생략 시, hostname = minion id> |
계정 생성 및 패스워드 설정
Note |
---|
아래 추가된 saltdevsaltenv에 대한 password는 추후 salt-api authentication을 위한 pam_token를 발급 받는데 쓰이므로, 잘 기억해두어야 합니다. |
Code Block | ||
---|---|---|
| ||
$ useradd saltdevsaltenv $ passwd <password>saltenv Changing password for user saltdevsaltenv. New password: |
Register & Start Salt Services
...
Status | ||||
---|---|---|---|---|
|