������
Redis Sentinel �Ǿ�Ĺ�������Ȥ�ݤ�������
ɸ�ൡǽ�Ȥ��ơ���ץꥱ�������Pub/Sub������������������ǽ�����ܤ�Redis�Ǥ����������ӥ�����������ݤ˾�Ĺ������ɤ��Ȥफ�Ȥ��ä��������ˤʤäƤ������⤤��ΤǤϤʤ��Ǥ��礦����
�ޤ��ޤ�������ǤϤ���ΤǤ�����Redis�˼�������Ƥ���RedisSentinel���Ѥ��ƾ�Ĺ�������Ȥ���ݤ˥ϥޤä���򤴾Ҳ𤷤����Ȼפ��ޤ���
RedisSentinel�Ȥ�
Redis��ɸ���������Ƥ��뵡ǽ�ΰ�Ĥǡ�Redis�Υ��ơ������ƻ롢���Ρ���ư�ե����륪���С����Ԥʤ��ޤ���
�ܺ٤ʻ��͡�����˴ؤ��Ƥϰʲ��Υɥ�����Ȥ򤴳�ǧ��������
http://redis.io/topics/sentinel
RedisSentinelƳ�����ι���

�ä˲�����ů��̵�������Ǥ���
Redis�����д֤Ǥ�RealIP���Ѥ��ƥ�ץꥱ��������Ԥʤ���WEB�����о�Υ��ץꥱ������󤫤�Redis�����Ѥ���ݤ�MASTER�����ꤵ��Ƥ���VIP���˥ꥯ�����Ȥ�Ф��ޤ���
RedisSentinelƳ����ι���

RedisSentinel�����Ф�3���Ѱդ����ƻ���������VIP�ˤ��Ƥߤޤ�����
��RedisSentinel������϶��̤ǰʲ����ͤˤʤäƤ��ޤ���
1. sentinel monitor prod 192.168.8.1 6379 2 2. sentinel down-after-milliseconds prod 3000 3. sentinel failover-timeout prod 6000 4. sentinel can-failover prod yes 5. sentinel parallel-syncs prod 1 6. sentinel client-reconfig-script prod /opt/klab/sbin/redis_chroute.sh�ƻ����VIP�ˤ��뤳�Ȥǡ��㳲ȯ������RedisSentinel���Ƶ�ư���Ƥ�ƻ��³�Խ����褦�ˤ��Ƥߤޤ�����
���θ��ڻ����Ǥ�Redis2.6.12����Ѥ��Ƥ��ꡢ�츫�����̤��ư��Ƥ���....�褦�˸������ΤǤ�������������Τޤޤ�Redis2.6.13�ʹߤΥС��������֤��������ݤˡ����꤬ȯ�����ޤ�����
�ޤ����ɥ�����Ȥ�褯�ɤ�����ϴ��ˤ����Ť����⤷��ޤ��󤬡��С������ط��ʤ��㳲ȯ������SDOWN�򸡽ФǤ��ʤ��ʤ��礬����ޤ���
DEMOTE flag
�ޤ���Redis�ΥС�������2.6.13�ʹߤˤ����������꤫���������ޤ���
Redis2.6.13�ʹߡ���DEMOTE flag�פ��ɲä���ޤ����� ���̤���줺��ODOWN�Ȥ��ư���줿MASTER���Ф���ɳ�Ť��ե饰�Ǥ��� ���Υե饰��Ω�ä����󥹥��󥹤��Ф��Ƥ����̤������ͤˤʤä��ݡ������ߤ�MASTER(��SLAVE)�Ȥʤä�Redis��SLAVE�Ȥ���ư���褦�˺����꤬�Ԥʤ��ޤ���
�����äȾ�Ĺ�������Ȥ�ľ�������Ǥ���ΤǾ������Ѥ��ڤˤʤꤽ���ʵ�ǽ�Ǥ���
��������VIP��RedisSentinel�δƻ���ˤ�����硢�åµï¿½ï¿½Ç½ï¿½Î±Æ¶ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ê¤¬È¯ï¿½ï¿½ï¿½ï¿½ï¿½Æ¤ï¿½ï¿½Þ¤ï¿½ï¿½Þ¤ï¿½ï¿½ï¿½
��RedisSentinel��MASTER��SLAVE�˴ؤ���������äƤ���ΤǤ������㳲ȯ�����Ⱦ㳲ȯ����ξ��֤�ޤˤ��Ƥߤޤ�����
���㳲ȯ����

