3개 서버 9개 Node로 Redis Cluster 구성하기

Redis Cluster 를 구성할때 대부분의 예제는 3개의 서버로 3개의 Master 노드를 구성해서 만든다. 그러나 master node 로만 구성되어 있으면 1개의 서버 또는 노드가 죽어버리면 장애가 발생하기 때문에 slave 를 같이 구성하게 되는데, 물리적인 서버 또는 클라우드 인스턴스를 많이 쓸 수 있다면 하나의 서버 혹은 인스턴스에 하나의 노드만 구성해서 3 * 백업 노드 수 만큼 서버를 늘리면 설정은 매우 간단하다. 예를 들어 각 master node 하나당 slave node 2개씩 구성하고 싶다면, 서버를 9대로 구성하면 된다. redis.conf 설정 Redis 3.x or 4.x Redis 5.x 이렇게 하면 알아서 3개의 master node, 6개의 slave node를 만들어준다. 알아서 만들어준다는 말은, 어떤 서버가 master가 되고 어떤 서버가 어느 노드의 slave가 될지 자동으로 구성된다. 알아서 만들어준다는 말은, 다시 말하면 내가 원하는대로 되지 않을 수도 있다는 말이다. 내가 만들고 싶었던 구성은 3개의 서버에 9개의 노드로 master-slave1-slave2 로 구성을 하는 것이었다. 마스터 노드 3개를 각 서버에 구성하고, 슬레이브 노드는 마스터와 다른 서버에 2개로 구성한다. 마스터 노드가 죽게 되는 경우에는 … 더 보기 “3개 서버 9개 Node로 Redis Cluster 구성하기”

Gradle 2.x -> 3.x 에서 test result 디렉토리 변경

Jenkins에서 gradle build job 을 실행하면서 테스트 결과를 확인하는 과정에서  계속 테스트 결과로 지정해놓은 ./build/test-result/*.xml  을 못 찾는다는 에러가 발생했다. 구글링을 해보니 Gradle 3.0 부터 테스트 결과가 쌓이는 기본 디렉토리가 변경되었다. ./build/test-result/ 까지는 맞는데, 그 아래로 test 종류별로 디렉토리를 구분해서 쌓는다.   기본 gradle test를 실행했다면 테스트 결과가 쌓이는 디렉토리는 ./build/test-result/test/*.xml 이다.   integrationTest 를 실행했다면 ./build/test-result/integrationTest/*.xml 이다.   테스트 결과를 찾는 설정이 필요하다면 ./build/test-result/**/*.xml 로 처리하는 방법도 있다.     참고: https://docs.gradle.org/3.0/release-notes.html?_ga=2.12696114.407913030.1545751050-450539793.1545751050#unique-default-test-result-and-report-directories-for-test-tasks https://discuss.gradle.org/t/junit-test-results-location-change-between-gradle-2-11-and-3-1/20455 https://discuss.gradle.org/t/overriding-documented-test-reposts-xml-destination-fails-due-wrong-properties-specified/19728  

MySQL에서 실행된 쿼리를 로그로 확인하기

MySQL 5.1 이상 버전에서는 실행된 쿼리를 로그로 확인하는 방법을 간단하게 제공하고 있다. MySQL에 root로 로그인한 다음에, show VARIABLES where variable_name like ‘%log%’; 를 실행시키면 로그와 관련된 변수를 확인해볼 수 있는데, 이 중에서 general_log, general_log_file, log_output 이 실행된 쿼리 로그와 관련된 변수들이다. 로그는 파일 또는 DB 테이블로 남길 수 있다.   우선 기본 설정. SET GLOBAL general_log = ‘on’; 으로 로그 남기는 기능을 활성화 한다.   SET GLOBAL log_output = ‘FILE’; 로 로그를 남길 위치를 설정한다. FILE 외에 TABLE, NONE 값을 설정 가능하다. 파일에 실행 쿼리 로그를 남기는 경우에는 general_log_file 변수로 설정한 파일에 로그를 남긴다. 기본값은 MySQL 이 설치된 디렉토리/data/컴퓨터이름.log 인 듯 하다. 그런데, 윈도우7 64bit 기준으로, MySQL이 설치된 기본 디렉토리는 “C:\Program Files\MySQL\MySQL Server 5.6” 인데, 이 폴더 아래에 data라는 폴더가 있는데 아무리 쿼리를 실행해도 여기에 로그가 쌓이질 않아서 파일을 찾아보니 “C:\ProgramData\MySQL\MySQL Server 5.6\data” 여기에 로그파일이 쌓이고 있었다. 윈도우 쓰시는 분은 여기서 로그파일을 확인하실 수 있을 듯.   맥의 OSX 에서는mysql 설치된 … 더 보기 “MySQL에서 실행된 쿼리를 로그로 확인하기”

KTH 개발자 세미나 H3 2012 참관 후기

