일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- .NET
- mmbot
- Gears of War
- AirComic
- NoSQL
- 커버구루
- ipod
- 네아로
- c#
- redis
- 닷넷
- TeamCity
- 센티넬
- Cover Guru
- gitlab
- Keepalived
- 복제
- 고가용성
- iPod Touch
- haproxy
- 개발
- ASP.NET
- High Availability
- replication
- 레디스
- DotNetOpenAuth
- XBOX360
- sentinel
- 기어스 오브 워
- DSM6
- Today
- Total
목록분류 전체보기 (26)
Once in a Lifetime
Gitlab 은 기본적으로 자체 Nginx(bundled web-server) 를 이용하는데, Nginx 나 Apache 를 설치한 상태에서 non-bundled web-server 를 이용할때의 설정에 대해서 간략하게 기술한다. /etc/gitlab/gitlab.rb nginx['enable'] = falseweb_server['external_users'] = ['nginx']nginx['listen_address'] = ['0.0.0.0','[::]']# Unicorn 이 8080 사용중이라면 Unicorn 포트를 8081 로 변경함nginx['listen_port'] = 8080설정 재생성 및 재시작gitlab-ctl reconfiguregitlab-ctl restartsystemctl resta..
얼마전 포스트에서 소개했던 슬랙봇이 있었는데, 제한 사항이 생각보다 꽤 많아서 다른 소스를 찾다가 Slack 공홈에 소개되어있는 mmbot 이라는 봇을 사용해서 몇가지 스크립트를 작성한 후기를 포스팅 해본다. mmbot 스타터 가이드는 GitHub 에 잘 나와있으니 참고하면 될 것 같고, 슬랙봇으로 구현하고자했던 것은 각 서버의 헬스 체크파워쉘 스크립트를 통한 스위치 및 IIS 컨트롤였는데, mmbot을 이용해서 간단하게 구현이 가능했다. mmbot은 nuget 패키지를 참조 할수있도록 모듈형태로 클래스를 제공하고 있고파워쉘 스크립트 역시 간단하게 처리 할 수있는 클래스를 제공하고 있으며Scheduler까지 등록할 수 있는 CSX 샘플도 기본 제공하고 있어서 스크립트 작성이 간편하다. 게다가 Hubot의..
배포10년도 넘은 이야기를 하자면, 홈페이지를 만들면서 알바하던 시절 (다시말해, 제로보드를 이용한 홈페이지를 만들어서 찍어내던 시절)에 배포라는 개념은 현재까지도 널리(?)사용되는 FTP 를 이용한 배포였었다. 닷넷이라는 플랫폼으로 오면서부터는, FTP 배포보다 더 무식한 방법인 RDC를 이용해 CTRL+C / CTRL+V 였었음. 이미 자동화된 배포를 경험한 사람들(최근 리눅스쪽은 Docker, 닷넷쪽은 Jenkins 나 TeamCity)이라면 놀라자빠질 방법이겠지만, 의외로 실무에서 이렇게 배포하는 곳이 여전히 많다. (겨우 네트워크 드라이브 연결해서 기존 배포본 백업/변경 바이너리 카피의 단순 작업을 배치라던가 각자의 사정에 맞게 작성한 프로그램으로 하는 정도의 자동화는 되어있는 곳도 있음) 그간..
닷넷이라는 플랫폼을 처음 접한게 2005년이니까 벌써 만 10년이 넘게 닷넷 플랫폼으로 밥을 벌어먹고 살고 있다. 그동안 진행했던 프로젝트들도 수십건이 넘고, 그때마다 독고 솔로 개발을 하는게 아니다보니, 팀 단위의 협업을 하게되는데 그동안 협업을 하면서 느꼈던 점들, 그리고 현재 나는 그때와 어떻게 달라졌는지에 대한 잡설을 조금 풀어보고자 한다. 형상관리취미로 PHP 나 ASP 를 깔짝이던 시절에는 혼자서 북치고 장구치는 독고다보니 형상관리라는 개념자체도 없었고, 필요성도 전혀 느낄수가 없었다. 혹여 백업이 필요하면 일자별로 폴더를 만들어서 백업할 소스들을 보관하는 식이었는데, 혼자 작업을 하다 보니, 백업할 소스들만 선택해서 백업을 하기가 귀찮아서 그냥 프로젝트 폴더 전체를 백업하곤 했었다. 이런 단..
작년말쯤에 Slack 을 팀도구로 쓰려고 잠깐 사용해 보았는데, 그때는 이직한지 얼마 되지도 않았고 나름의 적응기라 새로운 툴을 사용하자고 제안하기도 참 애매하던 시절이라 그냥 이런저런게 가능하고 이렇게 사용하는거구나 맛보기 정도로만 훑고 던져버렸던 기억이 있다. 반년이 지난 지금 CI/DI 를 TeamCity 에서 Jenkins 로 프로젝트들을 옮겨가고 있고, 형상관리는 SVN 에서 Git 으로 넘기는 중에 있는데, 메일로만 Notify 를 받다보니 메일이 쌓이는것도 좀 짜증나고, 외부로 열려있지 않은 CI/SCM 의 노티를 모바일(이라고 읽고 외부에서) 받고 싶은 욕망에 Slack 팀 생성을 새롭게 해서 Integration 해봤다. 1. GitLab 작년말에 비해서 Slack 의 Integratio..
HaProxy 를 이용하여 Master / Slave 의 포워딩을 구성하였으나, HaProxy 서버가 다운 되었을 경우를 대비해 HaProxy 를 이중화하고 이를 가상 IP 로 바인딩 시켜주기 위해 Keepalived 를 이용해 보겠습니다. Keepalived 설치 yum -y install keepalived PsMisc 설치 yum -y install psmisc Non-LocalIP 커널 바인딩 허용 echo "net.ipv4.ip_nonlocal_bind = 1" >> /etc/sysctl.confsysctl -p Keepalived 설정 (Master 측) global_defs { lvs_id haproxy_DH} vrrp_script check_haproxy { script "killall -..
네이버 로그인 OAuth 인증을 위한 DotNetOpenAuth.AspNet 의 클라이언트 클래스 소스 입니다. 기본적으로 페이스북,트위터,구글,마이크로소프트 프로바이더에 대한 클라이언트를 제공 하지만, 네이버는 없어서 작성해 보았습니다. 참조 종속성으로 DotNetOpenAuth.AspNet 가 필요합니다. (Nuget 검색) 액세스 토큰 Deserialize 를 위해서 Newtonsoft.Json 클래스를 사용했지만, 적당히 변경하시면 참조추가 안하셔도 됩니다. 워낙에 간단한 소스라서 이렇게 업로드하는것도 부끄러울 지경이네요. DotNetOpenAuth 에 대한 사항은 여기 를 참고하세요.
시놀로지의 DSM 이 6 버전으로 업데이트 되면서, 기존에 설치해 놓은 AirComix 가 동작하지 않게 되었습니다. 이런저런 내용을 찾아보니, Web Station 의 경로가 변경되면서 생긴 문제인듯...DSM 이 메이저 버전 업데이트때마다 이런 삽질을 한다하니 -_-; 이걸 어떻게 받아 드려야 할지..... 원포인트 설명을 드리자면,"기존의 자동으로 가상호스트 설정은 삭제하고 수동으로 재구성한다." 입니다 제 구성과 비교해서 적당히 수정하시면 될것 같아 제 구성부터 설명 드리겠습니다. Web-Station 에어코믹스 경로 /volume1/web/comix-server 만화책이 위치한 경로 /volume1/Comic DSM 6 웹스테이션 가상호스트에 보면, 기존에 설정되어 있던 설정들이 있을텐데, 기본..
Sentinel 을 이용하여 Master 서버가 Down 되더라도 Slave 를 자동으로 Master 로 승격시켜 Failover 처리를 할수 있게 되었지만, 클라이언트측에서는 어떤 Slave 가 Master 로 승격되었는지 알 길이 없습니다. 동일한 접속을 보장하기 위해서 HaProxy 를 사용하여 Master 서버는 5000 번, Slave 서버는 5001 번으로 바인딩 해주는 작업을 해보겠습니다. HaProxy 설치 yum -y install haproxy HaProxy 가 설치되는 서버에 필요한 방화벽 Port 들을 열어줍니다. Redis 접속을 위한 6379, 클라이언트 접속을 위한 5000, 5001과 모니터링툴을 위한 80 포트까지 열어 줍니다. firewall-cmd --permanent ..
지난 포스트에서 우리는 Master 1대와 이를 미러링하고 복제하는 Slave 2대를 구성하였습니다. 그런데, 만약 Master 가 예기치 않게 종료되거나, 서버가 다운되었을 경우 Slave 가 Failover 하여 마스터를 대체하는 구성하기 위하여 Redis 에서 제공하는 Sentinel 을 설정해 보도록 하겠습니다. 앞선 포스트에서 구성도를 참조하여 우리는 3대의 Sentinel 을 설치하여 Redis 서버를 감시하는 구성으로 합니다. Sentinel 은 별도의 물리적인 서버에 설치하여 감시토록 해도 되지만, Redis 가 설치된 3대의 서버에 Sentinel 을 설치해서 비용을 절감해 봅니다. Sentinel 은 Master 서버의 장애판단을 위해서 리더를 두고 투표하여 다수결의 원칙에 따라 장애판..