
ååã®RIT ++äŒè°ã§ã ç§ã¯å¹žéã«ã ããã®èŠæš¡ãšãã®ãããªéèŠæ§ãæã€äŒè°ã®æåã®è¬æŒè ã«ãªããŸããã ãã®èšäºã§ã¯ãç§ãå ±åãããã¹ãŠã®ããšãããäžåºŠèšãããã ãã§ã¯ãããŸããã ãããªã«å€ãã®èŽè¡ã«åããŠè©±ãã®ã¯ç§ã«ãšã£ãŠçããããšã§ããã Webãããžã§ã¯ãã®ç¬èªã®åŸ©å æ§é ããŒãããäœæããããšã§ãã ã»ãšãã©ã®ã·ã¹ãã 管çè ã¯ã倧èŠæš¡ãªãããžã§ã¯ãããŒãããå®çšŒåã§éå§ããæ©äŒãäžããããŸããã ã©ãããŒã ã
ãã§ã«æžããããã«ãã¹ããŒãžããèšç»ããããšããã¹ãŠäŒããããšã¯ã§ããŸããã§ããããã®èšäºã§ã¯ããããã®ã®ã£ãããåããŸããããã«ããããªãã£ã人ã«ãšã£ãŠã¯ãäŒè°ã®ãããªã¯èª°ã«ãç¡æã§æäŸãããŸããã§ããã ã¯ããç§ã¯é·ãéHabrã®ãŠãŒã¶ãŒã«ãªãããã£ãã®ã§ãããæéããããŸããã§ããã 5æã®äŒæ¥ã¯æéãšåãäžããŸããã ãã®èšäºã¯ãå€ãã®æ§æãšã°ã©ãã§ããã»ã©æè¡çã§ã¯ãããŸãã-ãã®èšäºã¯åºæ¬çãªãã®ã§ãããå°ããªæè¡çåé¡ã®ã®ã£ããã¯ãã¹ãŠã³ã¡ã³ãã§åããããšãã§ããŸãã

ã¿ã¹ã¯ãèšå®ããŸã ïŒç¹å®ã®ããŒã¿ã»ã³ã¿ãŒïŒDCïŒã«äŸåããªã99.9ïŒ ã®ãã©ãŒã«ããã¬ã©ã³ãWebãããžã§ã¯ããç·šæããå¿ èŠããããŸããDCã®åãæ¿ãã«äºéã®åé·æ§ãããããã©ã³ã·ã³ã°ã«ãã©ãŒã«ããã¬ã©ã³ã¹ããããå®ãµãŒããŒãéåžžã«è¿ éã«å ¥åºåããŸãã DCã®1ã€ãã¯ã©ãã·ã¥ããå Žåã2çªç®ã®DCã¯ããããããã³åéä¿¡ãªãã§ãã¹ãŠã®ãã©ãã£ãã¯ãåãå ¥ããå¿ èŠããããŸãã ããã§ã¯ãåç·ãé害ããã©ã³ã¹ãããã³éåžžã«å€ãã®ãµãŒããŒã®å±éã«ã€ããŠã®ã¿èª¬æããŸãã 誰ããç¬èªã®ããã¯ãšã³ãä»æ§ãæã£ãŠããŸãã
æ¥ç¶äºçŽ
ç§ãé¢ãã£ãŠãããããžã§ã¯ãã¯ãããããªã°ãªããã§ãéåžžã«éèŠã§ãã RPS 400+ã®äžäœRunetãããžã§ã¯ãïŒYandexãMailãRamblerãPosterãAutoãªã©ïŒãèŠçŽãããšãåèšRPSãååŸã§ããŸãã ããæç¹ã§ããã¹ãŠã®åµãããã«1ã€ã®ãã¹ã±ããïŒDCïŒã«å ¥ããŠããã°ãéåžžã«çŸããçŸããèœã¡ãããšãã§ããããšãæããã«ãªããŸããã ã¢ã¹ã¯ã¯ã®ãã¥ãã€ã®ãããæãåºãã°ãç§ãç解ã§ããŸãã ãµãŒããŒãã¡ãŒã ãè€æ°ã®DCã«åå²ããåé¡ã®èª¿æ»ãéå§ããŸããã äž»ãªåé¡ã¯ããµãŒããŒãåãããã¯ããŒã³ã§æ¥ç¶ãããŠããªãè€æ°ã®DCã«æ¡æ£ããã®ã§ã¯ãªããã¯ã©ã€ã¢ã³ãã®ãã©ãã£ãã¯ãããDCããå¥ã®DCã«ãã°ããã·ãŒã ã¬ã¹ã«åãæ¿ããããšã§ãã

