VirtualBox 5.0.30

Fedora 23/24/25 모두 해봄 (VirtualBox 4 버전에서 Fedora 25 버전은 잘 안되서 VirtualBox 5 버전으로 업그레이드 함)


yum update    
yum install kernel-devel-$(uname -r)
yum install gcc make

shutdown -r now

cd /var/run/media/root/VBOXADDITIONS_4.3.40_110317/
./VBoxLinuxAdditions.run 

shutdown -r now

[한/영키 설정]

시스템 설정 -> 키보드 -> 바로가기 -> 자판입력 -> 다음입력 소스로전환 Alt 로 변경(Multi_key) 로 바뀜

   텍스트 입력창 -> Hangul(Fcitx) 선택 확인 및 다음 소스로 번환 Multi_key 확인

혹시나 한/영키 안되면 터미널

sudo setkeycodes 72 122 엔터



[JDK 1.8 설치]

sudo add-apt-repository ppa:webupd8team/java

sudo apt-get update

sudo apt-get install oracle-java8-installer

java -version



[Eclipse 이슈]

eclipse.ini

--launcher.GTK_version

2

--launcher.appendVmargs -- 이전

런처에 아이콘 물음표라면..

sudo cp 설치/icon.xpm /usr/share/pixmaps/eclipse.xpm



[Unity Tweak Tool]

Ubuntu Software 에서 Unity Tweak Tool 설치


[우분투 런처 위치 이동 및 사이즈 변경]

Unity Tweak Tool -> Launcher -> Appearance -> Bottom 클릭

     Icons size = 30


[우분투 Workspace 활성화]

Unity Tweak Tool -> Workspace Setting -> Workspace switcher 켬

Ctrl + Alt + ←, → 테스트


[우분투 Font 사이즈 변경]

Unity Tweak Tool -> Fonts -> 1 포인트 씩 내림 및 Window title Font는 8




#!/bin/sh SRC_FILE=/home/ci/sample/tomcat/domains/monitor_agent/sample-agent.jar # Tomcat WAS_ARR=( "tomcat@was01;user,admin" "tomcat@was02;user,admin" ) for WAS_INFO in "${WAS_ARR[@]}" do var=$(echo $WAS_INFO | awk -F";" '{print $1,$2}') set -- $var WAS=$1 DOMAIN_ARR_STR=$2 DOMAIN_ARR=$(echo $DOMAIN_ARR_STR | tr "," "\n") echo "ssh -q $WAS rm -Rf /usr/local/tomcat/domains/monitor_agent/sample-agent.jar" ssh -q $WAS rm -Rf /usr/local/tomcat/domains/monitor_agent/sample-agent.jar echo "scp -q -r $SRC_FILE $WAS:/usr/local/tomcat/domains/monitor_agent/." scp -q -r $SRC_FILE $WAS:/usr/local/tomcat/domains/monitor_agent/. for DOMAIN in $DOMAIN_ARR do echo "ssh -q $WAS cd '/usr/local/tomcat/domains/'$DOMAIN';' ./deploy.sh restart wait update 3" ssh -q $WAS cd '/usr/local/tomcat/domains/'$DOMAIN';' ./deploy.sh restart wait update 3 done done


VIP - 192.168.0.151


1번 서버 - 192.168.0.152

2번 서버 - 192.168.0.153


wget http://www.haproxy.org/download/1.5/src/haproxy-1.5.17.tar.gz

tar xvzf haproxy-1.5.17.tar.gz



uname -r


yum install wget gcc gcc-c++ autoconf automake make openssl openssl-devel pcre-devel zlib


make TARGET=linux2628 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1

make install


cp examples/haproxy.init /etc/init.d/haproxy

cp examples/examples.cfg /etc/haproxy/haproxy.cfg


chmod 755 /etc/init.d/haproxy



service haproxy start (or /etc/init.d/haproxy start)




defaults

    mode                    http

    log                     global

    #option                  httplog

    option                  dontlognull

    option http-server-close

    #option forwardfor       except 127.0.0.0/8

    option                  redispatch

    retries                 3

    timeout http-request    10s

    timeout queue           1m

    timeout connect         10s

    timeout client          1m

    timeout server          1m

    timeout http-keep-alive 10s

    timeout check           10s

    maxconn                 3000


# id

# 101 ~ 200 = HTTP

# 201 ~ 300 = TCP

# 501 ~ 600 = TEST



frontend searchWas

        bind 192.168.0.151:80

        option  httplog

        default_backend searchWas


backend searchWas

        id      101

        stats   enable

        stats   hide-version

        balance roundrobin

        # For Sticky Session

        appsession JSESSIONID len 30 timeout 3h request-learn prefix

        option  httplog

        option  httpchk GET /info.jsp

        option  http-server-close

        option  forwardfor

server search01 192.168.0.101:8080 check inter 2000 fastinter 500 downinter 5000 rise 3 fall 1

server search02 192.168.0.102:8080 check inter 2000 fastinter 500 downinter 5000 rise 3 fall 1


listen aqmp_real 192.168.0.151:5672

        id              201

        mode            tcp

        balance         roundrobin

        timeout client  3h

        timeout server  3h

        option          clitcpka

        server mq11 192.168.0.101:5672 check inter 5s rise 2 fall 3

        server mq21 192.168.0.101:5672 check inter 5s rise 2 fall 3


