Tag Archives: replication

repcached – memcached + replication

repcachedmemcached에 리플리케이션(replication) 기능을 추가한 프로그램입니다.

memcached가 cache이기 때문에 세션정보등을 저장하기는 좀 불안한 면이 있죠. 그래서 memcached(repcached)를 두개 띄워놓고, 하나가 중단되더라도 replication을 해두면 보다 안정적으로 서비스 운영이 가능합니다.

repcached 서버를 두군데 띄우고 양쪽으로 리플리케이션 되도록 세팅하면 한쪽에 key,value를 입력하면 다른 서버에도 같은 key,value가 입력됩니다. 그리고 서버 재시작할때 다른쪽 서버의 모든 key,value를 받아오도록 되어있으니, memcached를 재시작해야하거나 서버의 문제로 종료된 경우 캐시를 전부 날리지 않아도 됩니다.

그리고 memcached 클라이언트 라이브러리를 그대로 이용할수 있으므로, 클라이언튼 쪽은 서버에 양쪽 서버 주소만 등록해주면 됩니다.

repcached는 memcached의 패치입니다. 따라서 컴파일하면 memcached 파일이 생성됩니다. 저는 혹시를 위해서 실행파일명을 repcached로 변경하여 설치했습니다.

아래처럼 두개의 호스트에서 repcached를 실행하면 모든 key,value가 공유됩니다.

10.0.0.2> repcached -m 128 -l 10.0.0.2 -p 4001 -d -x 10.0.0.3

10.0.0.3> repcached -m 128 -l 10.0.0.3 -p 4001 -d -x 10.0.0.2

한가지 불편한점은 하나의 호스트에서 리플리케이션하도록 세팅이 불가능해보입니다. -X로 replication에 사용하는 포트를 지정할수는 있지만, 상대편의 replication 포트를 지정하는 옵션이 없어서 어떻게 세팅해야할지 모르겠네요. 하지만 두개의 서버에 나누어 실행하는게 더 안전하므로 실제 서비스 적용할때는 크게 문제가 되지 않을거라 생각되네요.

memcached와 성능상의 차이가 얼마나 있는지는 테스트해봐야할듯하네요.

그리고 memcached와 마찬가지로 메모리가 부족하면 임의의 key,value를 지울듯한데, 세션정보등을 repcached에만 의존해도 되는지 의문이 드네요.

캐시가 날라가면 캐시를 채울때까지의 서버 부하 감소용으로 사용하면 좋을듯하네요. 그리고 read를 분산하는 효과도 있겠죠.