ããã«äºçŽããŸãïŒç§ãã¡ãéžæããå®è£ ã¯ãå°ãªããšã/ 23ã®ãã¹ã¯ãæã€ç¬èªã®ASããããå ¬åŒã«RIPEã/ 24ã§2ã€ã®ãããã¯ãŒã¯ã«ã«ããããå Žåã«ã®ã¿å¯èœã§ãã æ£çŽãªãšãããçŸæç¹ã§ã¯ã©ã®ããã«ãªã£ãŠããã®ãããããŸããããåãTTKãããã¯ãŒã¯ã/ 24æªæºã®å Žåãééäžã®ã¢ããŠã³ã¹ã¡ã³ãã«åé¡ãçºçããåã«ã é©åãªããŒããŠã§ã¢ãšEXIST-MAPãNON-EXIST-MAPã䜿çšã§ããæ©èœãåããã«ãŒã¿ãšããŠCisco ASR 1001ãéžæããŸããã 2x DCã®äŸãèããŠã¿ãŸãããã 2ã€ã®ASRã¯ãäž¡æ¹ã®DCã®æ¥ç¶æ§ãçããŠããããšãç¥ãããã ãã«ãã³ãã«ãç¶æããŸãã 1ã€ã®DCãã1ã€ã®ã¯ã©ã¹Cãããã¯ãŒã¯ã2çªç®ã®DCãã2çªç®ã®ãããã¯ãŒã¯ãçºè¡šããŸãã 2çªç®ã®DCããæ¥ç¶ãåæãããããšãããããšãNON-EXIST-MAPã䜿çšããŠæåã®DCãã2çªç®ã®ãããã¯ãŒã¯/ 24ãã¢ããŠã³ã¹ããŸãã DCãå°ççã«åæ£ããããšããå§ãããŸãããããã¯äºç®ãšè²ã«äŸåããŸãã
ããã¯éèŠãªãã€ã³ãã§ãããå°ãåŸã§èª¬æããŸãããã©ã³ã¹ãµãŒããŒãšå®ãµãŒããŒã§ã¯ãäž¡æ¹ã®DCã®äž¡æ¹ã®ãããã¯ãŒã¯ããã®IPã¢ãã¬ã¹ã絶ããäžããå¿ èŠããããŸã ãããã¯éèŠã§ãã ãã¹ãŠã®DCãæ£ããæ¥ç¶ãããŠãããšãã«ãŒãã¯ç¹å®ã®ãããã¯ãŒã¯ã®ã¢ãã¬ã¹ã«èª°ãå¿çãããã«ãã£ãŠå°ããããããé ãå¹ãé£ã°ããªãããã«ã«ãŒã¿ãŒéã®ãã³ãã«ãå¿ èŠã§ãã OpenSourceã³ãã¥ããã£ã«ããã¯ããªãããã«ãé¡ãããŸããããããã¬ãã£ãã¯ã¹ãŠã§ã€ãã䜿çšããŠquaggaã«å®è£ ããæ¹æ³ã¯ç¥ã£ãŠããŸããããããžã§ã¯ãã¯å€§ããã察å¿ããèŠä»¶ããããŸãã ç§ã¯ãããç§ãã¡ãšã©ã®ããã«å®è£ ãããŠããããäŒããŸãã
ã«ãŒãã®å€æŽããã¹ããããšãäžå¿«ãªç¶æ³ã«ééããŸããã å€ãã®ãŠãŒã¶ãŒãã¢ã¯ã»ã¹ã«Juniperã䜿çšããŠããŸã ã 次ã«ããªãäžå¿«ãªã®ãã説æããŸãã ããã©ã«ãã§ã¯ãã«ãŒãã®å€æŽã¯3åããšã«1åã¢ããŠã³ã¹ãããŸãã ç§ãã¡ã«ãšã£ãŠãããã¯æ°çŸã®ã¬ãã€ãã®ããŒã¿ã®æ倱ã§ãã ã¢ããŠã³ã¹ã®æéãççž®ããå®éšãéå§ããŸãã-æ倧20ç§ã§ãã¹ãŠãé 調ã§ããïŒã¢ããŠã³ã¹ã¯ç§ãã¡ã®å·šå€§ãªæ é·ã®ããŸããŸãªéšåããå®ç§ã«éãäžãããŸãããããã®ãã©ã¡ãŒã¿ãŒãæžãããåŸãDCã®1ã€ã倱ããŸããã å€æããããã«ã20ç§æªæºã®ã¢ãããªã³ã¯ã®1ã€ã«ãµãŒãã¹ãæäŸãããžã¥ãããŒã¯ãã©ãããšèŠãªãããåæžããããšã¯ã§ããŸããããããã¯ãã¡ãŒã ãŠã§ã¢ã®æ©èœã§ãã çµè«ïŒ 21ç§ãæé©ãªãã©ã¡ãŒã¿ãŒã§ãã
ã ãã ããã ãã§ã ãã¹ããã2 DCã®ãã§ãŒã«ãªãŒããŒ-ãã¹ãæžã¿ã ãã·ã¢ã®ã«ãŒããåãæ¿ããå®éã®æéã¯ãè·é¢ãšééæéã«å¿ããŠ25ã60ç§ã§ãã ãã®æ®µéã§ã¯ãã«ãŒã¿ãŒãåãã2ã€ã®ãã¢DCããããŸãã äž¡æ¹ã®DCã«ãã£ãªã³ã°ãå ¥ããŸãããã
DCå ã®åé·ã¹ã€ããã³ã°