ip | port | status |
192.168.8.1 | 6379 | MASTER |
10.13.0.2 | 6379 | SLAVE |
���㳲ȯ����

ip | port | status |
192.168.8.1 | 6379 | DOWN |
10.13.0.2 | 6379 | MASTER |
�ե����륪���С����»ܤ����ȡ�SLAVE��MASTER�ؤȾ��ʤ���ȶ���VIP������Ѥ���ޤ���
���κݡ�RedisSentinel����Ϥ��������MASTER�����������褦�˸����뤿�ᡢ�����ߤ�MASTER(��ʬ����)�إ�ץꥱ��������Ԥʤ��褦�������Ԥʤ���̤Ȥʤ�ޤ�����
���η�̡�MASTER�ԺߤȤʤꥵ���ӥ��˻پ㤬�ФƤ��ޤ��ޤ���
SDOWN�򸡽ФǤ��ʤ��ʤ�
����ϥɥ�����Ȥ�褯�ɤ��ĺ���Ȥ狼��ΤǤ�����RedisSentinel�Ͼ㳲(SDOWN)���Τ���ȡ���ʬ�ʳ���RedisSentinel���Ф��ơ� is-master-down-by-addr �ץ��ޥ�ɤ��Ѥ���MASTER�ξ������䤤��碌�ޤ���
���λ��������Ȥ��ƾ㳲��ȯ�������Ȼפ���MASTER��IP�ȥݡ����ֹ椬 is-master-down-by-addr ���ޥ�ɤ�Ϳ������ΤǤ��������ξ��󤬳�Sentinel�λ��ĥΡ��ɾ���Ȱ��פ���ɬ�פ�����ޤ���
�ʲ��οޤˤ���褦�ˡ��ե����륪���С���������RedisSentinel��Ω���夲ľ������硢Ʊ��MASTER����³���Ƥ��Ƥ⡢IP�ȥݡ����ֹ�˺��ۤ��ФƤ��ޤ�����MASTER�Υ��ơ��������������֤����Ȥ��Ǥ��ޤ���

���Τ褦�����꤬�����������麣���ߤ�RedisSentinel�δƻ����RealIP�ؤ��ѹ����Ƹ��ڤ�³���Ƥ��ޤ���
�ں���ΤޤȤ��
* Redis Sentinel�����Ѥ��ƾ�Ĺ�������Ȥ��������롣
* Redis2.6.13�ʹߤΥС����������Ѥ���ȡ����Ѥ������ڤˤʤ�Ϥ���
* RedisSentinel�δƻ��оݤϡ�VIP�ǤϤʤ�Real IP�����ѡ�
���ڽ���ǤϤ���ޤ�����RedisSentinel���˻Ȥ��䤹���������ʤȤ������ݤǤ���
�ޤ��Ȥä������Ф��ݤˤϤ�����Ǥ��Ҳ𤵤���ĺ���ޤ���
repcached-2.0��꡼���Τ��Τ餻�ȡ�Ķ��ñ�ʥ���ץ륳����
repcached-2.0(memcached-1.2.5�١���) ���꡼�����ޤ����ΤǤ��Τ餻���ޤ���
- http://lab.klab.org/modules/mediawiki/index.php/Repcached (���ܸ�)
- http://repcached.lab.klab.org/ (�Ѹ�)
������̤ܶϥޥ���ޥ��������Υ��ݡ��ȤǤ���
�����ΥС������ϥޥ���/���졼�ֹ������ä��Τǡ�ɬ���ޥ����ؽñ¤¹ï¿½ï¿½Þ¤Ê¤ï¿½ï¿½ï¿½Ð¤ï¿½ï¿½ï¿½ï¿½Þ¤ï¿½ï¿½ï¿½Ç¤ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Î¤ï¿½ï¿½á¡¢ï¿½ï¿½Â³ï¿½ï¿½Î¥ï¿½ï¿½ï¿½ï¿½Ð¤ï¿½ï¿½Þ¥ï¿½ï¿½ï¿½ï¿½Ê¤Î¤ï¿½ï¿½É¤ï¿½ï¿½ï¿½ï¿½ò¥¯¥é¥¤ï¿½ï¿½ï¿½ï¿½È¤ï¿½È½ï¿½Ì¤ï¿½ï¿½Ê¤ï¿½ï¿½ï¿½Ð¤ï¿½ï¿½ï¿½ï¿½Ê¤ï¿½ï¿½Ã¤ï¿½ï¿½ê¡¢keepalived�ʤɤ�ʻ�Ѥ���ʤɤι��פ�ɬ�פǤ�����������ΥС������ǤϤ���ɬ�פ��ʤ��ʤ�ޤ���ξ���Υ����Ф��Ф��ƥǡ�����ñ¤¹ï¿½ï¿½à¤³ï¿½È¤ï¿½ï¿½Ç¤ï¿½ï¿½ï¿½è¤¦ï¿½Ë¤Ê¤Ã¤ï¿½ï¿½Î¤Ç¡ï¿½ï¿½ï¿½ï¿½Ê¤ï¿½È¤ï¿½ï¿½ä¤¹ï¿½ï¿½ï¿½Ê¤Ã¤ï¿½ï¿½È´ï¿½ï¿½ï¿½ï¿½Æ¤ï¿½ï¿½Þ¤ï¿½ï¿½ï¿½
repcached�ϥѥե����ޥ󥹤�ǽŻ뤷�Ƥ��뤿�ᡢ��ץꥱ����������Ʊ���ǽ������Ƥ��ޤ����������äơ�set��Ʊ���˥�ץꥱ������󤬴�λ�����ݾڤϤ���ޤ��󡣤Ĥޤꡢ������A��set����ľ��˥�����B����get������硢�������ͤ��֤äƤ��ʤ���ǽ��������ޤ���
��������memcached�Υ��饤����ȥ饤�֥������ʬ����ǽ����äƤ��ơ�ʣ���Υ����Ф������硢�����Υϥå����ͤ򸵤ˤ�����³��Υ����Ф����򤵤�ޤ������Τ��ᡢƱ��Υ������Ф�������ɬ��Ʊ�������Фǽ�������ޤ��������ޤˤ���Ȱʲ��Τ褦�ʴ����ˤʤ�ޤ���

