May 15, 2019 - Client IP 문제(X-Forwarded-For) 해결 방안

2010년, 그러니까 9년전쯤 X-Forwarded-For 문제가 있었습니다.
해당 현상을 확인하기 위해,
삼성쪽 SE 분과 전화로 많은 요청을 하고 처리를 해왔었고,

결국 해답을 해외 문서에서 확인할 수 있었는데요.

요근래는 정말 내용 찾기가 쉽네요.
참고주소

현재 동일한 현상이 발생하고 있는데,

예전에 처리한 것처럼, X-Forwarded-For 의 정보가 없는 상태고, 추측으로는 L4 에서 네트워크를 한번 더 거치면서 해당 IP 가 그쪽 네트워크로 copy 되고 있는 현상으로 보였습니다.

L4 셋팅을 하다가, NAT 설정이 ON 되어있었던 것으로 밝혀져, 방화벽 정책 설정에 NAT 설정이 ON되어 있어서 해당 설정을 OFF 로 변경하며 해당 상황이 closing 되었습니다.

May 14, 2019 - lsblk -d -o name,rota

df -h 나, htop, ifconfig 와 같은 상태를 확인할 명령어 이외에는 어플리케이션쪽 명령어만 자주 사용합니다.
실제로 htop 같은 경우도 별도의 isntall 하지 않는한 쓸 이유가 별로 없지요.

HDD 는 느리고, SSD 가 빠르다는 전제조건때문에, 요근래 서버 구성시 was는 무조건 SSD를 선택하게 됩니다. 가격도 큰 차이가 없고, HDD 보다 성능이 압도적으로 높기 때문에

개발자의 인권비보다 하드웨어의 가격이 압도적으로 높아가는 시점에서,

lsblk -d -o name,rota

SSD 로 변경되어가는 추세입니다. 서버 상태가 느린 서버가 있어. SSD인지 HDD인지 확인하기 위한 명령얼을 찾다가 해당 명령어를 알게 되어, 히스토리로 남깁니다.

아래와 같이 명령어를 수행했을때 개별 디스크마다 출력이 되는데 1은 HDD, 0은 SSD이다.

lsblk -d -o name,rota
NAME ROTA
sda     0
sr0     1

sda 는 SSD 를 사용하고 있다고 보면됩니다.

lsblk -d -o name,rota
NAME ROTA
sda     1
sr0     1

sda 는 HDD 를 사용하고 있다고 보면됩니다.

또 다른 방법으로는,

cat /sys/block/sda/queue/rotational

를 쳤을 경우, 1 이면, hard disks!
0이면, SSD 입니다.

May 8, 2019 - IntelliJ_IDEA

서버 재시작이 안되며 에러문구

오전 11:23	Error running 'Tomcat': Address localhost:2099 is already in use
오전 11:23	Error running 'Tomcat': Unable to open debugger port (127.0.0.1:6662): java.net.SocketException "socket closed"

계속 뒤에 있는 문자때문에,

Error running ‘Tomcat’: Unable to open debugger port (127.0.0.1:6662): java.net.SocketException “socket closed”

를 해결하려고 했으나, 원인은 처음 발생했던

Error running 'Tomcat': Address localhost:2099 is already in use  

2099 포트가 문제였습니다. Tomcat edit 화면에 가서 JMX port 를 변경하여 문제를 해결했습니다.

개발할때 성격 상,
debug mode 로 값을 수정하면서 여러가지 case by case 를 테스트하는 성격이라,
서버 실행 중에 소스 수정이 많고,
재시작이 빈번한 편입니다.

또한 local(windows) 환경과, centos 환경의 차이가 있을 수 있어(Encoding), 실 서버에 ftp로 연결하면서, 윈도우 특정상 파일을 점거하고 있어,

인텔리J가 해당 파일을 변경하지 못하여, 불안정하게 종료되면서 포트가 안죽는 이슈가 간혈적으로 발생합니다.

명령프롬포트창인

netstat -a -o

를 입력합니다. 그러면 수많은 네트워크를 사용하고 있는 프로세스들의 목록이 출력됩니다. 프로토콜 / 로컬 주소 / 외부 주소 / 상태 / PID 형태로 출력이 되는데요. 너무 많은 프로세스가 뜨기 때문에, 해당 port를 특정할 필요가 있습니다.

우리가 원하는 port 는 2099 이므로 다음과 같은 형태의 살아있는 port를 찾습니다.
(아래 테스트 문구는 52124라는 포르틀 찾는 예제 명령어입니다.)

\apache-tomcat-8.5.23\bin>netstat -a -o | find ":52124"
  TCP    192.168.100.11:52124   5.62.53.224:http       CLOSE_WAIT      2728

이제 PID 번호(2728)를 확인한 다음에 해당 프로세스ID를 종료시키면됩니다.

taskkill /f /pid PID번호

를 사용하면, 바로 해당 프로세스가 종료됩니다.
저는 해당 프로세스를 킬하기보다는 JMX Port 를 변경하는 식으로 작업을 합니다.

실전예제

오후 2:31	Error running 'Tomcat': Address localhost:2088 is already in use

가 다시 발생했습니다.

clusternodeImg

인텔리j에서 제공하는 Terminal 에서 바로 명령어를 입력하여, 프로세스를 킬한 후 톰캣을 재시작하면 됩니다.