Software Deployment

Ansible

접속 테스트

$ ansible fusion-web -i inventory/test/hosts_etc_tomcat_only -m command -a 'ls -al'

인벤토리 파일내에 fusion-web 그룹 서버군에 ls -al 컴맨드를 날린다. 이를 통해 접속 여부 테스트가 가능하다.

좀 더 간단한 방법으로 아래와 같이 ping 할 수 있다.

$ ansible fusion-web -i inventory/test/hosts_etc_tomcat_only -m ping

배포의 문제점

ansible은 전체 배포를 하는데, 배포 중간에 http status를 확인하는 스크립트가 포함되어 있었다. 그러나, 모든 서버가 장애 상태에 빠져 http 확인이 안되어 이 스크립트가 실패로 기록되어 배포가 중간에 멈추는 경우가 발생했다. 강제로 웹 서버를 foreground로 띄워두고 http status 체크가 가능하도록 한 다음에야 겨우 배포가 가능했다.

설치 스크립트까지 포함된 ansible은 항상 위험 요인을 안고 있고, 배포할때 마다 늘 불안하다. 때문에 docker로 이미지를 말아서 최종 테스트를 해보고 문제 없을때 이미지를 배포하는 docker의 방식이 가장 편리했고, 무엇보다 안전하다.

Jenkins

Daemonize 및 Jenkins의 ProcessTreeKiller

바이너리를 데몬으로 띄우기 위해 처음에는 daemonize를 사용했으나 Go 바이너리는 잘 되지 않았다.

결국 Go 용도로 만들어낸 라이브러리를 찾게 되었고 go-daemon을 테스트 해보니 go run으로는 문제가 없는데 빌드 후 바이너리로 실행시 pid가 남지 않는 등의 문제가 있었다. 그러나 이외에는 잘 동작하여 그대로 사용하기로 했다.

그런데 jenkins에서 실행할때 데몬이 구동되지 않았다. nohup으로 해봐도 마찬가지. 알고보니 ProcessTreeKiller라는게 있어 해당 빌드에서 실행된 바이너리는 완료 후 모두 종료하도록 되어 있었다. BUILD_ID를 지정하면 건드리지 않는다고. 이걸 몰라 한참을 고생했다.


2017 Book Reports · 2018 Book Reports · 2019 Book Reports · AWS · Activation, Cost Functions · CNN, RNN · C++ · Decision Tree · Docker · Go · HTML, CSS, JavaScript · Hadoop, Spark · Information Retrieval · Java · Jupyter Notebooks · Keras · LeetCode · LifeHacks · MySQL · NLP 실험 · NLP · Naive Bayes · OAuth 2.0 · OOP · Python Data Structure Cheatsheet · Python · RSA · Software Deployment · Support Vector Machine · Word Embedding · XGBoost · Scikit Learn · 거리 · 데이터 마이닝 · 데이터 사이언스 · 딥러닝 · 머신러닝 분류기 · 머신러닝 · 비지니스 · 사회심리학 · 수학 · 알고리즘 · 영어 · 운영체제 · 이산수학 · 인공지능 · 자료구조 · 진화생물학 · 컴파일러 · 컴퓨터시스템구조 · 통계학 응용 · 통계학 ·
is a collection of Papers I have written.
© 2000 - Sang-Kil Park Except where otherwise noted, content on this site is licensed under a CC BY-NC 4.0.
This site design was brought from Distill.