ããã§ç°¡åã«èª¬æããŸããDCå ã®åãæ¿ãã¯2察2ã§è¡ãããŸãããã³ãã®2ã€ã®ç©çã€ã³ã¿ãŒãã§ã€ã¹ã¯ãå®éã®IPã¢ãã¬ã¹ãæäŸããvlanã®ç°ãªãã¹ã€ãããèŠãŠããã³ãã®2ã€ã®ç©çã€ã³ã¿ãŒãã§ã€ã¹ã¯ããã¯ãšã³ããæäŸããvlanã®ç°ãªãã¹ã€ãããèŠãŠ æãåçŽãªã¢ãŒãã§ãããã³ãã£ã³ã°ã¢ãŒã= 1ãéžæããŸãã-倱æããããã«ããã³ãã£ã³ã°ã®ãŒãéšåãç°ãªãã¹ã€ããã«åæ£ãããŸããã äžè¬ã«ãåçŽãªã»ã©ä¿¡é Œæ§ãé«ããªããŸãã åé¢ãšèé¢ã«åå ããŠããåãµãŒããŒ-4ã€ã®ç©çã€ã³ã¿ãŒãã§ã€ã¹ã å³ã¯æ£é¢ã®ã¿ã瀺ããŠããŸãã ã¹ã€ããã¯10Gã ãã§ãªãããã¯ã¢ããé»æºã±ãŒãã«ã«ãã£ãŠãæ¥ç¶ãããç°ãªãUPSã«æ¥ç¶ãããŸãã ã¢ãŒã= 1ã§ã¯ãã¹ã€ããã®ç¹å¥ãªæ§æã¯å¿ èŠãããŸãããããã«ãããã€ã³ãã©ã¹ãã©ã¯ãã£å šäœã®ç®¡çãç°¡çŽ åãããŸãã
ãã©ã³ã¹èª¿æŽ

å®éã«ã¯ãç¹å¥ãªä»£æ¿æ段ã¯ãªããIPVSã¯DRïŒDirect RoutingïŒã¢ãŒãã§éžæãããŸããã äžã§èšã£ãããã«ããã®ãã©ã³ã¹æ¹æ³ã¯ããå®äŸ¡ã§ãã NATã®ããã«ãåæ¹åã®æ¥ç¶ããã³ãããé åã奪ããŸãããå¿ èŠãªãªãœãŒã¹ã¯å°ãªããªããŸãã Notrackã®æ奜家ã¯èšãã§ããã-ããªããæ¥ç¶ã100ïŒ ç¶æããããšãéèŠã§ãããªãããããããªãæ¹ãè¯ãã§ãã IPVSã¯Centosã®æšæºã§ãããã€ã³ã¹ããŒã«äžã«ç¹å¥ãªã·ã£ãŒãããºã ãå¿ èŠãšããŸããã ééããå¯äžã®ãã¥ã¢ã³ã¹-ããã©ã«ãã§ã¯ãIPVSã¯4096ã®åææ¥ç¶ãåãå ¥ããæºåãã§ããŠããŸã-ããã¯12ãããã§ãã

