728x90
반응형

aws-elb-reg

ELB에 등록 해제를 하는 스크립트

Init Script이므로 EC2인스턴스에 chkconfig on로 세팅하면 인스턴스 정지·기동시에 자동으로 할 수 있다.

 

Management Console로 설정

EC2->Instances->대상 인스턴스를 선택->Tags->Add/Edit Tags

 

Key / Value

elb 등록하는 ELB의 이름(복수의 경우 감마 분리)

kr-mi-ap, kr-mi-apws

서버에서 설정

boto라이브러리가 필요하므로 넣어 둔다.

# pip install boto
# yum install --enablerepo=test aws-elb-reg

/etc/sysconfig/aws-elb-reg 에 액세스 키와 비밀 키를 설정한다.

# AWS Security Credentials
AWS_API_ACCESS_KEY='XXXXXXXXXXXXXXXXXXXX'
AWS_API_SECRET_KEY='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
 
# ELB informational tag name
TAG_ELB='elb'

기동시에 자동 실행시킨다

chkconfig aws-elb-reg on
service aws-elb-reg start
 cat /etc/systemd/system/aws-elb-reg.service
[Unit]
Description=ELB Registration
After=network.target httpd.service

[Service]
Type=oneshot
RemainAfterExit=yes
EnvironmentFile=/etc/sysconfig/aws-elb-reg
#ExecStart=/usr/sbin/aws-elb-reg add $TAG_ELB $AWS_API_ACCESS_KEY $AWS_API_SECRET_KEY
#ExecStop=/usr/sbin/aws-elb-reg delete $TAG_ELB $AWS_API_ACCESS_KEY $AWS_API_SECRET_KEY
ExecStart=/bin/bash -l -c "/usr/sbin/aws-elb-reg start"
ExecStop=/bin/bash -l -c "/usr/sbin/aws-elb-reg stop"

[Install]
WantedBy=multi-user.target

 

동작 확인

service aws-elb-reg status

ELB의 이름이 출력되면 정상적으로 설정되어 있습니다.

 

 

sudo설정

ap 사용자로 aws-elb-reg을 조작할 수 있도록 한다. 

/etc/sudoers.d/01-test를 새로 작성하고 아래 4개를 기술한다.

Defaults:test !requiretty
test ALL=(ALL) NOPASSWD: /sbin/service aws-elb-reg start
test ALL=(ALL) NOPASSWD: /sbin/service aws-elb-reg stop
test ALL=(ALL) NOPASSWD: /sbin/service aws-elb-reg status

 

 

 

참고

# cat l7off.sh
#!/bin/sh
touch /tmp/service-check.stop
mv /home/www/staticweb/monitor/l7check.nhn  /home/www/staticweb/monitor/l7check.nhn.ori
sudo service aws-elb-reg stop


# cat l7on.sh
#!/bin/sh
mv /home/www/staticweb/monitor/l7check.nhn.ori  /home/www/staticweb/monitor/l7check.nhn
sudo service aws-elb-reg start
rm /tmp/service-check.stop
728x90
300x250

'IT > AWS' 카테고리의 다른 글

Amazon EC2 API Tools  (0) 2021.08.09
AWS Python에 의한 관리  (0) 2021.08.09
AWS CLI 기본 사용방법  (0) 2021.08.09
AWS CLI 로컬에서 S3로 복사  (0) 2021.08.09
AWS CLI 보안그룹 추가하기  (0) 2021.08.09
728x90
반응형

사전 준비

syntax하이라이트로 keepalived.conf의 체크 스크립트의 설치.

syntax하이라이트인 설정

기본적으로 vim으로 syntax가 안 들어서 syntax의 플러그 인을 도입한다.

일단 dot files에서 관리하지 않도록 하기 위해서 현시점에서는 /usr/share/vim files/syntax 아래에 직접 설치한다.

# wget https://raw.github.com/glidenote/keepalived-syntax.vim/master/syntax/keepalived.vim
 