listen stats 0.0.0.0:40000       #Listen on all IP's on port 9000

    mode http

    balance

    timeout client 5000

    timeout connect 4000

    timeout server 30000


    #This is the virtual URL to access the stats page

    stats uri /haproxy_stats


    #Authentication realm. This can be set to anything. Escape space characters with a backslash.

    stats realm HAProxy\ Statistics


    #The user/pass you want to use. Change this password!

    #stats auth admin:admin


    #This allows you to take down and bring up back end servers.

    #This will produce an error on older versions of HAProxy.

    stats admin if TRUE


yum install keepalived



service rsyslog restart

service keepalived restart

service haproxy restart










[/etc/rsyslog.d/haproxy.conf]

local2.*    /var/log/haproxy.log





1번 서버 [/etc/keepalived/keepalived.conf]

! Configuration File for keepalived

global_defs {

        router_id HAProxy1

}


vrrp_script haproxy {

        script "killall -0 haproxy"

        interval 2

        weight 2

}



vrrp_instance VI_1 {

        debug 2

        virtual_router_id 50

        advert_int 1

        priority 101

        state MASTER

        interface eth0

        virtual_ipaddress {

                192.168.0.151 dev eth0

        }


        track_script {

                haproxy

        }


        notify_master "/etc/keepalived/master.sh"

        notify_backup "/etc/keepalived/backup.sh"

}


2번 서버 [/etc/keepalived/keepalived.conf]

! Configuration File for keepalived


global_defs {

        router_id HAProxy2

}


vrrp_script haproxy {

        script "killall -0 haproxy"

        interval 2

        weight 2

}



vrrp_instance VI_1 {

        debug 2

        virtual_router_id 50

        advert_int 1

        priority 100

        state BACKUP

        interface eth0

        virtual_ipaddress {

                192.168.0.151 dev eth0

        }


        track_script {

                haproxy

        }

}




[/etc/rsyslog.conf]


----------------------------


$ModLoad imudp

$UDPServerRun 514


----------------------------




[/etc/sysctl.conf]


----------------------------


# For keepalived - vrrp

net.ipv4.ip_nonlocal_bind=1


----------------------------





yum install rubygems

gem update

gem update --system


gem install haproxyctl


haproxyctl "enable server wasSearch/search01"

haproxyctl "disable server wasSearch/search01"


curl -d "s=search01&action=maint&b=#101" http://192.168.0.151:8080/haproxy_stats

curl -d "s=search01&action=ready&b=#101" http://192.168.0.151:8080/haproxy_stats


[참조] http://bryan.wiki/243

[참조] https://www.percona.com/blog/2014/10/03/haproxy-give-me-some-logs-on-centos-6-5/

apache 2.2.31

mod_jk 1.2.41

  • Activation
    • Active
    • Disabled
    • Stopped

배포 시  Activation 을 Disabled 시켰는데 이미 접속한 사용자들에 대해서는(쿠키?) 계속 들어와서 Stopped 바꾸니 WAS까지 들어온 요청은 처리 하되 그 이후 모든 요청은 막아줌


무중단 배포 시 WAS 중지 전 jkstatus 에서 Stopped 변경 후 약 3초간의 시간을 주고, 소스 배포 후 재기동 시킨 후 다시 Active 시킨다.

Stopped 후 3초, 5초 후 WAS 재기동 테스트 해보았다.


Servlet 처리 시간이 5초 케이스 만들어서  부하 준 상황에서 이중화 구조로 순차 재기동하니 502 에러 발생!!


더 안 전하게 하려면 Stopped 후 대기 시간을 늘리던가

아니면 WAS의 Running Thread 의 갯수를 명확히 파악 할 수있다면 Running Thread 갯수가 0일때까지 대기 후 WAS를 재기동하면 완벽 하겠군요.

웹서버는 직접적으로 관리를 하지 않아 설치 해볼일이 없었는데 테스트 시 필요해서 설치 해봤다.


[환경 2.4.x 케이스] 하단에 2.2.x 케이스도 있음

CentOS release 6.4 (Final) 64Bit

httpd-2.4.18

apr-1.5.2

apr-util-1.5.4

pcre-8.37

tomcat-connectors-1.2.41

tomcat 8.0.30



mkdir download
cd download/
wget http://apache.mirror.cdnetworks.com//httpd/httpd-2.4.18.tar.gz
tar xvzf httpd-2.4.18.tar.gz

wget http://mirror.apache-kr.org/apr/apr-1.5.2.tar.gz
tar xvzf apr-1.5.2.tar.gz

wget http://mirror.apache-kr.org/apr/apr-util-1.5.4.tar.gz
tar xvzf apr-util-1.5.4.tar.gz

mv apr-1.5.2 httpd-2.4.18/srclib/apr
mv apr-util-1.5.4 httpd-2.4.18/srclib/apr-util

wget http://sourceforge.net/projects/pcre/files/pcre/8.37/pcre-8.37.tar.gz/download
tar xvzf pcre-8.37.tar.gz
cd pcre-8.37
./configure --enable-unicode-properties=yes
make && make install

