æ¨æ¥(2014/04/15)ã«LINE Developer Conferenceã«åå ãã¦ãã¾ããã
å¯ããã¨ãæ°¸ä¹ ã«æ¸ããªãæ°ãããã®ã§ãæ¶åãåãã¦ãªããã©ãã¡ã¢æ¸ãã ãæ®ãã¦ããã¾ãã
- LINE Developer Conference éå¬ã®ãç¥ãã
ä»ã¾ã§ãLINEã®ã¤ã³ãã©åããã©ããªã£ã¦ããã®ãã£ã¦ãã¾ãæ
å ±ãè¦ããã¨ãªãã£ãã®ã§ãèå³æ·±ãèãã¦é¢ç½ãã£ãã§ãã
æ®æ®µé¢ãã£ã¦ãããµã¼ãã¹ã¨ã¯å
¨ç¶è¦æ¨¡ãéããä¸çå±éãããµã¼ãã¹ãªãã§ã¯ã®è©±ãªã©ã¨ã¦ãé¢ç½ãã£ãã§ãããããã¯ã¼ã¯åãã§ãæã¡ããã£ã¨è§¦ã£ã¦ããMPLSã®åèªãåºã¦ãã¦æãããã£ãã
ãããã話ãèãã¦ãã¦ãLINE社ã¯é¢ç½ãããªæè¡ã使ã£ã¦ãã¦ãã®ã§ãããããä¼ç¤¾ã§åããã¨ããã楽ãããã§ããã
ããããæ©ä¼ãã¾ããã£ããæ¯éåå ãããã§ããéå¶ã®æ¹ã
ãããã¨ããããã¾ããããç²ãæ§ã§ããã
line developer conferenceã¡ã¢
- æ¬æ¥ã¯ã¹ã©ã¤ãæ®å½±ç¦æ¢
- ã¡ã¢å 容ã¯ãããã§ãå ¬éãã¦è¯ãã
- ä»æ¥ã¯ITãµã¼ãã¹ã»ã³ã¿ã¼ã®è©±
- 150/460
- ä½ã®æ°åã ã£ããã?
- ç¾å¨éçº2ãããä½å¶
CTO ãã¯ã¤ãã³ãã
- 100å message/ day
- globalå±é
- åå°ã«LINEé å¾éãé ç½®
ãµã¼ãã¹éçºæ å½ ããã¹ãã
- ãµã¼ãã¹éçºãæ¯æ´ ä¸è¨ã®4åéããµãã¼ã
- system
- database
- network
- sedurity
session 1 LINEãµã¼ãã¹ã®ã·ã¹ãã éå¶ ä½éãã
- 2000/9å ¥ç¤¾
- ã·ã¹ãã éå¶ãã¼ã ããã¼ã¸ã£ã¼
- éçºè <=> SYSTEM <=> ãã¼ããã¼ä¼æ¥
- ãã®éãã¤ãªããä»äº
- LINEã®2å¹´é
- ãµã¼ãã¼ããµã¼ãã¹å¢å
- ã¡ã³ãã¼ã¯å¢ãã¦ãªããããªãã¨ãåã£ã¦ã
- plug and install (èªåã¤ã³ã¹ãã¼ã«)ãLINEåãããã£ãã®ã§çååã¯ã§ãã¦ãã
- ALIS
- WDS
- LAN CABLEãã¤ãªãã§é»æºå ¥ããã ãã§ãµã¼ãæ§ç¯ã§ãã
1. IDCå ã®Connection Timeout
- Internetã§ã¯timeoutãæèããè¨è¨ãå¿ è¦
- ã²ãããã£ã¦ãIDCå é¨ã¯?
- L2ã¹ã¤ããã®ã®ãã©ãã£ãã¯
- 700Mbps
- 704discard/sec !
- ãã£ãã·ãã£ã«ä½è£ãããã®ã«dscardãã¦ã
- short burst trafficãåå
- L2ã¹ã¤ãããã¼ãã§ãããã¡ãªã¼ãã¼ããã¼
- é£ç¶ããTrafficã¯åé¡ãªã
- => burst trafficãçºçãããªãè¨è¨ãå¿ è¦
- ããã¯messagingãµã¼ãã¹ã§ã¯ãããã
- 解決ç
- => buffer ã®å¤§ããã¹ã¤ãããå ¥ãã
- => burstããããµã¼ãã¹ã¯ãããã¯ã¼ã¯éé¢
- 解決ã¾ã§1å¹´è²»ããã
2. IDC空éã®ä¸è¶³
- ãµã¼ãã¯ç§ãç¥ããªãéã«IDC空éãé£ãã¤ã¶ãã¦ãã£ã
- ãµã¼ããè¨ç½®ãã空éãç¡ãã¦è¦ããã£ã
- 2ã¤ã®å¯¾ç
- æ§è½ããã«ããã¯ã®ãããµã¼ãã®ã¹ã±ã¼ã«ã¢ãã
- ä»®æ³å
LINEãµã¼ãã®ä¸ã§ä¸çªå¤ãã¯ã©ã¹ã¿ã¼ãµã¼ã㯠HBase
- HBaseã®ç¹å¾´
- scaleãã
- fail over
- data copy(åé·å)
- 1000å°ã®å£
- ã¹ã±ã¼ã«ã¢ã¦ããã¦ãæã£ãããæ§è½ãåºãªã
- å°æ°å¢ã«ãã
- æ éçå¢
- éç¨ã³ã¹ãå¢
- ããã§=>Scaleupãã¦å°æ°æ¸ããã¦ã¿ã
- CPU Discã¯åé¡ãªã
- IOãããã«ããã¯
- ãµãã¤ã®IOææ¨
- IOPS
- Functional IOPS (RAID)
- ããä»åº¦ã¯IOã解æ¶ããã¨CPUãã¤ã¾ãã®ã§Scale UPã¯ããã¾ã§
ä»®æ³å
- ä»®æ³åããã«ã¦ã§ã¢
- éç¨æ§(å®å®æ§)ã絶対çãªåºæºã¨ãã¦é¸æãã
- ã³ã¹ãã®åé¡ããããä»ã®ã¨ãã使ã£ã¦ã
- 1ç©ç 10VM
3.éå¶ ã¤ã·ã¥ã¼
- éå¶æ¥åã¯ãã£ã¨ç¹°ãè¿ããã
- ãã®ä¸ã§ã®äºæ³å¤ã®ã¤ã·ã¥ã¼
- 2013å¹´ã®ãã«ã¹åé¡ãç¡äºã«éããã
- 2013å¹´ã®å°éã®ã¨ããç¡äºã«éããã
- ã ããããã¤ãã®2åã®ã¡ãã»ã¼ã¸æ°ãæµãã
- ãã2014/1/1ã¯ç¡äºã§ã¯ç¡ãã£ã
- å年度ã®åèã«é常ã®æ°åã®ãã©ãã£ãã¯ãäºæ¸¬
- äºæ³éãã®ä¸æ
- å ¨ã¦æ³å®éãã«è¦ãã
- ããçªç¶ã¡ãã»ã¼ã¸éä¿¡ãä¸å®å®ã«
- Redis Storageã®ä¸é¨ã®shardã«è² è·ãéä¸
- Redisã¨éä¿¡ãããµã¼ãretryãç¹°ãè¿ã
- Redisã¨NICã®å²ãè¾¼ã¿ãåãå¥æ°çªã®CPU Coreã使ã£ã¦ããäºãçºè¦
- watch -n 1 "cat /proc/interruputs" ã§çºè¦
- é«è² è·æã«èµ·ããé常ã«ä¸éãªç¶æ³ç¶æ³
- å¿æ¥å¦ç½®
- tasksetã³ãã³ãã§Redisãµã¼ãã®CPU Coreãå¶æ°çªå·ã«
- => 100% => 70 80ã¸
- æä¹ å¦ç½®
- NICã®Interruput handling listããå¤ãã
ããã¡ãã詳ãã説æãã£ãã¯ãã
session2 LINE DBã·ã¹ãã ã®é«å¯ç¨æ§ã«ã¤ã㦠ãã§ãã®ã§ã³ãã
- ãã¼ã¿ãã¼ã¹éå¶ãã¼ã
- LINE Game
- ã¢ã¸ã§ã³ã
- 1. lineãµã¼ãã¹ç¹å¾´
- 2. èªåfailover
1.lineãµã¼ãã¹ã®ç¹å¾´
- 400million user
- ã¦ã¼ã¶å¢ã«åããå¿ è¦
- æ§ã ãªLINEã³ã³ãã³ã
- 使ç¨DBã®å MySQLã73%
- 容éç®å®ã®é£ãã
- ãã£ãºãã¼ãã ãã ã¯å½åäºæ³ã®10å
- ä»äºã§ã®æ©ã¿
- 24æééç¢å¯¾å¿ã®å¿ è¦
2. èªåFAILOVER
- Multi-Master Replication Manager ã¨ãããã®ã使ã£ã¦ãã
- percona社éçº
- LINEã§ã¯ã«ã¹ã¿ãã¤ãºãã¦ãã
- masterãµã¼ãã«read/writeç¨ã®vip
- slaveãµã¼ãã«readonlyã®vipãã¤ãã
- MMM Managerãheartbeatç£è¦
- éç¢æã«monitã«ãã£ã¦slaveã®read_only(mysql variable)ã解é¤ãread/write vipãä»ä¸ãã
éç¢æã®ã·ã¼ã±ã³ã¹ã¡ãã£ã¨ä¸æã ã£ãã®ã§ãå¾ã§èª¿ã¹ã
3. ç¡åæ¢Shard 追å
- N-Base
- LINEãéçº
- ç¡åæ¢ã§Shard追å åé¤ãã
- idã«hashãéãã¦group idãçºè¡ãã¦ãCG mapã§shard idã¨group idããããã³ã°ãã
- åshardã«è¤æ°ã®ã°ã«ã¼ããåå¨ãã
MMM Customize
- Muliti-Monitor
- æ®éã¯1å°ã§1ã¢ãã¿ã¼ è¤æ°å°ã¢ãã¿ã¼ã§ããããã«
- å¤é¨ã¹ã¯ãªãããfailoveræã«å®è¡ã§ããããã«
- Replicationãã§ãã¯æ©è½åé¤
- replié 延ãerrorã§failoverãããçºçãã¦ãã®ã解æ¶
- éç¢å¤æ
- Select Now()ã®è¿å¤ãã¿ã¦ã
- Dummy Tableã¸update ã¯ã¨ãªãå®è¡ããããã«å¤æ´
- Disc full, system error æã«ãfail overã§ããããã«
N-baseã«é¢ãã¦ããå°ã
- ãã¼ã¿ã³ãã¼æã® ãã¼ã¿å¤æ´ã¸ã®å¯¾å¿ã¯ã©ããã¦ãã
- Sys_Tsé ã«ãã¼ã¿ããã£ã³ã¯ã§ã³ãã¼ãã¦ã
- æ´æ°ããããã°Sys_Tsãæ´æ°ãããã®ã§å度ã³ãã¼ããã
timestampã¿ãããªã«ã©ã ?
FAQ
LINEéå¶è¦æ¨¡
- ãµã¼ã 5digits
- network ä¸çä¸å¨
- db 4digits
社風 æ £ç¿
- 諦ããªã
- ãã£ã¬ã³ã¸
- æ©ã
- å¤åã¯å½ããå
å¤ã«ã¯åºããªããã©åãããã®
- ãããªãã®ãªããã©ã
- sessionæ å½ã¯ç¤¾å¡çªå·ãè¥ã
- ITSCã®officeã¯ãã«ãªã¨ãããªã
- 4åçªç ´ã®ãã¿ããããªãã£ã
- 3åã¦ã¼ã¶çªç ´æã¯ãã£ã
- 4åã¯ééç¹
ç®æ¨
- 5åã¦ã¼ã¶
sesion3 LINEãµã¼ãã¹ãããã¯ã¼ã¯ã¤ã³ãã©åãçµã¿äºä¾
- 1.ã¦ã¼ã¶æ°å¢å
- 2.ã¯ã¼ã«ãã¯ã¤ã
- 3.ã¹ãã¼ããã©ã³/ã¡ãã»ã¼ã¸ã³ã°ã¢ããª
1.ã¦ã¼ã¶æ°å¢å
- 4æã«4å人
- ãã©ãã£ãã¯å¢å
- ãµã¼ãã®å¢å
- 課é¡
- ãã¼ã¿ã»ã³ã¿ã¼å é¨ãããã¯ã¼ã¯
- ãµã¼ãééä¿¡
- ãããã¯ã¼ã¯ãä¸å®å®
- ãã¼ã¿ã»ã³ã¿ã¼ã¹ãã¼ã¹
- ãµã¼ãå°æ°å¢
- ã©ãéç¨ãããã課é¡
- unknown unicast floodingåé¡
- åãVLANå ã§mac address tableãflushããã
- ãã®ã¨ã1Gbpsé·ã®ãã©ãã£ãã¯ãæµãã
- ä¸è¬çãªãã¼ã¿ã»ã³ã¿ã¼
- L2ãã¡ã¤ã³ãã©ãã¾ã§ã«ããã
- ã¨ãã¸ã¹ã¤ããåä½ã§
- éç·ã¹ã¤ããåä½ã§(LINEã§ã¯åã®åä½ãPODã¨å¼ã¶ããã)
- åé¡çºçæã¯PODåä½ã§L2ãã¡ã¤ã³ãæ¬ã£ã¦ãã
- æ¹åç
- ãããã¯ã¼ã¯ä¸å®å®è¦ç´ ãæ¸ããããããµã¼ãé ç½®ã®èªç±åº¦ãé«ããã
- L2ãã¡ã¤ã³ã¯ã¨ãã¸ã¹ã¤ããåä½
- Internetåãéä¿¡ã¨Podééä¿¡ã®åé¢
- 1podããã 160Gbps
- ãã¼ããã©ã³ãµã¼ãL3DSRã§æ§æ
- ãµã¼ããã©ãã«ç½®ãã¦ãOK
- ããããLBã®æ§æ
- In-Line
- æ»ãã®ãã©ãã£ãã¯ãLBãçµç±ãã
- L2DSR
- åããããã¯ã¼ã¯ã®åå¿ è¦ããã
- L3DSR Tunnelæ¹å¼
- IPã«ãã»ã«å => ãã±ãããµã¤ãº(MTU)ãèããªãã¨ãããªã
- L3DSR DSVPå½¢å¼ <== ããã使ã£ã¦ã
- DSCPãã£ã¼ã«ããå©ç¨ãã
ãã¼ã¿ã»ã³ã¿ã¼
- é¸å®åºæº
- é«å¹ç/é«å¯åº¦ã»ã³ã¿ã¼
- 1ã©ãã¯ãããã®å容å°æ°ãå¤ã è²»ç¨é¢
- å®è¡8kVA以ä¸/ã©ãã¯
- éç¨èª²é¡
- ã©ãããã°é«ã¹ããã¯åIDCã使ãããªããã
- 51Uã©ãã¯ãæ¡ç¨
- ãã¾ããããã¦ããªãã®ã§ç¹æ³¨
- å®æ ¼24kVAã100å£ã®é»æºãæè¼
- å¶ç´
- 空調å¹çãé«ããããã®å¶ç´ãå¤ã
- ã¨ã¢ããã¼
- åå¸æ° å¾ææ°
- åé¡ã¯ã¹ã¤ãã
- åé¢ã«ã¤ã³ã¿ã¼ãã§ã¼ã¹
- ã©ãã¯ã®èé¢ã«ãã¦ã³ãããã ãã¡
- ã¹ã¤ããã«ç±æ°ãä¼ãã£ããã?
- ã¹ã¤ããã«ç±ãä¼ãããªãããã«ããªãã¨
- ã¹ã¤ãããã¯ããç¬èªã«ä½ã£ã
2.ã¯ã¼ã«ãã¯ã¤ã
- æµ·å¤ã§ãå©ç¨ããã¦ãã
- æµ·å¤å©ç¨ã®å質確ä¿ã®ããã«æ ç¹ãæ§ç¯
- å質ä½ä¸ãã¤ã³ã
- ãã£ãªã¢ã®ç¸äºæ¥ç¶ãã¤ã³ã
- ç©ççãªè·é¢
- 解決ã®æ¹åæ§
- local ISPã¨ç´æ¥çãªãã¹ãæã¤
- å©ç¨è ã«è¿ãã¨ããã«ãµã¼ããé ç½®
- å©ç¨è ãä¸çªè¿ããµã¤ãã«æ¥ç¶ãä»çµã¿(ã¢ããªå´)
ã°ãã¼ãã«ã¤ã³ãã©
- ç©çãããã¯ã¼ã¯
- å½éå°ç¨ç·ã¯é«ãã®ã§(å¿ è¦ãªç·ã ãå¼ãã¨ãããã¿ã ã¨ç解ãã)
- ä¸ç主è¦ãªå°åã«æ ç¹ãç½®ã
- ããã¯ãã¼ã³ããªã³ã°ãããã¸ã¼ã«ãã
- è«çãããã¯ã¼ã¯
- ãããã¸ã¼ã«ã¨ããããªããããã¯ã¼ã¯ãæ§æ
- MPLSã§Pseudo Wireãæ§ç¯
- ããã¯ãã¼ã³å´ã§ã¯ã«ã¼ãã£ã³ã°ã管çããããªã
- è«çãããã¯ã¼ã¯ã§å®ç¾ãããäº
- ã¤ã³ã¿ã¼ãããéä¿¡ã§å©ç¨è ã«è¿ãã¨ããã§å容
- æ ç¹ééä¿¡
- 2ã¤ã®ãããã¯ã¼ã¯ãå¥ã ã«æ§ç¯
- ããã«ããéç¨ãã·ã³ãã«
- ãµã¤ãã®é¸æ
- ã¯ã©ã¤ã¢ã³ãå´ã«æ©è½ãå®è£
- ãããããªæ å ±ãåèã«static ã«å²ãå½ã¦
- ãã£ãªã¢æ å ±
- ç»é²é»è©±çªå·
- GeoIP
- ãããã³ã°æ å ±ãã¯ã©ã¤ã¢ã³ãããã¦ã³ãã¼ããã
- æé帯ã§å¤åãããããããéç¢æã«åé¡ããã£ãã
- GSLBãæ¤è¨ä¸
3. ã¹ãã¼ããã©ã³ ã¡ãã»ã¼ã¸ã³ã°ã¢ããª
- ãªã¢ã«ã¿ã¤ã å¶éè¦
- ã¡ãã»ã¼ã¸ã®ããã¨ã
- éç¥
- TCPã»ãã·ã§ã³ãå¼µãç¶ãã
- Androidã¯LINEç¬èªã®éç¥ã·ã¹ãã ãå©ç¨
- æ·±å¤ã§ãã»ãã·ã§ã³æ°ãè½ã¡ãªã
- è¨å¤§ãªã»ãã·ã§ã³æ°
- ææã§1800ä¸ã»ãã·ã§ã³
- LBã®ã»ãã·ã§ã³ãããã«ããã¯ã«
- ã»ãã·ã§ã³ãã¼ãã«ã®ã¨ã¼ã¸ã³ã°æé調æ´
- 解決ç
- æ©å¨ãå¢ããã¦è² è·åæ£
- éç¨ã®è² è·ãé«ã
- ããé«ã¹ããã¯ã®ãã®ã«
- ãã¨ãã¨é«ä¾¡ãªãã®ãªã®ã§ç¾å®çããç¡ãã£ã
- LBã§ã»ãã·ã§ã³ç®¡çããªãæ§æã« <== ãã®æ¹åæ§ã¸
- stateless SLB
- ã»ãã·ã§ã³ãã¼ãã«ã§ãªãããã·ã¥ãã¼ãã«ãå©ç¨
- ã»ãã·ã§ã³ãã¼ãã«ã ã¨ãªã¼ãããã¼ããã
- ã»ãã·ã§ã³ãã¼ãã« 1対1
- 1000ä¸ã®src ipãªã1000ä¸ã®ãã¼ãã«ãå¿ è¦
- ããã·ã¥ãã¼ãã« ãµã¼ãã«å¯¾å¿åºæ¥ãã ãã®ããã·ã¥ãã¼ãã«ãããã°è¯ã
- ããã·ã¥ãã¼ãã«ã®åè¨ç®åé¡
- éç¢æ
- ããã·ã¥ãã¼ãã«å ¨ä½ãåè¨ç®ããã å®è£
- è² è·åæ£ã®åä¸æ§ +
- é¢ä¿ãªãã¦ã¼ã¶ãå½±é¿åãã -
- è½ã¡ãããã·ã¥ã ãåè¨ç®ãããå®è£ <== ã¦ã¼ã¶ã¸ã®å½±é¿ãæå°éã«ãããã¨èãæ¡ç¨
- å½±é¿åããã¦ã¼ã¶ãæå°é +
- è² è·ã®åããçºçãããã -
- ä¸é·ä¸ç
ä»ã®ã¨ãã大ããªåé¡ã¯ç¡ã
- åLBã®ç¹æ§ãç解ãã¤ã¤éç¨ããå¿ è¦ããã
- åä½ä»æ§ã®é示ãã¡ã¼ã«ã¼ããã¾ããã¦ãããªã
- ããã·ã¥ãã¼ãã«ã¯ã»ãã·ã§ã³æ°ã«å¯¾ãã¦ã¹ã±ã¼ã«ãã
- å°æ¥?
- ãããªã«é£ããäºãã¦ãªãã®ã§OpenFlowã¨ã?