1. baas.io KTH에서 이번에 새로 만든 모바일 개발자를 위한 서버사이드 서비스입니다. baas 는 Backend as a service 의 약자입니다. 이걸 사용하면 모바일 앱 개발자가 서버사이드 개발을 할 필요가 없다고 합니다. 서버 프로그램 안에서 웹 gui를 통해 앱 서비스를 만들고, RESTful api를 만들고 앱에서는 이것을 호출하면 됩니다. 실제 앱들은 RESTful api만 잘 설계하면 간단한 서비스들은 매우 심플하게 개발 가능하다고 합니다. facebook 인증 등의 기능도 내장하고 있고, 모바일 고객센터 기능도 내장하고 있어서 복잡한 서버로직이 있는 것이 아니라면, 앱 개발자들이 서버사이드 모듈을 개발할 필요 없이 이 서비스만을 이용하고 모바일앱만 개발하면 앱을 서비스할 수 있도록 도와주고 있습니다. 현재 클로즈 베타를 제공하고 있고 차후에 정식 오픈 예정입니다.   2. node.js 자바스크립트를 사용하여 무궁무진한 응용이 가능하다는 것을 보여준 재밌는 세션이었습니다. 파이선에는 HTTP server를 매우 쉽게 만들 수 있는 기능이 있습니다. : python -m SimpleHTTPServer 자바스크립트로도 이렇게 간단하게 웹서버를 만들 수 있도록 locally 라는 것을 만들었다고 합니다. 자바스크립트로 locally 명령어 하나로만 웹서버를 띄웁니다.   그리고, 하드웨어를 자바스크립트로 … 더 보기 “KTH 개발자 세미나 H3 2012 참관 후기”

NHN 개발자 세미나 Deview 2012 참관 후기

1. Real-time large data at Twitter – Raffi Krikorian (Twitter) 트위터 본사의 엔지니어가 직접 와서 트위터의 서비스에 대해 소개하는 시간이었습니다. 내용을 요약해보면,   사용자가 글을 쓰면 Fanout 이라는 서비스로 보내지는데, Fanout 은 이 글을 어느 유저의 타임라인에 보여줘야 할 지를 판단해서 그쪽에 글을 보여줌. 그리고 필요한 경우 모바일 앱으로 Push 를 보냄.   Timeline 의 최근 내용은 cache로 처리를 하는데, Timeline Cache는 Redis 를 사용 그리고 나머지 Cache는 Memcached 를 사용 Timeline만 따로 Redis를 쓰는 이유는, Radis 에는 array를 담을 수 있는 structure가 제공되고 있기 때문.   cache에 hash 데이터를 담는 방법은 Gizzard 라는 오픈소스를 사용. persistance hashing 메커니즘. (나중에 찾아보니 Gizzard는 트위터가 자체 개발한 오픈소스 였습니다.) 모두의 홈 타임라인은 800개의 트윗만 보여주고 나머지는 truncate. 800개가 넘는 트윗은 램에 없고 디스크에 있음. hadoop은 쓰는데 hbase는 사용 안함. follow와 unfollow정보는 Flock DB에 저장. Flock DB는 Gizzard 베이스. 2. 스마트폰 내장 센서를 이용한 모션 센싱과 체감형 게임 제작 – 송지영(NEOWIZ GAMES 연구소 연구1팀) Wii … 더 보기 “NHN 개발자 세미나 Deview 2012 참관 후기”

Daum 개발자 세미나 DevOn 2012 후기

이 행사는 다른 개발자 세미나와는 다르게, 사회적으로 유명한 분들을 모시고 대담을 진행하는 세션이 있다는 것이 재밌습니다. 제가 들은 세션을 중심으로 간략한 내용과 후기를 소개해드리겠습니다.   1. 개발자 창업과 아이디어 – 대담    이택경 프라이머 대표(다음 창업자) – 사회자    장병규 본엔젤스 대표(네오위즈, 첫눈 창업자, 현재 테라 게임 개발사 대표)    김길현 엔서즈 대표(엔서즈 : 동영상 검색 회사, 현재 KT에 인수됨) . 개발자가 회사를 차리는 것 VS 경영 전문가가 회사를 차리는 것  – 개발자만 있으면 어떻게든 제품을 만들 수 있다. 개발자가 경영을 할 수는 있다.     그러나 경영기획자만으로 제품을 만들 수는 없다. . 창업시 투자를 받는 것과 학력의 상관관계  – 본인들이 투자를 할 때 학력은 중요하게 생각하지 않는다.     (그러나 사회자는 연세대 출신이고, 다르 2분은 카이스트 출신입니다.ㅎㅎ) 재밌게 들은 내용은 위 두가지 였습니다. 그 외에도 창업에 관심이 있는 사람들에게는 재밌는 내용이 많았습니다.제가 창업에 관심이 없다 보니…ㅎㅎㅎ자세한 대담 내용은 아래 내용을 참조해주세요.^^http://www.besuccess.com/?p=20179       2. 개발자의 미래 근무환경    Daum 임정욱 … 더 보기 “Daum 개발자 세미나 DevOn 2012 후기”

휴가기간의 삽질

목,금,월,화… vmware에 Mac OSX 설치하느라 삽질에 삽질을 거듭했다.;;; vmware에 설치하는게 더 어려운거 같네;;; 10.6.5 업그레이드는 완료했는데, 사운드가 깨진다.;;; 이젠 포기. 밀리데이 PC용 버전업 환경설정 완료. Visual Studio 6.0만 쓰다가, 2008 설치해봤는데, 무지 낯설다. 아니, Visual Studio 자체도 낯설고, C++도 낯설다. 업글할 수 있을까?;;;개발 환경설정만 완료했는데,휴가가 끝나버렸다.개발은 언제 하지? ㅠㅠ아우, 내 휴가…