./configure \
--prefix=/usr/local/tomcat/apache-2.4.18 \
--enable-so \
--enable-rewrite \
--enable-proxy \
--enable-ssl \
--enable-mods-shared=all \
--enable-modules=shared \
--enable-mpms-shared=all \
--with-included-apr \
--with-included-apr-util
make && make install
/usr/local/tomcat/apache-2.4.18/bin/httpd -V
chown root:sys /usr/local/tomcat/apache-2.4.18/bin/httpd
chmod +s /usr/local/tomcat/apache-2.4.18/bin/httpd
/usr/local/tomcat/apache-2.4.18/httpd.conf
	ServerName localhost // 주석 해제 및 설정	
	LoadModule slotmem_shm_module modules/mod_slotmem_shm.so // 주석 해제


/usr/local/tomcat/apache-2.4.18/bin/httpd -k start
/usr/local/tomcat/apache-2.4.18/bin/httpd -k stop

wget http://apache.tt.co.kr/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.41-src.tar.gz
tar xvzf tomcat-connectors-1.2.41-src.tar.gz 
cd tomcat-connectors-1.2.41-src/native
./configure --with-apxs=/usr/local/tomcat/apache-2.4.18/bin/apxs
make && make install
ls -l /usr/local/tomcat/apache-2.4.18/modules/mod_jk.so

cp 톰켓롬/bin/tomcat-native.tar.gz .
tar xvzf tomcat-native.tar.gz
cd tomcat-native-1.1.33-src/jni/native

./configure --with-apr=/usr/local/tomcat/apache-2.4.18/bin/apr-1-config --prefix=/usr/local/tomcat/apache-tomcat-8.0.30
make && make install

톰캣 설정
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CATALINA_HOME/lib
export LD_LIBRARY_PATH


Include conf/extra/mod_jk.conf	

vi /usr/local/tomcat/apache-2.4.18/conf/httpd.conf
	# Virtual hosts
	Include conf/extra/httpd-vhosts.conf					// 주석 해제	
	# Various default settings
	Include conf/extra/httpd-default.conf					// 주석 해제
	Include conf/extra/mod_jk.conf	

	
vi vi /usr/local/tomcat/apache-2.4.18/conf/extra/mod_jk.conf	
	# -----------------------------------------
	#       DAK TEST Apache Httpd WebServer
	#
	#       contact : ddakker@ddakker.com
	# -----------------------------------------

	# Load mod_jk module
	# Update this path to match your modules location
	LoadModule jk_module          modules/mod_jk.so

	# Where to find workers.properties
	# Update this path to match your conf directory location (put workers.properties next to httpd.conf)
	JkWorkersFile conf/extra/workers.properties

	# Where to put jk logs
	# Update this path to match your logs directory location (put mod_jk.log next to access_log)
	JkLogFile     "|logs/mod_jk.log logs/mod_jk.log_%m%d%Y"

	JkShmFile     logs/mod_jk.shm

	# Set the jk log level [debug/error/info]
	JkLogLevel    info

	# Select the log format
	JkLogStampFormat "[%Y-%m-%d %H:%M:%S] "
	# JkOptions indicate to send SSL KEY SIZE,
	JkOptions     +ForwardKeySize +ForwardURICompat -ForwardDirectories +ForwardURICompatUnparsed

	# JkRequestLogFormat set the request format
	JkRequestLogFormat     "%w %V %T %R %s %U"

	# Send everything for context /examples to worker named worker1 (ajp13)
	JkMount  /jkstatus* jkstatus

	<location /jkstatus>
		JkMount jkstatus
		Order Deny,Allow
		Allow from 127.0.0.1
		Allow from 192
		Deny from all
	</location>

vi /usr/local/tomcat/apache-2.4.18/conf/extra/workers.properties
	# -----------------------------------------
	#       DAK TEST Apache Httpd WebServer
	#
	#       contact : ddakker@naver.com
	# -----------------------------------------

	worker.list=jkstatus,testcluster

	# Templates
	worker.template.type=ajp13
	worker.template.maintain=60
	worker.template.lbfactor=1
	worker.template.ping_mode=A
	worker.template.ping_timeout=2000
	worker.template.prepost_timeout=2000
	worker.template.socket_timeout=300
	worker.template.socket_connect_timeout=2000
	worker.template.socket_keepalive=true
	worker.template.connection_pool_timeout=300
	worker.template.connect_timeout=10000
	worker.template.recovery_options=7
	
	
	
	worker.testcluster11.reference=worker.template
	worker.testcluster11.host=192.168.0.2
	worker.testcluster11.port=9401
	
	worker.testcluster21.reference=worker.template
	worker.testcluster21.host=192.168.0.3
	worker.testcluster21.port=9401
	
	
	# -------- LB ------------
	
	
	worker.testcluster.type=lb
	worker.testcluster.method=Session
	worker.testcluster.sticky_session=True
	worker.testcluster.balance_workers=testcluster11,testcluster21
	
	
	
	worker.jkstatus.type=status
	
vi httpd-vhosts.conf
	NameVirtualHost *:80


	# Vhost - Tomcat Service
	Include conf/extra/vhost-tomcat.conf