�Ĥޤꡢ���饤����ȥ饤�֥������ʬ����ǽ�����Ѥ���ȡ��ǡ������Ǽ���������Ф�Ʊ�������Ф����Ȥ����Τǡ���Ʊ�������˵�������ǡ������������ȯ�����ޤ��󡣤����ơ����٤ƤΥǡ�����ξ���Υ����Фس�Ǽ����Ƥ���Τǡ������Υ����Ф������󤷤Ƥ⤹�٤ƤΥǡ������ݻ�����ޤ���

�����������Ȥ��褦�Ȥ��������Ф������󤷤Ƥ������ˡ���ưŪ�ˤ⤦�����Υ����Фػ��Ȥ��ˤ������ɤ����ϡ����饤����ȥ饤�֥��μ����˰�¸���ޤ����㤨�С�PHP �� memcached extension ���󶡤���� Memcache::set �ؿ��ξ��ϡ�Version3.0.0�ʾ�ʤ�м�ưŪ�˺���³���Ƥ���ޤ�����Version2.2.3�Ǥϥ��顼�ˤʤäƤ��ޤ��ޤ������Τ褦�ʾ��ϡ���ʬ�Ǻƻ�Ԥ���ʤɤν������������ɬ�פ����뤫�⤷��ޤ��󡣥��å����ϥ�ɥ��session.save_handler="memcache"�ˤ����Ѥ�����ϡ��С������2.2.3�Ǥ����³���Ƥ���ޤ���
��������ϸ�ۤɤ��Ҳ𤷤ޤ���
�����󤷤Ƥ��������Ф����줷�ƺǽ�ˤ�뤳�Ȥϡ���¸�Υ����Ф����ƤΥǡ�����ʣ���ʰʲ����ޤ뤴�Ȥ��ԡ��ˤ��뤳�ȤǤ������δ֡�������Υ����Фϥ��饤����Ȥ������³������դ��ʤ��Τǡ����ä�����Ⱦü�ʾ��֤Υǡ�����������Ƥ��ޤ����ȤϤ���ޤ��󡣤ޤ����ޤ뤳�Ȥ��ԡ��κ���Ǥ⡢���ԡ����Υ����Ф��Ф��Ƥ�����˥��������Ǥ���Τǡ������ӥ�����ߤ��Ƥ��ޤ����ۤ⤢��ޤ���

�ޤ뤴�Ȥ��ԡ�����λ���衢��ץꥱ��������Ƴ�����ξ���Υ����Фإ��������Ǥ���褦�ˤʤ�ޤ����ޤ뤴�Ȥ��ԡ��ν��׻��֤ϡ������ӥåȥ������δĶ���10�����3�����١�100�����30�����٤Ǥ�����
��ñ�ʻ�����
����ñ�ʻ�����Ȥ��ưʲ��Υ����ɤ�Ҳ𤷤ޤ������å�����ѿ������Ѥ��ơ�������ɤ��뤿�Ӥ˥����󥿤������Ƥ���PHP�Ǥ��� ���å����ϥ�ɥ�Ȥ���memcache��Ȥ����ǡ�������¸���rcd1��rcd2�Ȥ��������Ф���ꤷ�Ƥ��ޤ���rcd1��rcd2�Ǥ�repcached��ư���Ƥ����ޤ���
[count.php]<?PHP $rcd1="tcp://rcd1?persistent=1&weight=1&timeout=1&retry_interval=15"; $rcd2="tcp://rcd2?persistent=1&weight=1&timeout=1&retry_interval=15"; $session_save_path = "$rcd1,$rcd2"; ini_set('session.save_handler', 'memcache'); ini_set('session.save_path', $session_save_path); session_start(); if(empty($_SESSION['count'])){ $_SESSION['count']=1; } else { $_SESSION['count']++; } echo "count=".$_SESSION['count']."\n"; ?>��PHP-5.2.5 + memcache-2.2.3��ư���ǧ
�֥饦���Ǥ��Υڡ����إ�����������ȡ�������ɤ����٤˥����󥿤������Ƥ����ޤ��� rcd1,rcd2�Τɤ��餫��ư���Ƥ���¤ꥫ���󥿤�����³����ξ����ߤ���ȥꥻ�åȤ��ޤ���
���Τ褦�ˡ�repcached-2.0��memcached��2������ʬ������Τ�Ʊ�����Ф����ѤǤ��ޤ��� ���Ǥ�memcached��2�湽���DZ��Ѥ��Ƥ��륷���ƥ�Ǥ���С�repcached-2.0���֤�����������Ǿ�Ĺ�����ˤʤ뤫�⤷��ޤ��� �������˥��ꥸ�ʥ��memcached����٤�ȼ㴳�ѥե����ޥ󥹤�����ޤ���������Ǥ���Ѥˤϻپ�Τʤ���٥�˻ž夬�äƤ���Ȼפ��ޤ��Τǡ��⤷���������Ф����Ѳ������ޤ���
keepalived�α��ѥΥ��ϥ����������ޤ� �� ����ե������Ʊ������
naoya��������naoya�����Ǻ��Ǥ���褦�Ǥ���������ե�����ò¤¦¤Þ¤ï¿½ï¿½Ý¼é¤¹ï¿½ï¿½ï¿½ï¿½È¤ß¤ï¿½É¤ï¿½ï¿½ï¿½ë¤«ï¿½ï¿½Æ³ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Ý¤ï¿½ï¿½ç¤ï¿½Ê¸ï¿½ï¿½Ë¤Ê¤ï¿½È»×¤ï¿½ï¿½Þ¤ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Ï¡ï¿½DSAS�ǤϤɤΤ褦�ˤ���2���keepalived���Ѥ��Ƥ��뤫�ò¾¯¤ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Ò²ð¤µ¤ï¿½ï¿½ï¿½Äºï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½È»×¤ï¿½ï¿½Þ¤ï¿½ï¿½ï¿½
³�����ɤ�
����ʤ˴�ñ�� Linux�ǥ����ɥХ�� (3)
�����keepalived�Τ⤦��Ĥε�ǽ�Ǥ���VRRP��Ȥäơ������ɥХ�󥵼��Ȥ��Ĺ�����ˤ��Ƥߤ����Ȼפ��ޤ���
³�����ɤ�
�����ˤ��ƾ�Ĺ�������뤫 ��DSAS�ξ���
����ϳ�ά�Ȥ������ȤǤ������ä��������ޤ������̤ι����ˤĤ��ƤϤޤ�������ƾҲ𤷤����Ȼפ��ޤ���
³�����ɤ