ãã©ã³ãµãŒã100äžã®æ¥ç¶ãåãå ¥ããæºåãã§ããããã«ããã«ã¯ããã®ãã©ã¡ãŒã¿ãŒã20ãããã«å¢ããå¿ èŠããããŸãã ã¢ãžã¥ãŒã«ç®¡çïŒmodprobe.dïŒã®ãªãã·ã§ã³ã䜿çšããŠãããè¡ãããšã¯ã§ããŸããã§ãã-ipvsadmã¯ã4096æ¥ç¶ãæäŸããæºåãã§ããŠããããšãæ°žç¶çã«äž»åŒµããŸããã srcã§ãã³ãå®è¡ããã¢ãžã¥ãŒã«ãåæ§ç¯ããå¿ èŠããããŸããã å°ããªãããžã§ã¯ãã§ã¯ãããã¯ããã»ã©éèŠã§ã¯ãããŸããããæ°åäžä»¥äžã®æ¥ç¶ãæäŸããå Žåãããã¯éèŠã§ãã
ãã©ã³ã·ã³ã°ã«ã¯å€ãã®æ¹æ³ããããŸãã æãåçŽãªãã®-RRïŒã©ãŠã³ãããã³ïŒ-çä¿¡æ¥ç¶ããå圢ãã«å®ãµãŒããŒã«éä¿¡ããŸãã ãã ããWLCã¿ã€ãïŒæ¥ç¶å¶åŸ¡ã«ãããã©ã³ã¹ã®åãããã©ã³ã¹ïŒãéžæããŸããã ãã©ã³ãµãŒã®æ°žç¶æ§ãã©ã¡ãŒã¿ãŒãå®ãµãŒããŒã®nginxã®ããŒãã¢ã©ã€ããã©ã¡ãŒã¿ãŒãšåæãããšãæ¥ç¶ã®èª¿åãåããŸãã ããšãã°ããã©ã³ãµãŒã®æ°žç¶æ§ã90ç§ã§ãRealã®nginxã®ããŒãã¢ã©ã€ãã120ã§ããå Žåã90ç§åŸããã©ã³ãµãŒã¯ãã¹ãŠã®ã¯ã©ã€ã¢ã³ãæ¥ç¶ãå¥ã®Realã«æäŸããå€ãRealã¯åŒãç¶ãã¯ã©ã€ã¢ã³ãæ¥ç¶ãç¶æããŸãã 1äžã®ç¢ºç«ãããæ¥ç¶ã®30ç§ã®ããŒãã¢ã©ã€ãã§çŽ12äžã®TIME_WAITãããããšãèæ ®ãããšïŒããã¯å®å šã«æ£åžžã§ããIgor Sysoevãšç§ã¯é»åã¡ãŒã«ãã¯ããã©ãŒã©ã ã®å芳ã§èããŸããïŒãããã¯éåžžã«éèŠã§ãã
çŸåšããã©ã³ã·ã³ã°ãã¯ãããžãŒèªäœã«ãããšããã®ä»çµã¿ïŒãã¡ã€ã³ã®DNSã«ç»é²ããIPã¢ãã¬ã¹ã¯ããã©ã³ãµãŒã®å€éšç©çã€ã³ã¿ãŒãã§ã€ã¹ãšå®ãµãŒããŒã®ã«ãŒãããã¯ã®ãšã€ãªã¢ã¹ã«ãããŒããã£ã¹ããããŸãã 以äžã¯sysctlå®ãµãŒããŒã®æ§æã®äŸã§ã-IPã®è€è£œããåãæ¿ããçããªãããã«ãarpã¢ããŠã³ã¹ã¡ã³ããšãå¿ èŠã«å¿ããŠãœãŒã¹ã«ãŒãã£ã³ã°ãé èœããå¿ èŠããããŸãã sysctlå šäœã«ã€ããŠã¯èª¬æããŸããããããžã§ã¯ãããšã«ååã«å ·äœçã§ããDRã®è©³çŽ°ã«å¿ èŠãªãã©ã¡ãŒã¿ãŒã®ã¿ã瀺ããŸãã
ãã©ã³ãµãŒã®å ŽåïŒ
# Fast port recycling (TIME_WAIT) net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_tw_reuse = 1 # Local port range maximized net.ipv4.ip_local_port_range = 1024 65535 # Dont allow LB send icmp redirects on local route net.ipv4.conf.eth1.send_redirects = 0 net.ipv4.conf.eth0.send_redirects = 0 net.ipv4.conf.lo.send_redirects = 0 # Dont allow LB to accept icmp redirects on local route net.ipv4.conf.eth1.accept_redirects = 0 net.ipv4.conf.eth0.accept_redirects = 0 net.ipv4.conf.lo.accept_redirects = 0 net.ipv4.conf.default.send_redirects = 0 net.ipv4.conf.default.accept_redirects = 0 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.all.accept_redirects = 0 # Do not accept source routing net.ipv4.conf.default.accept_source_route = 0 # Ignore ARP net.ipv4.conf.eth0.arp_ignore = 1 net.ipv4.conf.eth1.arp_ignore = 1 net.ipv4.conf.all.arp_ignore = 1 net.ipv4.conf.default.arp_ignore = 1
å®ãµãŒããŒã®å ŽåïŒ
# sysctl.conf net.ipv4.conf.bond0.arp_ignore = 1 net.ipv4.conf.all.arp_ignore = 1 net.ipv4.conf.default.arp_ignore = 1
255.255.255.255ã®ãã¹ã¯ãæã€å®ãµãŒããŒäžã®å®IPã䜿çšãããšã€ãªã¢ã¹ã«ãŒãããã¯ã®ã«ãŒãã£ã³ã°ã¯ããããã¯ãŒã¯ã«ãµãŒãã¹ãæäŸããå€éšã«ã¢ããŠã³ã¹ããã«ãŒã¿ãŒã®IPã«ç»é²ããå¿ èŠããããŸããããããªããšããã©ã³ã·ã³ã°èŠæ±ãéä¿¡ãããŸãããRealã¯å¿çããŸããã iproute2ãšVIPããŒãã«ã䜿çšããã¹ããŒããªãã®ããããŸãããããã¯èšå®ãè€éã«ããŸãã
次ã«ããã©ãŒã«ããã¬ã©ã³ã¹ã®ãã©ã³ã¹ãšRealã«ã€ããŠèª¬æããŸãã Keepalivedã¯éåžžã«è«ççã«éžæãããŸãã-IPVSéçºè èªèº«ã¯ã補åãšçµã¿åãããŠäœ¿çšââããããšããå§ãããŸãã éåžžã®ã¹ããŒã -MASTER + SLAVEã¯ãããžã§ã¯ãã®99ïŒ ã«é©ããŠããŸãããçŸæç¹ã§ã¯1ã€ã®DCã«5ã€ã®ãã©ã³ãµãŒããããå¥ã®DCã«ã¯3ã€ã®ãã©ã³ãµãŒããããŸãããã¬ãŒãã®å¹³åã³ã¹ãã¯120ã14äžã§ãããããå°ãç¯çŽããããšã«ããŸããã ã°ã«ãŒããèšè¿°ãããŠããkeepalivedæ§æã»ã¯ã·ã§ã³ã泚ææ·±ãèŠããšã2ã€ã®ãã¹ã¿ãŒã«ç°ãªãã°ã«ãŒããèšå®ãã1mã®ã¹ã¬ãŒãã«äž¡æ¹ã®ã°ã«ãŒããèšè¿°ãããšã1ã€ã®ã¹ã¬ãŒããã¹ããŒã ã«åŸã£ãŠ2ã€ã®ãã¹ã¿ãŒã«å¯ŸããŠæ©èœããããšãæããã«ãªããŸããã¹ã¬ãŒãã¯èªåã®IPãååŸããŸãããã2çªç®ã®IPãèœã¡ãå Žåã2çªç®ã®IPã¯åãã¹ã¬ãŒãã«ãã£ãŠååŸãããŸãã ãã¡ããããã€ãã¹ããããŸããäž¡æ¹ã®ãã¹ã¿ãŒãé£ã³åºããšãã¹ã¬ãŒãã«äºéã®è² è·ãããããŸããããã©ã³ãµãŒã«ãšã£ãŠã¯ãRealãšã¯ç°ãªããããã»ã©éèŠã§ã¯ãããŸããã
ãããŠãã1ã€ã®å°ããªããªãã¯ïŒCHECKå®ãµãŒããŒã¯keepalivedæ§æã§æäŸãããŸãã åçŽãªTCPã§ããHTTPããŒãžããã«ããŠ200çªç®ã®å¿çãå¶åŸ¡ããããšãã§ããŸãããMISC_CHECKããããŸãã äœåã¯äŸ¿å©ã§æ©èœçã§ãã RealãµãŒããŒã«å°ããªã¹ã¯ãªãããé 眮ããå ŽåãäœãæžãããŠããŠãåé¡ãããŸãããããžãã¯ã«åŸã£ãŠãçŸåšã®LAãèšç®ããããã©ã³ãµãŒã®RealãµãŒããŒã®åçãªéã¿ãçæãããŸãã
å±éãã
ãããã€ã«ã€ããŠå°ãã å±éã¯ããµãŒããŒå±éã®èªååã§ãã 2ã3å°ã®ãµãŒããŒãããå Žåã¯ãã¡ãããèªååãå±éããŸããããæ°åãŸãã¯æ°çŸã®ãµãŒããŒãããå Žåã¯ç¹ã«äŸ¡å€ããããŸãããµãŒããŒãåãã¿ã¹ã¯ã§ã°ã«ãŒãåãããŠããå Žåã¯ç¹ã«ããã§ãã
åé¢ã«2ã€ã®ã°ã«ãŒããããããŸããããããã¯ãå®éã«ãŠãŒã¶ãŒã«ã³ã³ãã³ããé ä¿¡ãããã©ã³ãµãŒãšnginxãåããå®ãµãŒããŒã§ãã
# file top.sls base: '*': - ssh - nginx - etc 'ccs*': - ccs 'lb*': - lbs
å€ãã®å±éã·ã¹ãã ããããŸã-人圢ãããŒã...ããããç§ãã¡ã¯ãœã«ãïŒsaltstack.orgïŒãéžã³ãŸããã ä»çµã¿ïŒæ§æå ã®ãœã«ããµãŒããŒã§ããµãŒããŒã°ã«ãŒããäœæããã°ã«ãŒãããšã«å±éèšç»ãäœæããŸããããã«ã¯ããµãŒãã¹ãæ©èœããããã«å¿ èŠãªã·ã¹ãã ãŠãŒã¶ãŒãšã°ã«ãŒãããã¹ãŠã®ãµãŒããŒã«ååšããå¿ èŠãããæ§æãã¡ã€ã«ãã€ã³ã¹ããŒã«ããããœãããŠã§ã¢ãå«ãŸããŸã...
# file /srv/salt/etc/init.sls /etc/hosts: file: - managed - source: salt://files/hosts /etc/selinux/config: file: - managed - source: salt://files/selinux.config /etc/snmp/snmpd.conf: file: - managed - source: salt://files/snmpd.conf
æ§æãã¡ã€ã«ã«åãµãŒããŒã«åºæã®ããŒã¿ãå¿ èŠãªå Žåãsaltã«ã¯ãäžæã®æ§æããã®å Žã§çæã§ããæ±ãã³ãã¬ãŒããšã³ãžã³ããããŸãã ãã¡ãŒã å šäœãå±éããåã«ãå±éãµãŒããŒã§æ£ç¢ºã«éå§ããããããµãŒããŒãã¡ãŒã ã®åœ¢æåŸãå±éãæ£ããèšè¿°ãããŠããããšã確èªã§ããŸãã ãããŠãç§ã¯ããªãã«ããã¢ããã€ã¹ããŸãã
ããã¯ã¬ããŒãã®äžéšã«ãããŸããã å¿ ãæéããããŠãWebãã¡ãŒã ã®ãã¹ãæ¹æ³ã«é¢ããå¥ã®èšäºãæžããŠãã ãããnginxã®æ倧å€ããããããåéä¿¡ãªãã«ãçµãããåæãã¹ããšå®çšŒåãã¹ãã®éãã確èªããŠãã ããã
é«è² è·ã§é 匵ã£ãŠãã ããïŒ