분류 전체보기 (330) 썸네일형 리스트형 [TWIL] Ehcache Replication으로 세션공유하기 만약 인증을 담당하는 인증 서버가 여러대일때, 우리는 어떻게 세션 공유를 할 수 있을까요?저희 팀은 이를 위해 EHcache의 RMI Replication을 이용하고 있어요. 1. 클라이언트가 로그인 하면 인증토큰을 발급2. Ehcache에 인증 토큰을 저장3. Ehcache Replication을 사용하여 다른 서버에도 자동으로 복제4. 이후 사용자가 다른 서버로 접속해도 동일한 인증토큰으로 인증 상태를 유지 이런 흐름으로 세션이 공유되고 있습니다. 그럼 지금부터 Ehcache에 대해 알아보고 어떻게 사용하는지 정리해볼게요. #1. Ehcache가 뭐야?Ehcache는 Java 기반의 인메모리 캐시 라이브러리입니다.캐시를 저장할 때 Java의 Heap Memory를 사용하기 때문에Ehcache를 사.. [TWIL] MariaDB - MHA 이중화를 알아보자 이번에 MHA 이중화 환경에서 사용하는 기능을 개발했는데, 이 참에 MHA에 대해 알아보고자 합니다. MHA는 MySQL의 대표적인 HA(High Availability) 솔루션 중 하나로, 일본의 MySQL 엔지니어 Yoshinori Matsunobu가 개발한 오픈소스 프로젝트입니다. 현재는 업데이트가 중단되었지만, 여전히 많은 기업에서 안정적인 HA 구축을 위해 사용하고 있습니다.#1. MHA 이중화 왜 사용할까? 만약 서비스 운영중에 DB로 인해 서비스 장애가 발생한다면 어떻게 될까요? 1. DB가 Single인 경우 :서비스 장애 시간 = DB 서버를 복구하는데 걸리는 시간2. 복제해둔 DB가 있는 경우 : 서비스 장애 시간 = 수동으로 복제해둔 DB를 Master로 승격하고, 커넥션 변경.. vm 사용을 위한 Linux 설정 1. 방화벽 해제systemctl stop firewalld해당 서비스를 종료systemctl disable firewalld부팅 후 해당 서비스를 구동하지 않음systemctl status firewallddisabled, inactive 확인 가능왜 방화벽을 해제할까?리눅스에서 서비스를 운영해야하는데, 방화벽이 가로막고 있어 접근이 안되는 문제가 발생할 수 있습니다.2.Selinux 종료selinux란 ( Security Enhanced Linux )과거 리눅스는 소스코드가 공개되어 있어 보안에 취약했고, 이를 보안하기 위해 SELinux가 존재합니다.리눅스의 커널 보안 모듈로, 이를 켜놓고 서비스를 운영하면 보안이 강력해지지만, 강화된 보안으로 인해 운영할 서비스에 문제가 생길 수도 있습니다.SE.. 디스크 파티셔닝이란? Rocky OS를 설치할 때 파티셔닝을 진행하는데 이에 대해 살펴보겠습니다. Rocky OS ?CentOS와 호환되는 무료 리눅스 중 하나로, 레드햇 엔터프라이즈 리눅스(RHEL)의 소스코드를 이용하여 만들어진 무료 리눅스 배포판입니다 RHEL의 소스를 그대로 재컴파일해서 Rocky Linux를 제작하였습니다.디스크 파티셔닝파티셔닝이란 하나의 물리 저장장치를 시스템 내부에서 여러 디스크 공간으로 나누는 작업(물리적/논리적)을 말합니다.Primary : 물리적으로 나뉜 공간. 최대 4개의 공간으로 나눌 수 있습니다. 더 많은 파티셔닝이 필요할 때는 익스텐디드 공간으로 논리적으로 확장해야합니다.Extended : 논리적으로 나눈 공간일반적으로 Extended 공간으로 확장해서 사용하거나 LVM 이라고 부르는.. 스케줄러 cron 설정을 Global Properties 값으로 변경 스케줄러의 실행 시점을 설정해주는 cron 설정에 Enum상수의 필드값을 사용할 수 없었습니다.private String every30Minutes = ServerProperties.SCHEDULER_CRON.getValue();@Scheduled( cron = every30Minutes, zone = "Asia/Seoul" ) @Transactional public void findExpiredMembers(){실행 결과 : error: element value must be a constant expression @Scheduled( cron = every30Minutes, zone = "Asia/Seoul" ) ^이는 컴파일 타임에 @Sched.. ChannelGroup과 GlobalEventExecutor ChannelGroup 생성 시 왜 GlobalEventExecutor 를 사용하는지, GlobalEventExecutor 가 어떤건지 여쭤보셨습니다. GlobalEventExecutor 가 단일 스레드 싱글톤 EventExecutor라는 내용은 알고 있었지만 어떻게 동작하는지는 알고 있지 않아서 이에 대해 알아보고자 합니다. ChannelGroup우선 ChannelGroup은 채널을 저장할 수 있으며, Channel이 닫히면 ChannelGroup 컬렉션에서도 자동으로 제거되는 Netty 제공 인터페이스입니다. 여러 Channel을 그룹화하여 관리하는 인터페이스라고 볼 수 있습니다.ChannelGroup 은 스레드 안전하며, 하나의 channel은 여러 ChannelGroup에 속할 수 있고, 소속된.. @TransactionalEventListener @transactionalEventListener 가어떻게 이벤트를 인식하여 리스너를 실행하는지 알아보겠습니다. Spring에서의 Spring event의 실행 단계 : 생성 주체에서 이벤트를 발생하면 이벤트 디스패처에게 전달이벤트 디스패처가 이벤트 핸들러를 연결이벤트 핸들러에서 이벤트에 담긴 데이터를 통해 원하는 기능을 실행이번에 사용한 @TransactionalEventListener 는 적용할 메서드의 매개변수에 이벤트 객체를 정의해주면 지정한 이벤트가 발생했을 때 수신해서 처리할 수 있습니다. (이 점은@EventListener 와 동일)또한 이벤트 발행자의 트랜잭션을 기준으로 이벤트 실행 시점을 조절할 때 사용할 수 있습니다.option :AFTER_COMMIT (default) : 트랜잭션이 .. TCP Keepalive TCP 연결이 설정된 이후 정상적인 상황이라면 FIN 메시지를 송수신 했을 때, 연결이 해제됩니다.하지만 전원이 차단되거나 오류에 의해 오동작을 하면 하나의 단말만 연결이 유지되는 Half Open Connection이 발생할 수 있습니다. 이러한 소켓이 꽉차면 정상적인 Connection요청에 응답을 할 수 없는 상황이 발생하게 됩니다.이런 현상을 막기 위해 Keep-alive라는 기능이 있습니다. TCP KeepaliveTcp Keep-alive는 한 번 맺은 세션을 요청이 끝나더라도 유지해주는 기능입니다. tcp_keepalive_time으로 설정한 keepalive timeout 시간이 지나면 서버에서 Keepalive 확인 패킷을 보냅니다.이 패킷에 대한 응답(ACK 패킷)을 받으면 타이머는 원.. 이전 1 2 3 4 ··· 42 다음