/usr/share/vim/vim72/filetype.vim에 추가
" for keepalived
au BufRead,BufNewFile keepalived*.conf setlocal ft=keepalived
 

 

 

체크 스크립트

git clone

# cd /etc/opt
# git clone https://github.com/frsyuki/keepalived-check.git
 

설치

# cd keepalived-check
# ln -fs /etc/opt/keepalived-check/keepalived-check /opt/sbin/

 

 

사용법

# keepalived-check /etc/keepalived/keepalived.conf
728x90
300x250

'IT > Opensource' 카테고리의 다른 글

Redash 설치 및 세팅 (bitnami 버전)  (0) 2021.08.11
Redash 설치 및 세팅 (Docker Compose 버전)  (0) 2021.08.11
PMM 명령어  (0) 2021.07.30
PMM 삭제 방법  (0) 2021.07.04
Jenkins LDAP 인증 구성 시 TLS 에러  (0) 2021.07.04
728x90
반응형

keepalived

사전 준비

LVS의 사전 준비 참조

설치

yum에서 패키지 설치.

# yum install keepalived

설정

설정 파일은 /etc/keepalived/keepalived.conf.

로그의 설정

로그는 local3의 설비로 출력하도록 한다.
/etc/sysconfig/keepalived 편집

KEEPALIVED_OPTIONS="-D -S3"

로 변경.

 

iptables

vrrp의 프로토콜 통신을 대상 서버에서 허용할 필요가 있으므로 아래를 iptables의 설정에 추가.

# VRRP
-A INPUT -m state --state NEW -p vrrp -j ACCEPT

 

keepalived.conf

vrrp_script chk_haproxy {
    script      "/usr/bin/killall -0 haproxy"
    interval    2
    weight      20
}
 
## group을 만들면 vrrp_script가 잘 움직이지 않습니다.
#vrrp_sync_group VG {
#    group {
#        VI_bond1
##        VI_eth0
#    }
#    # 이벤트 발생시 스크립트 입니다.
#    notify_master   "/opt/sbin/ccn-keepalived_notify master"
#    notify_backup   "/opt/sbin/ccn-keepalived_notify backup"
#    notify_fault    "/opt/sbin/ccn-keepalived_notify fault"
#}
 
