일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 스프링부트
- 프로그래머스
- JPA예제
- 플러터 개발
- Flutter
- nestjs스터디
- querydsl
- Axon framework
- Kafka
- 카프카
- 코테공부
- 코테준비
- nestjs
- JPA공부
- 알고리즘공부
- 스프링공부
- 스프링 공부
- 기술면접공부
- JPA스터디
- nestjs공부
- 플러터 공부
- K8S
- 자료구조공부
- JPA
- 기술공부
- 자바공부
- JPA 공부
- 스프링부트공부
- DDD
- 스프링
- Today
- Total
목록Infra/[AWS] (27)
DevBoi
1. Route 53 도메인 * Aws Route53 접속 > 호스팅 영역 생성하기 > 네임서버 생성* 도메인 구매처 > Route53에서 발급받은 NS레코드(네임서버) 정보 입력* Route53 A레코드 생성 (값에 ec2 ip 값 입력하기) -> (앞에 별칭 www와 빈값으로 2개해야 군말이 없음) 2.nginx 설치 sudo touch /etc/apt/sources.list.d/nginx.listecho "deb http://nginx.org/packages/ubuntu/ bionic nginx" | sudo tee -a /etc/apt/sources.list.d/nginx.listecho "deb-src http://nginx.org/packages/ubuntu/ bionic nginx"| su..
1) 테이블을 이미 만들어 버렸을경우이때는 사실 방법이 없다. 하나씩 인코딩 설정을 해주는 쿼리를 날려야한다. ALTER TABLE TABLE_NAME CONVERT TO CHARACTER SET utf8; 2) 테이블을 만들기 전인 경우RDS의 파라미터 그룹을 설정해주면된다.1) RDS > 파라미터 그룹 > 파라미터 그룹 생성을 한다.2) 생성한 파라미터의 기본값들을 수정해준다.* character 검색 > 아래 항목들을 UTF-8로 지정해준다. utf8 또는 utf8mb4로 해준다. 차이는 이모지 가능여부이다. * collation 검색 > 아래 값들을 utf8_general_ci로 설정한다.-collation_server-collation_connection
github action을 통해 브랜치에 푸시가 되면 자동으로 배포가 되도록 구축해보자 1. Git hub access-token 발급Settings > Developer Setting을 통해, 아래 Classic Token을 생성하고, 잘 보관해 둔다. 2. 자동화 원하는 Repo의 secret key 연동 원하는 Repo > Setting > Secrets and variables> Actions 진입, 아까 만든 access token을 바탕으로2번째 이미지처럼 키를 생성 3. Runner 설정 New self-hosted runner 클릭 해당 하위에 나오는 명령어를 ec2에 입력 * shaSum 오류 발생시 패키지 업데이트sudo yum install perl-Digest-SHA -y ..
개인적으로 사용하고 싶어서 만든 채팅 서비스가 있다.아키텍처에 대한 구조는 아래와 같다. 그렇게 복잡하지 않다.NestJs가 소켓처리와 MongoDb와의 통신을 통해 데이터 API 역할을 3000, 8080 포트로 나눠서 지원하고Flutter web 은 80포트로 왔을때 처리되는 static Resource로 서버에 위치에 있다. 물론, 여러개의 서버를 나눠서 두는 방법도 있지만, 이건 사용자 트래픽이 몰리는 경우 고려하도록 하자 1) nginx 세팅EC2 제일 앞단에서 Nginx 를 둔다.80,443에 대한 인증서 처리 및 리버스 프록시 설정에 대한 내용들을 다룬다 1-1) /etc/nginx/site-avavilbles/defaultserver { listen 80 default_server; ..
채팅 관련 웹 서비스를 개발했다. 다뤄보지 않은 프레임워크를 선택해서 극단으로 몰았던게 조금 후회되지만 무튼 관련 개발 내용을 정리해서 포스팅한다. 우선 개발한 서비스의 아키텍처는 아래와 같다. 그림은 귀찮으니 대충 1. Flutter web : 사용자가 사용하는 화면이다. 2. nestJs 포트 두개 (3000,8080) 을 기반으로 채팅과 기초정보를 제공하는 백엔드 프레임워크이다. 3. mongo : 비정형디비로 RDB를 쓰려다가 채팅에 특화된 디비를 쓰기로 했다. 4. mongo express : mongo디비를 볼수있는 콘솔이다. 5. fcm : 사용자가 백그라운드, 포그라운드 일때 메시지 알림을 웹푸시로 주거나 미수신 메시지를 카운트를 증가시킨다. 아래의 로직으로 간단하게 구현했다. 더 심도있는..
알람을 보내야하는 기능이 있는데, http로는 사용자 요청을 얻을 수 없다. 따라서, Https 세팅한다. 1. certbot 설치 sudo snap install certbot --classic 2. 인증서 발급 sudo certbot --nginx -d {도메인} 발급이 끝나면 아래와 같은 문구로 인증서 위치를 알려준다. Certificate is saved at: /etc/letsencrypt/live/rabbithole.gotdns.ch/fullchain.pem Key is saved at: /etc/letsencrypt/live/rabbithole.gotdns.ch/privkey.pem This certificate expires on 2024-07-04. These files will be u..
MySQL said: Too many connections 갑자기 잘 사용하던 RDS가 연결이 안됬다. 커넥션 풀에서 관리되는 커넥션에 대한 부족일 수도있고, 이미 닫힌 커넥션에 대한 유지로 인해 연결이 실패할 수도있고 미사용 커넥션이 너무 오래 살아있는 경우 일 수도 있다. 무튼 커넥션에 대한 max connection 수와 wait-timeout 에 대한 조정이 필요해 보인다. 1) 파라미터 그룹 생성 max_connections는 최소로 잡혀있지만, 이값을 300으로 변경한다. wait_timeout 도 180초로 변경한다. 이는 3분 정도이고, 이 기간동안 커넥션을 얻기 위해 대기한다. 이후 디비의 파라미터 그룹을 변경해서 재부팅해준다. 신규로 생성한 파라미터 그룹으로, 디비가 적용되고 재부팅 되..
1) 배경 EC2가 자꾸 죽었다. 프리티어를 문제없이 사용하다가, 특정 Docker 컨테이너 2개를 띄운 EC2가 자꾸 죽는것을 볼수있었다. 귀찮아서 미루다가 분석을 해보기로했다. 2) 분석 aws의 ec2프리티어였다. 사실 서버 인프라를 확장하면 된다. 그래서 운영이나 회사에서는 발생하지않았던, 새로운 경험이다. 적은 서버 스펙의 서버가 자꾸 죽을때 사용하면 좋을 기술 같다는 생각이 들은겸 리눅스 공부할겸 분석을 해보기로했다. 3) 문제 찾기 3-1) 시스템 로그 보기 별다른게 없었다. 시스템 로그는 부팅 중이나, 부팅후의 로그를 볼수있다. 부팅과정에서 제대로 안된다면 확인할때 유용하다. 3-2) 인스턴스 스크린샷 확인 서버가 기동중에 이유없이 다운되는 거기 때문에 인스턴스 스크린샷을 확인한다. 메모리..
잘 동작하는 서버가 갑자기 동작을 안한다. 특정 시간이 지나면 장애가 발생하는 것인데, 아래와 같이 인스턴스가 다름을 확인했다. 상태 검사가 이 EC2는 1개가 실패한것이다. 아래와 같이 로그를 확인했다. 특정 이슈로 보이는 부분을 발견했다. [[0;32m OK [0m] Finished [0;1;39mRecord successful boot for GRUB[0m. Starting [0;1;39mGRUB failed boot detection[0m... [[0;32m OK [0m] Started [0;1;39mSystem Logging Service[0m. [[0;32m OK [0m] Started [0;1;39mUser Login Management[0m. [[0;32m OK ..
AWS에서 제공하는 Mariadb RDS를 사용하다가 발생한 문제이다. 한글 관련 내용을 보내면 내부적으로 아래와 같은 에러 메시지가 노출되는데 java.sql.SQLException: Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8mb4_general_ci,COERCIBLE) for operation 'like' 해당 케이스에서는 별도 조치가 필요하다. 조인 하는 테이블들의 문자셋이 달라서 발생하는 오류이다. 해당 관련된 조인 테이블의 모든 인코딩 문자셋을 맞춰주면 해소가 된다. alter table myvalue.sub_member default character set utf8mb4; alter table myvalue.sub_me..