본문 바로가기

DevOps66

1. Ansible (앤서블) 로 전체 서버 사용자 추가하기 - 호스트 연결하기 개인적으로 새로운 기술을 배우는데 있어 책을 보는 것은 학습에 도움이 되지 않았습니다. 항상 그 기술을 이용하여 무엇이든 실용적인걸 만들때 빠르게 습득할 수 있었습니다. 그래서 앤서블 역시 제가 필요한 도구를 만들면서 익혀보려 합니다. 이 과정은 어디까지나 IDC 환경에서 어떻게 인프라 작업을 쉽게 할 것인지가 주 초점입니다. 즉, 클라우드 못쓰는 상황이라는 가정하에 진행합니다. 그래도 실습 환경은 AWS EC2를 사용합니다 ㅠ 물리장비가 없어서 ㅠ 테라폼 / 오픈스택 / 클라우드포메이션 뿐만 아니라 호스트 서버들은 인터넷도 안되는 상황이라고 가정합니다. IDC 인프라에서 정말 필요하면서도 귀찮은 작업인 전체 서버에 신규 서버 계정 추가하기를 앤서블로 해결합니다. 아래는 이번 커리큘럼 목차입니다. 앤서블.. 2019. 7. 21.
서로 다른 EC2 인스턴스간에 연결하기 (feat. Ping) 서로 다른 EC2 인스턴스간에 통신이 필요할때가 있습니다. 앤서블을 통한 전체 명령어 수행 쉘 스크립트 혹은 젠킨스를 통한 명령어 수행 등등 외부에서 ssh 혹은 scp 명령어 수행 등이 필요한 상황입니다. 기본적으로는 해당 EC2의 IP를 보안 그룹에 추가하는 걸로 해결이 됩니다. 다만 이 방식은 IP가 변경 되면 무용지물이 됩니다. 오토 스케일링 그룹 (ASG) 으로 신규 추가된 서버들 빈스톡 (Beanstalk) 으로 신규 추가된 서버들 EIP (탄력적 IP) 를 사용하지 않는 서버의 재부팅 이런 경우 매번 보안 그룹에 신규 IP를 추가해야만 합니다. 이 과정이 너무 귀찮으니 다른 해결책을 진행해보겠습니다. 1. 환경 먼저 2개의 EC2 인스턴스가 있다고 가정합니다. 둘은 서로 다른 보안 그룹을 가.. 2019. 7. 21.
ImportError: No module named httpsession 문제 발생시 aws cli를 사용하는 젠킨스에서 갑자기 에러가 발생했습니다. from botocore.httpsession import URLLib3Session ImportError: No module named httpsession aws cli의 경우 내부적으로 Python을 사용하는데 여기서 Python 에서 특정 모듈 (대부분은 botocore, boto3이였습니다.) 을 호출하지 못하는 이슈였습니다. 실제로 뭔가 꼬여있는지 확인 하기 위해 EC2에 접속해서 간단한 aws cli 커맨드를 실행해도 똑같이 이슈가 발생하는지 확인합니다. aws --version 이슈가 확인됐다면 awscli를 다시 설치해서 해결합니다. 아래 커맨드로 다시 설치하면 됩니다. pip install awscli --user --fo.. 2019. 7. 1.
Jedis 보다 Lettuce 를 쓰자 Java의 Redis Client는 크게 2가지가 있습니다. Jedis Lettuce 둘 모두 몇천개의 Star를 가질만큼 유명한 오픈소스입니다. 이번 시간에는 둘 중 어떤것을 사용해야할지에 대해 성능 테스트 결과를 공유하고자 합니다. 모든 코드와 Beanstalk 설정값은 Github에 있으니 참고하세요. 레디스외 병목현상을 방지하기 위해 Nginx, 커널 파라미터 등은 모두 적절하게 튜닝된 상태입니다. 0. 프로젝트 환경 의존성 환경은 아래와 같습니다. Spring Boot 2.1.4 Spring Boot Data Redis 2.1.4 Jedis 2.9.0 Lettuce 5.1.6 그리고 테스트에 사용될 Redis Entity 코드는 아래와 같습니다. @ToString @Getter @RedisHas.. 2019. 5. 19.
AWS Credentials were refreshed 발생시 해결 방법 S3를 사용하는 젠킨스 서버에서 갑자기 아래와 같은 에러가 발생했습니다. fatal error: Credentials were refreshed, but the refreshed credentials are still expired. EC2에 등록된 인증 방식이 만료되었다는 의미인데요. 저는 access_key와 secret_key를 등록하지 않았습니다. 그럼에도 발생한것이죠. 이유는 IAM Role로 할당한 것 역시 인증 방식으로 보기 때문입니다. 그래서 이를 갱신하겠습니다. EC2의 IAM 교체를 선택합니다.갱신을 해야하니 아래와 같이 진행합니다. 기존과 다른 Role을 선택해서 저장 저장 완료 되면 다시 기존 Role 선택해서 저장 여기서 기존과 같은 Role을 선택하는 이유는 EC2에 할당된 인증.. 2019. 3. 23.
젠킨스에서 실패한 Job 무시하기 젠킨스에서 파이프라인을 사용할 경우 여러개의 Job을 수행합니다. 일반적으로 젠킨스의 파이프라인은 빌드-배포에 맞춰져있어, 앞의 Job이 실패하면 뒤 Job들이 실행하지 않도록 하는 것을 기본으로 합니다. 이때 각 Job이 실패하더라도 뒤에 있는 Job들을 계속 실행할 수 있는 방법이 필요할때가 있는데요. 예를 들어 Batch 작업들이 순차적으로 실행되지만, 각 Batch들이 서로 연관관계가 없을 경우 앞이 실패한 것과 무관하게 실행되길 원합니다. 이럴때 실패를 무시하고 다음 Job을 실행하는 방법을 소개드립니다. 1. Scripted 문법 Scripted 문법은 Groovy 언어를 사용하는 것과 비슷하다고 말씀드렸는데요. 참고: 젠킨스 파이프라인 정리 - 2. Scripted 문법 소개 일반적인 프로그.. 2019. 3. 6.