vi vhost-tomcat.conf
	<virtualhost *:80>
		DocumentRoot "/data/webroot/test-cluster/webapp"

		ServerName testcluster.ddakker.pe.kr
		ServerAlias cluster.ddakker.pe.kr

		#ErrorLog "|/usr/sbin/cronolog /usr/local/tomcat/apache2/logs/cluster.ddakker.pe.kr-error_log.%m%d%Y"
		#CustomLog "|/usr/sbin/cronolog/usr/local/tomcat/apache2/logs/cluster.ddakker.pe.kr-access_log.%m%d%Y" combined
		DirectoryIndex /index.html /index.jsp

		JkUnMount   /*.js   testcluster
		JkUnMount   /*.css  testcluster
		JkUnMount   /*.jpg  testcluster
		JkUnMount   /*.png  testcluster
		JkUnMount   /*.gif  testcluster
		JkUnMount   /*.htm  testcluster
		JkUnMount   /*.html testcluster
		JkUnMount   /*.ico  testcluster
		JkUnMount   /*.eot  testcluster
		JkUnMount   /*.woff testcluster
		JkMount     /*      testcluster
		JkMount  /jkstatus* jkstatus

		<directory "/data/webroot/test-cluster/webapp">
                		Options FollowSymLinks
				AllowOverride None
				<ifversion < 2.3>
					Order allow,deny
					Allow from all
				</ifversion>
				<ifversion >= 2.3>
					Require all granted
				</ifversion>
		</directory>
	</VirtualHost>

	




[환경 2.2.x 케이스]

CentOS release 6.4 (Final) 64Bit

httpd-2.2.31

tomcat-connectors-1.2.41



wget http://apache.mirror.cdnetworks.com/httpd/httpd-2.2.31.tar.gz
tar xvzf httpd-2.2.31.tar.gz
cd httpd-2.2.31
./configure --prefix=/usr/local/tomcat/apache2
make
make install

chown root:sys /usr/local/tomcat/apache2/bin/httpd
chmod +s /usr/local/tomcat/apache2/bin/httpd

/usr/local/tomcat/apache2/bin/httpd -k start
/usr/local/tomcat/apache2/bin/httpd -k stop

wget http://apache.tt.co.kr/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.41-src.tar.gz
tar xvzf tomcat-connectors-1.2.41-src.tar.gz 
cd tomcat-connectors-1.2.41-src/native
./configure --with-apxs=/usr/local/tomcat/apache2/bin/apxs
make
make install

ls -l /usr/local/tomcat/apache2/modules/mod_jk.so
cd /usr/local/tomcat/apache2/conf
vi httpd.conf
	# Virtual hosts
	Include conf/extra/httpd-vhosts.conf
	
	# Various default settings
	Include conf/extra/httpd-default.conf
	
	Include conf/extra/mod_jk.conf	

vi /extra/mod_jk.conf	
	# -----------------------------------------
	#       DAK TEST Apache Httpd WebServer
	#
	#       contact : ddakker@ddakker.com
	# -----------------------------------------

	#LoadModule jk_module modules/mod_jk.so
	#
	#	JkWorkersFile    conf/extra/workers.properties
	#	JkLogFile        logs/mod_jk.log
	#	JkLogLevel       info
	#
	# Load mod_jk module
	# Update this path to match your modules location
	LoadModule jk_module          modules/mod_jk.so

	# Where to find workers.properties
	# Update this path to match your conf directory location (put workers.properties next to httpd.conf)
	JkWorkersFile conf/extra/workers.properties

	# Where to put jk logs
	# Update this path to match your logs directory location (put mod_jk.log next to access_log)
	JkLogFile     "|logs/mod_jk.log logs/mod_jk.log_%m%d%Y"

	JkShmFile     logs/mod_jk.shm

	# Set the jk log level [debug/error/info]
	JkLogLevel    info

	# Select the log format
	JkLogStampFormat "[%Y-%m-%d %H:%M:%S] "
	# JkOptions indicate to send SSL KEY SIZE,
	JkOptions     +ForwardKeySize +ForwardURICompat -ForwardDirectories +ForwardURICompatUnparsed

	# JkRequestLogFormat set the request format
	JkRequestLogFormat     "%w %V %T %R %s %U"

	# Send everything for context /examples to worker named worker1 (ajp13)
	JkMount  /jkstatus* jkstatus

	<location /jkstatus>
		JkMount jkstatus
		Order Deny,Allow
		Allow from 127.0.0.1
		Allow from 192
		Deny from all
	</location>
	
vi extra/workers.properties
	# -----------------------------------------
	#       DAK TEST Apache Httpd WebServer
	#
	#       contact : ddakker@naver.com
	# -----------------------------------------

	worker.list=jkstatus,testcluster

	# Templates
	worker.template.type=ajp13
	worker.template.maintain=60
	worker.template.lbfactor=1
	worker.template.ping_mode=A
	worker.template.ping_timeout=2000
	worker.template.prepost_timeout=2000
	worker.template.socket_timeout=300
	worker.template.socket_connect_timeout=2000
	worker.template.socket_keepalive=true
	worker.template.connection_pool_timeout=300
	worker.template.connect_timeout=10000
	worker.template.recovery_options=7
	
	
	
	worker.testcluster11.reference=worker.template
	worker.testcluster11.host=192.168.0.2
	worker.testcluster11.port=9401
	
	worker.testcluster21.reference=worker.template
	worker.testcluster21.host=192.168.0.3
	worker.testcluster21.port=9401
	
	
	# -------- LB ------------
	
	
	worker.testcluster.type=lb
	worker.testcluster.method=Session
	worker.testcluster.sticky_session=True
	worker.testcluster.balance_workers=testcluster11,testcluster21
	
	
	
	worker.jkstatus.type=status
	
vi httpd-vhosts.conf
	NameVirtualHost *:80


	# Vhost - Tomcat Service
	Include conf/extra/vhost-tomcat.conf

vi vhost-tomcat.conf
	<virtualhost *:80>
		DocumentRoot "/data/webroot/test-cluster/webapp"

		ServerName testcluster.ddakker.pe.kr
		ServerAlias cluster.ddakker.pe.kr

		#ErrorLog "|/usr/sbin/cronolog /usr/local/tomcat/apache2/logs/cluster.ddakker.pe.kr-error_log.%m%d%Y"
		#CustomLog "|/usr/sbin/cronolog/usr/local/tomcat/apache2/logs/cluster.ddakker.pe.kr-access_log.%m%d%Y" combined
		DirectoryIndex /index.html /index.jsp

		JkUnMount   /*.js   testcluster
		JkUnMount   /*.css  testcluster
		JkUnMount   /*.jpg  testcluster
		JkUnMount   /*.png  testcluster
		JkUnMount   /*.gif  testcluster
		JkUnMount   /*.htm  testcluster
		JkUnMount   /*.html testcluster
		JkUnMount   /*.ico  testcluster
		JkUnMount   /*.eot  testcluster
		JkUnMount   /*.woff testcluster
		JkMount     /*      testcluster
		JkMount  /jkstatus* jkstatus

		<directory "/data/webroot/test-cluster/webapp">
                		Options FollowSymLinks
				AllowOverride None
				<ifversion < 2.3>
					Order allow,deny
					Allow from all
				</ifversion>
				<ifversion >= 2.3>
					Require all granted
				</ifversion>
		</directory>

	</virtualhost>

vi /usr/local/tomcat/webroot/test-cluster/webapp/index.html
	

index.html

vi /usr/local/tomcat/webroot/test-cluster/webapp/info.jsp <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@page import="java.net.InetAddress"%> <% String serverIP = ""; try{ serverIP = InetAddress.getLocalHost().getHostAddress(); serverIP = serverIP.substring(serverIP.lastIndexOf(".")+1); }catch(Exception e){} String info = request.getServerName() + ", " + serverIP + ", " + System.getProperty("jvmRoute"); out.print(info); //System.out.println(info); %> vi /etc/hosts 127.0.0.1 localhost testcluster.ddakker.pe.kr wget http://testcluster.ddakker.pe.kr/index.html wget http://testcluster.ddakker.pe.kr/info.jsp wget http://testcluster.ddakker.pe.kr/jkstatus



[tomcat & tomcat-native 만 설치]

wget http://mirror.apache-kr.org/apr/apr-1.5.2.tar.gz
tar xvzf apr-1.5.2.tar.gz
./configure
make & make install

wget http://mirror.apache-kr.org/apr/apr-util-1.5.4.tar.gz
tar xvzf apr-util-1.5.4.tar.gz
./configure --with-apr=/usr/local/apr
make & make install

tar xvzf tomcat-native.tar.gz
./configure --with-apr=/usr/local/apr/bin/apr-1-config
make && make install

LD_LIBRARY_PATH=/usr/local/apr/lib
export LD_LIBRARY_PATH

Redis Cluster 셈플링 좀 하다보니 Cluster 기능이 Ruby 기반으로 작동하고 있네..


Ruby 를 안 해본 입장에서 설치 좀 해보려니 좀 삽질..


[환경]

CentoOs 5.9 64Bit


해당 환경에서 yum으로 설치해보니 ruby 1.8.5가 설치되는 것 같고, Gem이 포함되지 않은 버전이여서 Gem도 수동으로 설치하고.. 안되서 버전 이것저것 삽질을 하다가 RVM 발견..


아주 간단하게 설치..


[RVM 설치] http://rvm.io/

설명대로 설치

$ gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
$ \curl -sSL https://get.rvm.io | bash -s stable

[RUBY 설치]

$ rvm install 2.2.0

Gem 포함 설치


* Redis Cluster 구동해보려 하니 ruby 관련 redis가 필요하단다.


[RUBY Redis Lib 설치]

$ gem install redis


* /usr/bin/env: ruby: No such file or directory .. 없단다..

ruby 실행 파일을 /usr/bin/ruby 에 심볼릭 링크 걸어 해결

ln -s /usr/local/rvm/rubies/default/bin/ruby /usr/bin/ruby


Redis Cluster 실행 성공!!

VMWare 기반 Mint 해상도 설정 리스트에 존재 하지 않는 사이즈로 변경하기



$ cvt 1920 1080 엔터

--------------------------------------------------------------------------------------------------------
# 1920x1080 59.96 Hz (CVT 2.07M9) hsync: 67.16 kHz; pclk: 173.00 MHz
Modeline "1920x1080_60.00"  173.00  1920 2048 2248 2576  1080 1083 1088 1120 -hsync +vsync
--------------------------------------------------------------------------------------------------------

위에 나온 정보 입력
$ xrandr --newmode "1920x1080_60.00"  173.00  1920 2048 2248 2576  1080 1083 1088 1120 -hsync +vsync
$ xrandr
--------------------------------------------------------------------------------------------------------
Screen 0: minimum 1 x 1, current 800 x 600, maximum 8192 x 8192
Virtual1 connected 800x600+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
   800x600        60.0*+   60.3 
생략
--------------------------------------------------------------------------------------------------------
$ xrandr --addmode Virtual1 "1920x1080_60.00"

# Virtuals1 부분은 xrandr 명령어 처보면 확인 가능 VGA, DVI, HDMI 등??

Tomcat Multi Instance로 설정 하려면, 기동관련을 위해서 Shell도 만져야 하고, server.xml 도 만져야 한다.


그것을 Script에서만 하면 좋을것 같아서 고민 중, Tomcat에 적용해 보았다.


[env.sh]

#!/bin/sh

DATE=`date +%Y%m%d_%H%M%S`

export JAVA_HOME=/usr/local/java8
export PATH=$PATH:$JAVA_HOME/bin

# Apache Balance Workers 값(WAS별 유니크)
HTTPD_LB_WORKER_NM=testcluster
HTTPD_WORKER_NM=$HTTPD_LB_WORKER_NM'11'
PROJECT_NM_PREPIX=
PROJECT_NM=test-cluster
WAR_PATH=/usr/local/tomcat/webroot/$PROJECT_NM_PREPIX$PROJECT_NM
WEB_ROOT=$WAR_PATH/webapp

export HTTPD_WORKER_NM
export PROJECT_NM
export WAR_PATH
export WEB_ROOT

# 동일 머신에서 중복되지 않게(01~99: 최대 90개)
export PORT_OFFSET=1

let SHUTDOWN_PORT=9100+$PORT_OFFSET
let HTTP_PORT=9200+$PORT_OFFSET
let HTTPS_PORT=9300+$PORT_OFFSET
let AJP_PORT=9400+$PORT_OFFSET

export SHUTDOWN_PORT
export HTTP_PORT
export HTTPS_PORT
export AJP_PORT


export CATALINA_HOME=/usr/local/tomcat/apache-tomcat
export CATALINA_BASE=/usr/local/tomcat/domains/$HTTPD_LB_WORKER_NM

# JVM Options : Server
export JAVA_OPTS="-server $JAVA_OPTS"

# JVM Options : Memory
export JAVA_OPTS="$JAVA_OPTS -Xms2048m -Xmx2048m -Xss256k"
# jdk7 이하
#export JAVA_OPTS="$JAVA_OPTS -XX:PermSize=256m -XX:MaxPermSize=256m"

export JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCTimeStamps "
export JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCDetails "
export JAVA_OPTS="$JAVA_OPTS -Xloggc:$CATALINA_BASE/logs/gc_$DATE.log "
export JAVA_OPTS="$JAVA_OPTS -XX:+UseParallelGC "
export JAVA_OPTS="$JAVA_OPTS -XX:+UseParallelOldGC "

export JAVA_OPTS="$JAVA_OPTS -XX:+ExplicitGCInvokesConcurrent "
export JAVA_OPTS="$JAVA_OPTS -XX:+HeapDumpOnOutOfMemoryError "
export JAVA_OPTS="$JAVA_OPTS -XX:HeapDumpPath=$CATALINA_BASE/logs/heapDump-$DATE.hprof "

export JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true"
export JAVA_OPTS="$JAVA_OPTS -Dsun.rmi.dgc.client.gcInterval=0x7FFFFFFFFFFFFFFE"
export JAVA_OPTS="$JAVA_OPTS -Dsun.rmi.dgc.server.gcInterval=0x7FFFFFFFFFFFFFFE"
export JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true"



export JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8"
export JAVA_OPTS="$JAVA_OPTS -DjvmRoute=$HTTPD_WORKER_NM"
export JAVA_OPTS="$JAVA_OPTS -Dtomcat.web.root=$WEB_ROOT"
export JAVA_OPTS="$JAVA_OPTS -Dtomcat.port.shutdown=$SHUTDOWN_PORT"
export JAVA_OPTS="$JAVA_OPTS -Dtomcat.port.http=$HTTP_PORT"
export JAVA_OPTS="$JAVA_OPTS -Dtomcat.port.https=$HTTPS_PORT"
export JAVA_OPTS="$JAVA_OPTS -Dtomcat.port.ajp=$AJP_PORT"

# WEB JK_MOD 정보
export HTTPD_HOSTS=( "192.0.0.100" )
export LB_WORKER=$HTTPD_LB_WORKER_NM
export WORKER=$HTTPD_WORKER_NM

#HTTPD_HOSTS_STR=""
for i in "${HTTPD_HOSTS[@]}"
do
        HTTPD_HOSTS_STR="${HTTPD_HOSTS_STR}${i},"
done

echo "============================================================="
echo "   Apache Tomcat 8.x                     ddakker@naver.com   "
echo "-------------------------------------------------------------"
$CATALINA_HOME/bin/./version.sh
echo "-------------------------------------------------------------"
echo "PROJECT_NM=$PROJECT_NM"
echo "WORKER_NM=$HTTPD_WORKER_NM"
echo "WEB_ROOT=$WEB_ROOT"
echo "SHUTDOWN_PORT=$SHUTDOWN_PORT"
echo "HTTP_PORT=$HTTP_PORT"
echo "HTTPS_PORT=$HTTPS_PORT"
echo "AJP_PORT=$AJP_PORT"
echo "HTTPD_HOSTS=$HTTPD_HOSTS_STR"
echo "============================================================="


[start.sh]

#!/bin/sh


. ./env.sh

# 임시 파일 삭제
rm -Rf $CATALINA_BASE/temp/*
# 로그 파일 관리
rm -Rf $CATALINA_BASE/logs/catalina.out


if [ "`ps -eaf | grep java | grep "$CATALINA_BASE "`" != "" ]; then
        echo "Tomcat SERVER - $PROJECT_NM is already RUNNING..."
        exit;
fi

if [ ! -d "$WEB_ROOT" ];
then
        mkdir -p $WAR_PATH
                mkdir -p $WEB_ROOT
                mkdir -p $WAR_PATH/../logs/$HTTPD_LB_WORKER_NM
fi


cd $CATALINA_HOME/bin

./startup.sh


if [ -z "`ps -eaf | grep java | grep "$CATALINA_BASE "`" ]; then
        echo "Error!!! Cannot start tomcat server."
fi


IS_WAIT=$1
IS_JK_CTL=$2

if [ "$IS_WAIT" == "wait" ]; then
        while [ `netstat -an | grep :$HTTP_PORT | grep LISTEN | wc | awk '{print $1}'` != 1 ]; do
                echo -ne "."
                sleep 1
        done

        echo "Check WAS Context Ready http://localhost:$HTTP_PORT ..."

        until [ "`curl --silent -o --show-error --connect-timeout 1 -w "%{http_code}\n" http://localhost:$HTTP_PORT | egrep '200|301|302|500'`" != "" ];
        do
                echo -ne "."
                sleep 1
        done
fi



if [ "$IS_JK_CTL" == "update" ]; then
        for HTTPD_HOST in "${HTTPD_HOSTS[@]}"
        do
                echo "<<< Turn-ON Worker $WORKER in $LB_WORKER [$HTTPD_HOST]"
                if [ "`curl --silent --show-error --connect-timeout 1 -I \"http://$HTTPD_HOST/jkstatus/?cmd=update&w=$LB_WORKER&sw=$WORKER&vwa=0\" | egrep '404|500|503'`" != "" ]
                then
                        echo "<<< Error"
                else
                        echo "<<< Done"
                fi
        done
fi


[shutdown.sh]

#!/bin/sh
 
 . ./env.sh

IS_WAIT=$1
IS_JK_CTL=$2
JK_CTL_AFTER_DELAY=$3
PID=`ps -ef | grep java | grep "$CATALINA_BASE " | awk '{print $2}'`

if [ e$PID == "e" ]
then
        echo "NOT RUNNING!!!"
        exit;
fi

if [ "$JK_CTL_AFTER_DELAY" == "" ]; then
        JK_CTL_AFTER_DELAY=0
fi

if [ "$IS_JK_CTL" == "update" ]; then
        for HTTPD_HOST in "${HTTPD_HOSTS[@]}"
        do
                echo "<<< Turn-OFF Worker $WORKER in $LB_WORKER [$HTTPD_HOST]"
                #if [ "`curl --silent --show-error --connect-timeout 1 -I \"http://$HTTPD_HOST/jkstatus/?cmd=update&w=$LB_WORKER&sw=$WORKER&vwa=1\" | egrep '403|404|500|503'`" != "" ]
                if [ "`curl --silent --show-error --connect-timeout 1 -I \"http://$HTTPD_HOST/jkstatus/?cmd=update&w=$LB_WORKER&sw=$WORKER&vwa=2\" | egrep '403|404|500|503'`" != "" ]
                then
                        echo "<<< Error"
                else
                        echo "<<< Done"
                fi
        done

        echo "+sleep $JK_CTL_AFTER_DELAY"
        sleep $JK_CTL_AFTER_DELAY
fi


$CATALINA_HOME/bin/./shutdown.sh
 
 
if [ "$IS_WAIT" == "wait" ]; then
        I=0
        until [ "`ps -eaf | grep java | grep "$CATALINA_BASE "`" == "" ];
        do
                if [ $I == 120 ]; then
                        ps -ef | grep java | grep "$CATALINA_BASE " | awk {'print "kill -9 " $2'} | bash -x
                        break;
                fi
 
                let I=$I+1
 
                echo -ne "."
                sleep 1
        done
fi


echo "*** Tomcat process ($PID) received SHUTDOWN signal ***" >> $CATALINA_BASE/logs/catalina.out


[setting.sh]

#!/bin/sh

. ./env.sh

if [ ! -d "$WEB_ROOT" ];
then
        mkdir -p $WAR_PATH
                mkdir -p $WEB_ROOT
                mkdir -p $WAR_PATH/../logs/$HTTPD_LB_WORKER_NM
fi


cd $CATALINA_BASE
find ./ -type d -exec chmod 750 {} \;
find ./ -type f -exec chmod 740 {} \;

chmod -Rf 640 $CATALINA_BASE/logs/*

cd $WEB_ROOT
find ./ -type d -exec chmod 755 {} \;
find ./ -type f -exec chmod 640 {} \;


if [ ! -e "$WEB_ROOT/index.html" ];
then
        echo "Hello World" >> $WEB_ROOT/index.html
fi
if [ ! -e "$WEB_ROOT/info.jsp" ];
then
        echo "<%@ page language=\"java\" contentType=\"text/html; charset=EUC-KR\" pageEncoding=\"EUC-KR\"%><%@page import=\"java.net.InetAddress\"%><%String serverIP = \"\";try{serverIP = InetAddress.getLocalHost().getHostAddress();serverIP = serverIP.substring(serverIP.lastIndexOf(\".\")+1);}catch(Exception e){}String info = request.getServerName() + \", \" + serverIP + \", \" + System.getProperty(\"jvmRoute\");out.print(info);// test%>" >> $WEB_ROOT/info.jsp
fi

if [ $LANG = "ko_KR.eucKR" ]; then
        cd $CATALINA_BASE
        FILE_ENC=`file -i env.sh `

        UTF8_IDX=`awk -v a="$FILE_ENC" -v b="utf-8" 'BEGIN{print index(a,b)}' `

        if [ $UTF8_IDX -gt 0 ]; then
                cd $CATALINA_BASE
                echo "----- encoding convertor -----"
                find . -name '*.sh' -exec iconv -f utf-8 -t euc-kr {} -o {} \;
        fi


[top.sh]

#!/bin/sh


. ./env.sh

PID=`ps -ef | grep java | grep "$CATALINA_BASE " | awk '{print $2}'`

if [ e$PID == "e" ]
then
        echo "NOT RUNNING!!!"
        exit;
fi

$CATALINA_BASE/../monitor_agent/./jvmtop.sh $PID


[dump.sh]

#!/bin/sh

. ./env.sh

for count in 1 2 3 4 5; do
    echo "Thread Dump : $count"
    for i in `ps -ef | grep java | grep "base=$CATALINA_BASE " | awk '{print $2}'`;do
        date
        #echo "+kill -3 $i"
        echo "+jstack -l $i >> $CATALINA_BASE/logs/thread_dump.$i"
        #kill -3 $i
        jstack -l $i >> $CATALINA_BASE/logs/thread_dump.$i
        #echo "sleep 1 sec"
        #sleep 1
    done
    echo "done"
    sleep 3
done


[dump_cpu.sh]

#!/bin/sh

. ./env.sh

for count in 1 2 3 4 5; do
    echo "Thread Dump : $count"
    for i in `ps -ef | grep java | grep "base=$CATALINA_BASE " | awk '{print $2}'`;do
        top -H -b -n1 >> $CATALINA_BASE/logs/dump_high_cpu_$i.txt
        date
        #kill -3 $i
        echo "+jstack -l $i >> $CATALINA_BASE/logs/dump_high_cpu_$i.txt"
        jstack -l $i >> $CATALINA_BASE/logs/dump_high_cpu_$i.txt
        echo "cpu snapshot and thread dump done. #"
    done
    echo "done"
    sleep 3
done


[httpd.sh]

#!/bin/sh


. ./env.sh



if [ "$1" == "stop" ]; then
        for HTTPD_HOST in "${HTTPD_HOSTS[@]}"
        do
                echo "<<< Turn-OFF Worker $WORKER in $LB_WORKER [$HTTPD_HOST]"
                if [ "`curl --silent --show-error --connect-timeout 1 -I \"http://$HTTPD_HOST/jkstatus/?cmd=update&w=$LB_WORKER&sw=$WORKER&vwa=2\" | egrep '403|404|500|503'`" != "" ]
                then
                        echo "<<< Error"
                else
                        echo "<<< Done"
                fi
        done
fi

if [ "$1" == "start" ]; then
        for HTTPD_HOST in "${HTTPD_HOSTS[@]}"
        do
                echo "<<< Turn-ON Worker $WORKER in $LB_WORKER [$HTTPD_HOST]"
                if [ "`curl --silent --show-error --connect-timeout 1 -I \"http://$HTTPD_HOST/jkstatus/?cmd=update&w=$LB_WORKER&sw=$WORKER&vwa=0\" | egrep '404|500|503'`" != "" ]
                then
                        echo "<<< Error"
                else
                        echo "<<< Done"
                fi
        done
fi


[server.xml]



  
  
  
  
  
  
  
  
    
    
    
    
 
      
        
      
      
                
        

      
    
  


[참고] http://snippets.khromov.se/subversion-1-8-centos-6/



wget http://snippets.khromov.se/wp-content/uploads/2013/09/svninstall.sh_.txt
mv svninstall.sh_.txt svninstall.sh
chmod 755 svninstall.sh
sh svninstall.sh


svninstall.sh_.txt


+ Recent posts