vrrp_instance VI_bond1 {
    state               BACKUP
    interface           bond1
    virtual_router_id   51
    garp_master_delay   5
    priority            100
    # vrrp 체크 간격입니다.
    advert_int          1
#    nopreempt
    virtual_ipaddress {
        219.112.248.20 dev bond1
    }
    track_script {
        chk_haproxy
    }
    # 이벤트 발생시 스크립트 입니다.
    notify_master   "/opt/sbin/ccn-keepalived_notify master"
    notify_backup   "/opt/sbin/ccn-keepalived_notify backup"
    notify_fault    "/opt/sbin/ccn-keepalived_notify fault"

 

환경

OS / keepalived

CentOS6 64bit
keepalived-1.2.7-3.el6.x86_64

 

Ubuntu에서 vrrp_sync_group 만들어도 잘 작동한다는 정보도 있고.

아래는 포인트.

  • vrrp_sync_group을 만들지 않는다
    • 설정하면 vrrp_script가 잘 동작하지 않음
    • 복수의 인터페이스를 설정할 수 없다
  • 2대의 노드를 모두 같은 설정으로 한다
    • state는 MASTER/BACKUP 어느 쪽이라도 좋다
    • priority도 마찬가지
    • nopreempt를 설정하지 않는다
728x90

이 설정으로 아래의 동작을 확인 후.

  • MASTER측이 정지했을 때 1대로 페일 오버
    • 복구 하더라도 페일 백은 하지 않는다
  • HAProxy의 프로세스가 다운되면 페일 오버
    • HAProxy가 높아지고도 페일 백은 하지 않는다

또한, 이벤트 발생 시의 스크립트는 Git으로 관리되고 있는 optsbin속에 들어 있습니다.

 

확인

# ip addr show bond1
11: bond1: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
    link/ether e0:db:55:12:bb:59 brd ff:ff:ff:ff:ff:ff
    inet 219.112.248.1/26 brd 219.112.248.63 scope global bond1
    inet 219.112.248.20/32 scope global bond1

등 VIP이 한쪽으로 표시되어 있으면 OK.
MASTER의 정지나 HAProxy의 정지로 이미 한쪽에 VIP가 이동되어야 문제 없이 동작하는 것

 

# watch -n1 ip addr show bond1

로 표시하며 전환한다고 알기 쉽다. 또 디버깅은 tcpdump에서 패킷을 확인하면 OK.

 

# tcpdump -s0 -pni bond1 host 224.0.0.18
tcpdump: listening on bond1, link-type EN10MB (Ethernet), capture size 65535 bytes
19:36:10.424813 IP (tos 0xc0, ttl 255, id 507, offset 0, flags [none], proto VRRP (112), length 40)
    219.112.248.2 > 224.0.0.18: VRRPv2, Advertisement, vrid 51, prio 120, authtype none, intvl 1s, length 20, addrs: 219.112.248.20
19:36:11.424928 IP (tos 0xc0, ttl 255, id 508, offset 0, flags [none], proto VRRP (112), length 40)
    219.112.248.2 > 224.0.0.18: VRRPv2, Advertisement, vrid 51, prio 120, authtype none, intvl 1s, length 20, addrs: 219.112.248.20

이로써 VRRP패킷만 확인할 수 있다. 주로 prio값을 주시하면 된다.

 

 

관리

설정 파일을 변경한 경우는 이하의 순서로.

  1. 체크 스크립트에서 확인
# keepalived-check /etc/keepalived/keepalived.conf
 
  1. 설정 리로드
# service keepalived reload

 

재부팅을 원하는 경우, MASTER 노드를 교체하고 싶지 않은 경우 아래와 같은 절차로 대기측을 정지시키고 실행한다(restart하면 MASTER가 전환되므로).

 

Standby를 정지

# service keepalived stop

MASTER  재기동

# service keepalived restart

 

Standby 기동

# service keepalived start
 

 

728x90
300x250

'IT > Haproxy' 카테고리의 다른 글

HAProxy 설치 및 설정  (0) 2021.08.09
728x90
반응형

HAProxy 설치는 OS 기본 yum으로 설치 가능

# yum install haproxy

패키지로 설치했을 경우의 설정 파일은 /etc/haproxy/haproxy.cfg. 오리지날 설정 파일의 복사를 해 두면 된다.

# cp /etc/haproxy/haproxy.cfg{,-orig}

 

 

haproxy.cfg

설정 단위

설정 파일에서기본 단위는 밀리 초

마이크로초. 1마이크로 초=1/1000000초
밀리 초. 1밀리 초=1/1000초.이것이 기본 단위.
초. 1s=1000ms
부분. 1m=60s=60000ms
때. 1h=60m=3600s=3600000ms
날. 1d=24h=1440m=86400s=86400000ms

섹션

설정 파일에는 섹션이 존재한다.

defaults <name>frontend <name>backend <name>listen <name>

다른 섹션에서 사용되는 공통의 디폴트 설정. 나중에 이어defaults섹션에서 값을 초기화할 수 있다.
클라이언트의 접속을 접수 소켓의 정의
프록시에서 접속 백 엔드 측의 서버의 정의
frontend와 backend의 설정을 정리하여 기술할 수 있다.TCP모드의 트래픽만으로 사용이라고 쓰기 쉽다.

name임의의 값을 사용할 수 있다.가독성을 높이도록 설정하는 게 권장.
사용할 수 있는 것은

  • 대 소문자(대문자와 소문자는 구별된다)
  • 숫자
  • '-' (dash), '_' (underscore) , '.' (dot), ':' (colon)

설정 키 워드

각 키워드가 어느 섹션에서 이용 가능한지의 목록.

global파라미터

설정 항목은 이하.

Globals - haproxy-docs - Global Parameters - HAProxy Documentation - Google Project Hosting

maxconnulimit-n

프로세스가 함께 받는 최대 연결 수.ulimit-n값은 이 값에 맞추어 자동적으로 조정된다.
프로세스가 오픈할 수 있는 최대 파일 수.자동으로 계산된다.

 

 

HAProxy의 status취득

HAProxy에서는 접속 상황 통계 보고서 화면이 존재한다.
설정함으로써 web페이지로 표시할 수 있다.
구체적으로는 아래를 haproxy.cfg에 추가한다.

#---------------------------------------------------------------------
# HAProxy 상태
#---------------------------------------------------------------------
listen hastats
    mode        http
    bind        127.0.0.1:8080
    bind        192.168.101.186:8080
    stats       enable
    stats       show-legends
    stats       uri /haproxy-status
  • hastats
    이름에 대해서는 임의
  • stats uri
    위상을 표시하는 URI. 자유롭게 설정할 수 있다.

이로써 127.0.0.1:8080/haproxy-status에 접속함으로써 정보를 받을 수 있게 된다.
Munin등으로 모니터링 하는 경우 이 설정으로 OK.
외부 참조하는 경우는 listen하는 IP주소의 bind설정을 추가하고 인증 설정한다.
참고로 127.0.0.1:8080/haproxy-status;csv로 접근한 경우는 CSV형식으로 데이터의 취득이 가능(Munin에서의 데이터 수집에서 URL등에서 사용한다).

728x90

 

haproxy.cfg 예

#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
    # syslog경유로(log는 최대 2개까지 기술 가능)
    log         log-0 local2
    # chroot 환경에서 움직입니다.
    chroot /var/lib/haproxy
    # pid화일이요
    pidfile /var/run/haproxy.pid
    # 이 값에 의해 오픈하는 최대 파일의 수가 자동으로 조정됩니다
    maxconn 30000
    # 동작시키는 유저와 그룹입니다.
    user haproxy
    group haproxy
    # 데몬으로서 움직입니다
    daemon
 
    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats
 
#---------------------------------------------------------------------
# 이 섹션의 설정 값은 이후 섹션에 설정되지 않는 경우의 값입니다
#---------------------------------------------------------------------
defaults
    # 디폴트tcp입니다
    mode                    tcp
    log                     global
    option                  dontlognull
    option                  forwardfor except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout check           5s
    maxconn                 300000
 
#---------------------------------------------------------------------
# http 프론트엔드 입니다.
#---------------------------------------------------------------------
frontend Connect-http
    mode                    http
    bind                    219.112.248.20:80
    bind                    192.168.101.186:80
    option                  httplog
    option                  http-server-close
    timeout http-request    10s
    timeout http-keep-alive 10s
    # backend
    default_backend         Connect-AP
 
#---------------------------------------------------------------------
# backend 서버 정의(for Connect AP)입니다.
#---------------------------------------------------------------------
backend Connect-AP
    mode        http
    balance     roundrobin
    option      httpchk /check.html
    server      msg-ap-0 192.168.101.133 check port 80
    server      msg-ap-1 192.168.101.135 check port 80
 
#---------------------------------------------------------------------
# HAProxy의 상태 입니다.
#---------------------------------------------------------------------
listen hastats
    mode    http
    bind    127.0.0.1:8080
    bind    192.168.101.186:8080
    stats   enable
    stats   show-legends
    stats   uri /haproxy-status

 

 

728x90
300x250

'IT > Haproxy' 카테고리의 다른 글

HAProxy와 keepalived와의 연계  (0) 2021.08.09
728x90
반응형

설치 확인

# rpm -qa | grep logrotate
logrotate-3.8.6-17.el7.x86_64

없을 때
yum instal logrotate

설정 경로

/etc/logrotate.d

각 설정 또는 예

# cat nginx
/var/log/nginx/*.log {
        daily
        missingok
        rotate 52
        compress
        delaycompress
        notifempty
        create 640 nginx adm
        sharedscripts
        postrotate
                if [ -f /var/run/nginx.pid ]; then
                        kill -USR1 `cat /var/run/nginx.pid`
                fi
        endscript
}



# cat munin-node
/var/log/munin-node/munin-node.log {
	missingok
	notifempty
	copytruncate
}



# cat syslog
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
    missingok
    sharedscripts
    postrotate
	/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript
}



# cat zabbix-agent
/var/log/zabbix/zabbix_agentd.log {
	weekly
	rotate 12
	compress
	delaycompress
	missingok
	notifempty
	create 0664 zabbix zabbix
}

 

옵션 참조

728x90
300x250
728x90
반응형

log 삭제용으로 tmpwatch를 사용 해 보았습니다.

tmpwatch의 install

$ sudo yum install tmpwatch

cron 설정

$ crontab -l
0 1 * * * /home/ansible/bin/del_scouter_data.sh

del_scouter_data.sh

#!/bin/sh
 
set -Ceu
 
tmpwatch -m 8640 /home/ansible/scouter/scouter/server/database

scouter의 disk를 늘렸으므로 약 1년, 8640시간까지 log를 삭제하지 않도록 변경

728x90
300x250

'IT > Scouter' 카테고리의 다른 글

Scouter-Slack Alert 구성  (0) 2021.08.09
Scouter Agent 설치 및 설정  (0) 2021.08.09
Scouter 서버 설치·설정  (0) 2021.08.09
Scouter 데이터베이스 삭제 및 다시 시작  (0) 2021.08.09
Scouter Server scouter.conf 설정 튜닝  (0) 2021.08.03
728x90
반응형

Scouter-Slack Noti 플러그 인 추가

  • 개요: Scouter에서 지정한 수준의 오류가 발생하면 Slack에 통보시키는 플러그 인
  • 순서:
    • Scouter-Slack플러그 인 파일을 Scouter서버 lib폴더에 카피
    • 플러그 인 파일:scouter-plugin-server-alert-slack.jar
cp ~/tmp/scouter-plugin-server-alert-slack.jar /[scouter home]/server/lib/
  • 아래의 의존 라이브러리를 Scouter서버 lib폴더에 카피
    • httpclient-4.5.2.jar  link
    • httpcore-4.4.4.jar   link
    • gson-2.6.2.jar        link
    • commons-codec-1.9.jar        link
    • commons-logging-1.2.jar      link
  • cp ~/tmp/lib/*.jar /[scouter home]/server/lib/
  • /[scouter home]/server/conf/scouter.conf에 Slack 설정 추가
# External Interface (Slack)
ext_plugin_slack_send_alert=true
ext_plugin_slack_debug=true
ext_plugin_slack_level=2            # log level (0 : INFO, 1 : WARN, 2 : ERROR, 3 : FATAL) - default 0
ext_plugin_slack_webhook_url=https://hooks.slack.com/services/T1D6ZTXGD/1234/123
ext_plugin_slack_channel=#alert         # #Channel or @user_id
ext_plugin_slack_botName=scouter
ext_plugin_slack_icon_emoji=:computer:
ext_plugin_slack_icon_url=https://www.test.com/header_logo.png
ext_plugin_slack_xlog_enabled=true
 
ext_plugin_elapsed_time_threshold=2500      # 응답시간 알림 기준치(ms)
ext_plugin_gc_time_threshold=5000           # GC Time의 알림 기준치(ms)
ext_plugin_thread_count_threshold=300       # Thread Count 알림 기준값
20170919 14:01:57 Scouter Server Version 1.7.3 2017-08-19 14:14 GMT
  ____                  _
 / ___|  ___ ___  _   _| |_ ___ _ __
 \___ \ / __/   \| | | | __/ _ \ '__|
  ___) | (_| (+) | |_| | ||  __/ |
 |____/ \___\___/ \__,_|\__\___|_|
 Open Source S/W Performance Monitoring
 Scouter version 1.7.3
20170919 14:01:58 Load Account Group File
20170919 14:01:58 Load Account File
20170919 14:01:58 Load Account Group File
20170919 14:01:58 udp listen 0.0.0.0:6100
20170919 14:01:58       udp_host=0.0.0.0
20170919 14:01:58       udp_port=6100
20170919 14:01:58       udp_buffer=65535
20170919 14:01:58       udp_so_rcvbuf=4194304
20170919 14:01:58 Load Account File
20170919 14:01:58       tcp_port=6100
20170919 14:01:58       cp_agent_so_timeout=60000
20170919 14:01:58       cp_client_so_timeout=8000
20170919 14:01:58 [BuiltInPlugin]scouter.plugin.server.alert.slack.SlackPlugin=>counter
20170919 14:01:58 [BuiltInPlugin]scouter.plugin.server.alert.slack.SlackPlugin=>object
20170919 14:01:58 [BuiltInPlugin]scouter.plugin.server.alert.slack.SlackPlugin=>alert
20170919 14:01:58 [BuiltInPlugin]scouter.plugin.server.alert.slack.SlackPlugin=>xlog

 

728x90
300x250

'IT > Scouter' 카테고리의 다른 글

Scouter log 로테이션  (0) 2021.08.09
Scouter Agent 설치 및 설정  (0) 2021.08.09
Scouter 서버 설치·설정  (0) 2021.08.09
Scouter 데이터베이스 삭제 및 다시 시작  (0) 2021.08.09
Scouter Server scouter.conf 설정 튜닝  (0) 2021.08.03
728x90
반응형

Scouter Agent 설정

trace_interservice_enabled=true
net_collector_ip=test서버             # Scouter 서버(Collector 서버)의 ip(dns)
obj_name=apcoin_9090
trace_http_client_ip_header_key=X-Real-IP
hook_method_patterns=jp.test.billing.*.*,org.springframework.data.redis.core.RedisTemplate.opsFor*        # Profile 페이지에서 보여주는 패키지
hook_method_exclude_patterns=jp.test.billing.common.*.*                                                   # Profile 페이지에서 보이지 않는 패키지

참고 페이지 : https://github.com/scouter-project/scouter/blob/master/scouter.document/main/Configuration.md

 

주의

Scouter 서버와 Agent, Scouter 클라이언트의 버전이 맞지 않을 경우 Profile 페이지의 상세 내용이 보이지 않을 수 있으므로 최신판으로 갱신 시 서버, Agent, 클라이언트를 모두 하시는 것을 추천

 

 

새로운 클라이언트를 만드는 방법

1. 기존 클라이언트를 복사하고 새로운 클라이언트 이름에 오른쪽 버튼을 클릭하여

3. "패키지 내용 표시"를 선택

4. Contents/Eclipse/scouter.ini를 편집

5. @user.home/.scouter_new_real 등 새로운 환경의 이름으로 함

 

-startup
../Eclipse/plugins/org.eclipse.equinox.launcher_1.3.201.v20161025-1711.jar
--launcher.library
../Eclipse/plugins/org.eclipse.equinox.launcher.cocoa.macosx.x86_64_1.1.401.v20161122-1740
-data
@user.home/.scouter_new_real
-vmargs
-Xms128m
-Xmx768m
-XX:+UseG1GC
-Dosgi.requiredJavaVersion=1.8
-XstartOnFirstThread
-Dorg.eclipse.swt.internal.carbon.smallFonts

6. 클라이언트를 시작하면 .scouter_new_real 파일이 사용자 홈 디렉토리에 생성됨

728x90
300x250

'IT > Scouter' 카테고리의 다른 글

Scouter log 로테이션  (0) 2021.08.09
Scouter-Slack Alert 구성  (0) 2021.08.09
Scouter 서버 설치·설정  (0) 2021.08.09
Scouter 데이터베이스 삭제 및 다시 시작  (0) 2021.08.09
Scouter Server scouter.conf 설정 튜닝  (0) 2021.08.03

+ Recent posts