ããã«ã¡ã¯ããã«ã¡ã¯ï¼ï¼
ãã¾ã«IPã¢ãã¬ã¹ãããããå¿
è¦ãªæã£ã¦ããã¾ãããã
ã¼ããå
æ¥ããããæ©ä¼ããã£ã¦ãã¡ãã£ã¨å°ãã¾ããã
ã§ããAmazonãããªãIPãã£ã±ããã£ã¦ãã®ã§ã¯ï¼ãã£ã¦ãã¨ã§ã
ã¡ã¾ãã§è©±é¡ã®ã¯ã©ã¦ããµã¼ãã¹ Amazon Web Servise ã試ãã¦ã¿ã¾ããï¼
ãããã¡ããã¿ã¤ãã«ã¯ç
½ããã¿ã§å®éã«ã¯IPã¢ãã¬ã¹ã¯æéãªãã§ããï¼ï¼
æ£ç´ãã¯ã©ã¦ãã¨ããµã¼ãã¼ã¨ãããããã£ã¦ãªãã£ããã§ããã
ã¨ãããã試ãã¦ã¿ããæå¤ã¨ç°¡åã«ã§ããã®ã§ãå¿ããªãããã«ã¡ã¢ãã¦ããã¾ãï¼
ãããããAmazonã®ã¯ã©ã¦ãã£ã¦é«ãããªã¤ã¡ã¼ã¸ããããã©ããã¾ã ã¨å¶éã¤ãã§ç¡æãããã®ã§ããå¾ã§ããï¼
ããç¡ææ ããã¦ããç¡è¶ãªä½¿ãæ¹ãããªãéãã¯ããã»ã©é«ããªããã¨æãã¾ãããã¶ãã
å¶éãè¦ãéããã¨ããããä¸ã¶æãã£ã¤ã試ãã ããªãã¿ãã§ãï¼
å¿
è¦ãªãã®ï¼
ã»ã¯ã¬ã¸ããã«ã¼ã (ç¡æå©ç¨ã§ãç»é²ãå¿
è¦ã§ãï¼ï¼)
ãã£ãæ¹ããããã®ï¼
ã»UNIXã©ã¤ã¯ãªOS (ã¼ãã¯å®é¨ç¨ãã·ã³ä»£ããã«ãããVPSã使ã£ã¦ã¾ãï¼980åã®ãã¤)
以ä¸ãã®æé ã§ãï¼
åå¿è
ãæ°æéã»ã©ã§ãã£ããã®ãªã®ã§è²ã
ééãã¦ãããããã¾ããããä½ãã®åèã«ãªãã°â¦ï¼
ãã¨ãã£ã¨è¯ãæ¹æ³ãããã°æãã¦æ¬²ããã§ãã
1. Amazon Web Service (AWS) ã«ç»é²ãã¾ã (5åãããã§ã§ãã¾ã)
AWSããããã¼ã¸ãããµã¤ã³ã¢ãããã¾ãã
è±èªãè¦æãªã¼ãã§ãã§ãããããç°¡åã§ãï¼
ãã©ã¼ã 横ã«ä¾æãæ¸ããã¦ãã®ã§ããã®éãã«é»è©±çªå·ã¨ããå
¥åãã¾ãã
ããã¨ãAmazonããèªåé³å£°(æ¥æ¬èª)ã®é»è©±ãããã£ã¦ããã®ã§ãæè¨¼çªå·ãããã·ã¥ããã°å®äºã§ãï¼
2. ã¤ã³ã¹ã¿ã³ã¹ãä½ã£ã¦ã¿ã (5åãããã§ã§ãã¾ã)
ã¤ã³ã¹ã¿ã³ã¹ã£ã¦ããã®ã¯ããã¼ãã£ã«ãªãµã¼ãã¼ã®æ©æ¢°ã§ãã
ãããä½ã£ããæ¶ãããå¢ããããã§ããã®ã Amazon Web Service ã® EC2 ã§ãã
ã¿ããªã®ã§ã¨ããããï¼ãä½ã£ã¦ã¿ã¾ãããï¼
AWSç»é²å¾ãå³ä¸ã®ã¡ãã¥ã¼ãããManagement Controlãã«ããã¾ãã
ããã§ãEC2ãã¨ããé
ç®ãã¯ãªãã¯ï¼ 管çç»é¢ãã§ã¾ãï¼
ã¾ãå·¦ä¸ã«ãªã¼ã¸ã§ã³(Region)ã£ã¦ããã®ãããã¾ãããã
ãUS East (Virginia)ãã£ã¦ãªã£ã¦ãããï¼ ããã¯ãã¶ããµã¼ãã¼ã®å ´æã§ãã
Japanã«å¤æ´ãã¦ããããã©ãã¨ããããããã©ã«ãã®US Eastã®ã¾ã¾ã«ãã¦ããã¾ããã
ãããªãã¨ãããLaunch Instanceããã¿ã³ãç»é¢ã®çãä¸ã§ãæ¼ãã¦ãã ããï¼ãã£ã¦æãã§ã¢ãã¼ã«ãã¦ããã®ã§ã¯ãªãã¯ãã¾ãï¼
ããã¨ã¦ã¤ã¶ã¼ãã£ã½ã使ç»é¢ãã§ã¾ãããããã¤ã³ã¹ã¿ã³ã¹ä½ãç»é¢ã
ã¦ã¤ã¶ã¼ãå½¢å¼ã¯ãClassic Wizardãããã§ã¤ã¹ãã¾ããã
â OS鏿
ã¼ãã¯ä¸çªä¸ã«ãã£ã Amazon Linux AMI 2012.03 ã® 64bit ãé¸ã³ã¾ããã
(amzn-ami-pv-2012.03.1.x86_64-ebs)
横ã«âãã¼ã¯ãã¤ãã¦ããã¤ãç¡æã§ä½¿ãããã¤ã¿ããã
â 詳細è¨å®
Typeã micro ã«ãªã£ã¦ããã®ã確èªã micro以å¤ã¯ææã§ããï¼
次㮠Advanced Instance Options ã¨ã Add tags ã¨ãã¯ãç¹ã«ä½ãããã«ãã®ã¾ã¾é²ã¿ã¾ãã
â ãã¼ãã¢ä½æ
SSHã®éµããã¦ã³ãã¼ãã§ãã¾ãã
ãmy_ec2_keyãã¨ãããããããååãã¤ãã¦ããã¦ãã¦ã³ãã¼ããã¦ããã¾ãã
â ãã¡ã¤ã¤ã¼ã¦ã©ã¼ã«è¨å®
ãã大äºã§ãï¼
Create a new Security Group ããã§ãã¯ã
Group Name ã«ãmy_firewallãã¨é©å½ãªååãå
¥ãã¦ããã¾ãã
ã»ã¬ã¯ãããã¯ã¹ãã SSH (22) ãé¸ãã§ Addã
次㫠Custum TCP rule ãé¸ãã§ããã¼ãã« 3128 (Squidã®ããã©ã«ããã¼ã) ãå
¥åã㦠Addãã¾ãã
ãã¨ä»åã¯ãã¹ãçã«ãHTTP (80) ã Add ãã¦ããã¾ãã
Source 㯠0.0.0.0/0 ã®ã¾ã¾ãªããã©ã®IPã¢ãã¬ã¹ããã§ãç¹ãããã¾ãã
ä»åã¯ãã®ã¾ã¾ã§å¤§ä¸å¤«ã
Descriptionã«ç©ºãããã¼ãã®èª¬æãæ¸ãã¦ãããªã©ãã¾ãã
ãSSH, HTTP, 3128ãã¨ãã
ããããã Add ããå¾ãå³ã«ãã®3ã¤ã®ãã¼ãã追å ãããã®ã確èªã㦠continueï¼
ããã§æåã®ã¤ã³ã¹ã¿ã³ã¹ã宿ãã¾ããï¼ ãã£ãï¼
3. ã¤ã³ã¹ã¿ã³ã¹ãç¢ºèª (1åããã)
管çç»é¢ã®å·¦ã¡ãã¥ã¼ã® Instances ãã¯ãªãã¯ãã¾ãããï¼
ä¸è¦§ã®ä¸ã«ããã£ãä½ã£ãã¤ã³ã¹ã¿ã³ã¹ããã¾ããï¼ (ããªããã°å·¦ä¸ã®ãªã¼ã¸ã§ã³ã確èªãã¾ããã)
ã¤ã³ã¹ã¿ã³ã¹ããæ°åç§å¾
ã£ã¦ããã³ãã£ã³ã°ç¶æ
ã®ã¾ã¾ãªãå³ä¸ã®ãªãã¬ãã·ã¥ãã¿ã³ã§ç»é¢æ´æ°ï¼
ä¸è¦§ã®ä¸ã®ã¤ã³ã¹ã¿ã³ã¹ãã¯ãªãã¯ããã¨ä¸ã«è©³ç´°ã表示ããã¾ãã
ãec2-xxx-xxx-xxx-xxx.compute-1.amazonaws.comã
詳細ã®ã¨ããã«ãããªéæåã®ã¢ãã¬ã¹ãããã¾ãããï¼
ãããå¤ããã¤ã³ã¹ã¿ã³ã¹ã«ç¹ãããã®ã¢ãã¬ã¹(Public DNS)ã§ãï¼
4. ãã£ããã¤ãªãã§ã¿ã (3åããã)
Windows(Teraterm)ããã¤ãªãå ´åï¼
管çç»é¢ã®ä¸è¦§ã®ã¤ã³ã¹ã¿ã³ã¹åãå³ã¯ãªã㯠â Connect
ãConnect from your browser using the Java SSH Client (Java Required)ããã¯ãªãã¯ã
User name ã確èªãã¦ãããAmazon Linux AMI ã®ããã©ã«ããªããec2-userãã§ãã
terateram ãèµ·åãã¦ããã¹ãã«ã¤ã³ã¹ã¿ã³ã¹ã® Public DNS ãå
¥ã㦠SSH2 ã鏿ã
User name ã¯ãã£ãã®ãec2-userããpassword ã¯ç©ºã®ã¾ã¾ã§ããRSA/DSAéµã使ããã鏿ãã¾ãã
ãã¡ã¤ã«é¸æãã¤ã¢ãã°ã§ããã¹ã¦ã®ãã¡ã¤ã«ããé¸ã³ããã£ãã®pemãã¡ã¤ã«é¸æã
ããã§ãã°ã¤ã³ã§ãã¾ãï¼
Unixã©ã¤ã¯OSããç¹ãå ´åï¼
管çç»é¢ã®ä¸è¦§ã®ã¤ã³ã¹ã¿ã³ã¹åãå³ã¯ãªã㯠â Connect
ãConnect with a standalone SSH Clientããã¯ãªãã¯ããã¨ããæ¹ãæ¸ãã¦ããã¾ãã
ã¾ããã¦ã³ãã¼ãããéµãã¡ã¤ã«ã®ãã¼ããã·ã§ã³ã夿´ãã¦ããã¾ãã
夿´ãã¦ãããªãã¨æããã¾ãã
> chmod 400 my_ec2.pem
ãã¨ã¯ç»é¢ã®Exampleã®éã
> ssh -i pemãã¡ã¤ã«ã®path/my_ec2.pem [email protected]
ããã§ãã°ã¤ã³ã§ãã¾ãï¼
ãã°ã¤ã³ããããã¨ããããããã©ãããã®ã§rootã«ãªãã¾ãã
> sudo su -
ããã§ãã¹ã¯ã¼ããªãã§rootã«ãªãã¾ãã
5. 試ãã«Webãµã¼ãã¼ãç«ã¦ã¦ã¿ã (2åããã)
ãããã«Webãµã¼ãã¼ãå ¥ãã¦ã¿ã¾ãã(å¿ è¦ãªããªããããªãã¦ããã§ã)
# yum install httpd ... [y/N] y
ããã§Webãµã¼ãã¼ã®ã¤ã³ã¹ãã¼ã«å®äºã§ããæ¬å½ã«ç°¡åã§ããã
ãã£ããç«ã¡ä¸ãã¾ãããï¼
# service httpd start
Webãµã¼ãã¼ãèµ·åãã¾ããï¼
PCã®ãã©ã¦ã¶ããã¤ã³ã¹ã¿ã³ã¹ã®ã¢ãã¬ã¹(Public DNS)ã«ã¢ã¯ã»ã¹ï¼
Apacheã®ããã©ã«ãç»é¢ã表示ããããæåï¼
ã¡ããã¨å¤ããç¹ããã¿ããã§ããï¼
ããã確èªã§ãããwebãµã¼ãã¼ã忢ãã¾ãã
# service httpd stop
ããåèµ·åå¾ãWebãµã¼ãã¼ãç«ã¡ä¸ãããå ´åã¯
# chkconfig httpd on # chkconfig httpd --list
ãããªæãã«ãã¾ããä»åã¯å¥ã«ããªãã¦ããã§ãã
6. ç¡éIPãå®ç¾ããããã®Proxyãµã¼ãã¼ãå ¥ãã (10åããã)
ã¨ãã£ã¦ãWebãµã¼ãã®ã»ããã¢ããã¨åãã§æ°åã§ã§ãã¾ãã
# yum install squid ... [y/N] y
ã¤ã³ã¹ãã¼ã«å®äºï¼
ããããè¨å®ãã¡ã¤ã«(squid.conf)ã®è¨å®ã§ãã
viã¨ãã£ã¿ä½¿ãã¾ãã
viã®ä½¿ãæ¹ã¯ã¯ã¶ãã®ã§ãããããªã人ã¯ããã£ã¦ãã ããã
/(æ¤ç´¢)ã¨ãi(æåæ¿å
¥)ã¨ãa(æå追å )ã¨ãA(æ«å°¾ã«è¿½å )ã¨ãdd(è¡åé¤)ã¨ãZZ(ä¿åãã¦çµäº)ã¨ã:q!(ä¿åããã«çµäº)ã¨â¦ã
ãã¨ã¯ãå°ã£ãæã®ESC飿â:q!ãããç¥ã£ã¦ããã°ãªãã¨ããªãã¨æãã¾ãã
ã¼ãããã®ãããããç¥ãã¾ããã
ã¾ã念ã®ããã«å ã®è¨å®ãã¡ã¤ã«ãã³ãã¼ãã¦ããã¾ãã
# cp /etc/squid/squid.conf /etc/squid/squid.conf.org
ããã§åå¿è
tipsã§ãï¼
/etc/squ ã¿ããã«ãéä¸ã¾ã§æã¡è¾¼ãã ã¨ããã§tabãã¼ãæ¼ãã¨æ®ãã®pathãè£å®ããã¾ããï¼ ã¹ããï¼
confãã¡ã¤ã«ãç·¨éãã¾ãã
# vi /etc/squid/squid.conf
æ¥ç¶è¨±å¯ãããIPã¢ãã¬ã¹â¦ã¤ã¾ãèªåã®ãããã¤ãã®IPã¨ãããé©å½ãªååãã¤ãã¦åæãã¾ãã
... acl CONNECT method CONNECT acl sakura src XXX.XXX.XXX.XXX/255.255.255.255 # (追å ) æ¥ç¶è¨±å¯ãããIPã¢ãã¬ã¹(ã¼ãã®sakuraãµã¼ãã¼) acl lan src XXX.XXX.XXX.XXX/255.255.255.255 # (追å ) æ¥ç¶è¨±å¯ãããIPã¢ãã¬ã¹(ã¼ãã®lan) # èªåã®IPã¢ãã¬ã¹ãããããªãäººã¯æããã®ç¢ºèªå(http://www.ugtop.com/spill.shtml)ã¨ãã§è¦ã¦ãã ãã ... http_access allow localhost http_access allow sakura # (追å ) ãã£ã追å ããIPã®åå http_access allow lan # (追å ) ãã£ã追å ããIPã®åå http_access deny all # âå¿ ããã®denyããä¸ã«æ¸ã ... # æçµè¡ã«ä»¥ä¸ã追å ãã¾ããProxyã®å¿åæ§ãé«ããè¨å®ã§ãã request_header_access X-Forwarded-For deny all # (追å ) request_header_access Via deny all # (追å ) request_header_access Cache-Control deny all # (追å )
confãã¡ã¤ã«ã®è¨å®ãçµãã£ãããProxyãµã¼ãã¼ãèµ·åãã¾ãï¼
# service squid start
ãã¾ãç«ã¡ä¸ããã¾ãããï¼
ãã¾ããããªãå ´åã¯confãééã£ã¦ãã¨æãã®ã§ãã¨ã©ã¼ãã°ã°ã£ãããã¦ä¿®æ£ããå¾ãsquidãåèµ·åãã¦ãã ããã
# service squid restart
7. Proxyã確èªããã (5åããã)
Proxyããã¾ãåãã¦ããããã©ã¦ã¶ã§ç¢ºèªãã¦ã¿ã¾ãããï¼
ãã©ã¦ã¶ã®ãããã·è¨å®ã«ãã¤ã³ã¹ã¿ã³ã¹ã® Public DNS ãããã¦ããã¼ã3128ãè¨å®ãã¾ãã
ãã®ç¶æ
ã§Googleã¨ãéãã¾ããï¼
ããããã§åå¿ãè¿ã£ã¦ããªãã£ãããã¨ã©ã¼ã表示ãããå ´åã¯ããã£ã±ãä½ããã¹ã£ã¦ã¾ãï¼
ã»ã»ãã¨ã«ã¤ã³ã¹ã¿ã³ã¹ã®Firewallã®ãã¼ã3128éãã¾ãããï¼
ã»squid.confã«èªåã®ipã¢ãã¬ã¹æ¸ãã¾ãããï¼ ( acl ZZZ src XXX.XXX.XXX.XXX/255.255.255.255 )
ã»ãã®ipã¢ãã¬ã¹è¨±å¯ãã¾ãããï¼ ( http_access allow ZZZ )
ã»squidã¯ã¨ã©ã¼ãªãèµ·åãã¾ãããï¼
ã»squidããªã¹ã¿ã¼ã ( service squid restart ) ãã¦ã¿ãã¨ã©ããªãã¾ãï¼
ãã®ããããåãã§ãã¯ï¼
ãã¾ããã£ãããæããã®Proxy診æãµã¤ãã診æåãã«ã¢ã¯ã»ã¹ã§ãï¼
ãproxyã®å
åã¯å
¨ãè¦ããã¾ãããã¨è¡¨ç¤ºãããã°okï¼
å¿åProxyã宿ãã¾ããï¼
ãã¨ã¯Proxyãµã¼ãã¼ãèªåèµ·åããããã«è¨å®ãã¦ããã¾ãããã
# chkconfig squid on # chkconfig squid --list
ä¸å¿ãsquid.confããã¼ã«ã«PCã«ããã³ãããªãã§ä¿åãã¦ããã¨ããããããã¾ãããï¼
ãã¨ã§ã¤ã³ã¹ã¿ã³ã¹ä½ãç´ãæã«ä¾¿å©ããããã¾ããã
ãã¨ãããã¾ã§è¨å®ã§ããæç¹ã§ã
ã¼ãã¯AWS管çç»é¢ãããã¤ã³ã¹ã¿ã³ã¹å³ã¯ãªã㯠â Create Image (EBS AMI) ããã£ã¦ããã¾ããã
ããããã¦ããã¨ããã¾è¨å®ãããã®ã¨åãç¶æ
ã®ã¤ã³ã¹ã¿ã³ã¹ããããã¤ã§ããããã«ç«ã¡ä¸ããããããã«ãªãã¾ãã
Imageã®ä½æã«ã¯çµæ§æéããããã¾ããæ°æéãããï¼
ã§ãImageããæ°ããã¤ã³ã¹ã¿ã³ã¹ã®èµ·åã¯æ°åç§ã§ã§ãã¾ãï¼ ãããï¼
ã¼ãã¯åãç¶æ
ã®ã¤ã³ã¹ã¿ã³ã¹ã8ã¤ã»ã©ã¤ãã£ã¦ããã¾ããã
ãªã沢山ã¤ãã£ãã®ãã¨ããã¨ãç¡éIPã¢ãã¬ã¹ã®çºã®å¸ç³ã§ãã
7. IPã¢ãã¬ã¹ãå¤åããã®ã確èªãã (2åããã)
管çç»é¢ãããå³ã¯ãªãã¯ã¡ãã¥ã¼ã§ãã¤ã³ã¹ã¿ã³ã¹ã stop â start ããã¨
IPã¢ãã¬ã¹ãåãæ¿ãããã¨ã確èªã§ããã¨æãã¾ãã
ééã£ã¦terminateãã¡ãã ãã§ããã
ã©ãããrebootã§ã¯ipã¢ãã¬ã¹ãå¤ããã¾ããã
ã ããIPãåãæ¿ããã«ã¯stopâstartãè¯ãããã§ããï¼
ã§ããã¡ãã¡ç®¡çç»é¢ããã¯ãªãã¯ãã¦start-stopã¨ããã£ã¦ããã¾ããï¼ï¼
ãªã®ã§APIã使ããã¨ã«ãã¾ãããï¼
8. EC2 API Tools ãã»ããã¢ãããã (10åããã)
APIã®å©ç¨ã¯æå
ã®Linuxããããã¾ããWindowsã§ãã§ããã¿ããã ãã©â¦ã
ãªã®ã§ä»¥ä¸ã¯ãããvpsã§ã®ä½æ¥ã§ãï¼
å ¬å¼ã® Amazon EC2 API Tools ã®ãã¼ã¸ãããAPI Toolsããã¦ã³ãã¼ã
# wget ãã¦ã³ãã¼ãã®url # unzip ec2-api-tools.zip
è§£åãããã£ã¬ã¯ããªåããec2-api-toolsããªã©ã®ç°¡åãªååã«ãã¦ããã¾ãã
# mv ec2-api-tools-1.5.4.0 ec2-api-tools
次㫠APIç¨ã®éµããããã«ããã¾ãã
AWS管çç»é¢ã®å³ä¸ã®ã¡ãã¥ã¼ãããSecurity Credentialsããã¯ãªãã¯ã
ç»é¢ä¸å¤®ã®ãX.509è¨¼ææ¸ãã¿ããã¯ãªãã¯ã
ãæ°ããè¨¼ææ¸ã使ããããã¯ãªãã¯ã
ããã¨ãX.509è¨¼ææ¸ã使ããã¾ãããã¨ããã¡ãã»ã¼ã¸ã¨ã¨ãã«
Download Private Key File ã¨ã
Download X.509 Certificate ã¨ãããã¿ã³ãåºãã®ã§ã
ã©ã¡ãããã¦ã³ãã¼ããã¦ãã /root/ec2keys/ ãªã©ã«ããã¦ããã¾ãã
APIã®å®è¡ã«ã¯Javaã®å®è¡ç°å¢ãå¿ è¦ãããã®ã§ã¤ã³ã¹ãã¼ã«ãã¾ãã
# yum install java-1.6.0-openjdk
次ã«APIã使ãããã®ç°å¢å¤æ°ã®è¨å®ã§ãã
.bashrc ã«è¿½è¨ãã¾ãã
# vi ~/.bashrc
export JAVA_HOME="/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/" export EC2_HOME="/root/ec2-api-tools" export EC2_PRIVATE_KEY="/root/ec2keys/pk-*****************************.pem" export EC2_CERT="/root/ec2keys/cert-******************************.pem" export PATH="${PATH}:${EC2_HOME}/bin"
追è¨ãã .bashrcãã¡ã¤ã«ãèªã¿è¾¼ã¿ãªããã¾ãã
# source ~/.bashrc
ã»ããã¢ããå®äºï¼ åãã確èªãã¾ãã
# ec2ver 1.5.4.0 2012-05-01
ããããã§ãJAVA_HOMEãªããã¨ãã¨ã©ã¼ã«ãªããããªããjavaãæ¢ãã¾ãã
JAVA_HOMEã®è¦ã¤ãæ¹ï¼
# which java /usr/bin/java # ls -l /usr/bin/java lrwxrwxrwx 1 root root /usr/bin/java -> /etc/alternatives/java # ls -l /etc/alternatives/java lrwxrwxrwx 1 root root /etc/alternatives/java -> /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java # ls -l /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java -rwxr-xr-x 1 root root /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java # âããã ï¼ bin/javaã®æåã¾ã§ãJAVA_HOME
ãããªæãã§ which ã®å¾ãls -l ã§ãªã³ã¯ãæå¾ã¾ã§è¿½ãã¨ãããã¾ãã
9. EC2 API Tools ã試ãã¦ã¿ã (10åããã)
試ãã«APIã§ã¤ã³ã¹ã¿ã³ã¹ä¸è¦§ãåºãã¦ã¿ã¾ãã
# ec2-describe-instances -region us-east-1
ä½ãæ
å ±ã表示ããã¾ãããï¼
ããä½ãã§ãªããªããªã¼ã¸ã§ã³ã®è¨å®ãééãã¦ãã®ããããã¾ããã
ãªã¼ã¸ã§ã³ã®ä¸è¦§ã¯ãã®ãã¼ã¸ã¨ãåèã«ãªãã¾ã â ãªã¼ã¸ã§ã³ãåºå®ããæ¹æ³ at technote
è²ã ãã£ã¦ã¿ã¾ãããï¼
ã¤ã³ã¹ã¿ã³ã¹ãæå®ãã¦ã¿ã (i-ã§å§ã¾ãé¨åã¯ã¤ã³ã¹ã¿ã³ã¹ID) # ec2-describe-instances i-XXXXXX -region us-east-1
å¿
è¦ãããªè¡ã ãã ãã¦ã¿ã
# ec2-describe-instances i-XXXXXX -region us-east-1 | grep "INSTANCE"
åºåããã£ã«ã¿ãã¦ã¿ã â»startãã¦ãã¤ã³ã¹ã¿ã³ã¹ã®ã¿åºå ec2-describe-instances -region us-east-1 -F "instance-state-code=16" | grep "INSTANCE"
| 0 | pending |
| 16 | running |
| 32 | shutting-down |
| 48 | terminated |
| 64 | stopping |
| 80 | stopped |
ã¤ã³ã¹ã¿ã³ã¹ã忢ãã¦ã¿ã
# ec2-stop-instances i-XXXXXX -region us-east-1
ã¤ã³ã¹ã¿ã³ã¹ãéå§ãã¦ã¿ã
# ec2-start-instances i-XXXXXX -region us-east-1
ã³ãã³ãã©ã¤ã³ããèªç±èªå¨ã§ããï¼ããã¾ããï¼
10. ããã°ã©ã ããAPIã使ã£ã¦ã¿ãã (30åããã)
ã§ããã¡ãã¡ã³ã³ã½ã¼ã«ããå
¥åãã¦ãããã
Webã®ç®¡çç»é¢ã§ã¯ãªãã¯ãã¦ããã®ã¨ããå¤ããã¾ããããã
ã ãããããããã°ã©ã ããèªåçã«å¶å¾¡ã§ããããã«ãã¦ã¿ã¾ãã
ä¾ãã°ãå¼ã³åºããããã³ã«ç¾å¨ã®Proxyã忢ããã¦ã
æ°ããProxyãéå§ãããæ°ããProxyã®ã¢ãã¬ã¹ã表示ããPHPããã°ã©ã ã®ä¾ã
<?php // EC2ã§è¤æ°ã®ã¤ã³ã¹ã¿ã³ã¹ãã°ã«ã°ã«ã¨StopâStartãã¦IPåãæ¿ããã㤠// å¼ã³åºãããã¨ç¾å¨ã®proxyãstopããæ¬¡ã®proxyã®ã¢ãã¬ã¹ã表示ããæ¬¡ã®æ¬¡ã®rproxyãã¹ã¿ã³ãã¤ã¨ãã¦èµ·åãã // by Hamachiya2. echo '<html><body><pre>'; // API Tools ç°å¢å¤æ°ã®è¨å® putenv('JAVA_HOME=/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/'); putenv('EC2_HOME=/root/ec2-api-tools'); // pk-*.pemãã¡ã¤ã«ã®ããã putenv('EC2_PRIVATE_KEY=/root/ec2keys/pk-XXXXXXXX.pem'); // cert-*.pemãã¡ã¤ã«ã®ããã putenv('EC2_CERT=/root/ec2keys/cert-XXXXXXXX.pem'); $api = '/root/ec2-api-tools/bin/'; $region = 'us-east-1'; // EC2ã¤ã³ã¹ã¿ã³ã¹IDãåæãã¦ããã $insts = array( 'i-XXXXXXXX', 'i-XXXXXXXX', 'i-XXXXXXXX', ); // proxyæ å ±ãã¡ã¤ã«ãç¡ããã°ä½æ if (! file_exists('./now_proxy')) { fo('./now_proxy', 'w', $insts[0] . "\t"); } // ãã¡ã¤ã«ã«ä¿åãã¦ããç¾å¨ã®proxyæ å ±èªã¿è¾¼ã¿ // ä¿åå½¢å¼: ã¤ã³ã¹ã¿ã³ã¹ID [tab] PublicDNS $row = fo('./now_proxy', 'r'); $temp = explode("\t", $row); $now_proxy = array( 'inst' => $temp[0], 'pdns' => $temp[1] ); // now_proxyã®æ·»ãåã調ã¹ã for ($now=0; $now<count($insts); $now++) { if ($now_proxy['inst'] == $insts[$now]) { break; } } message("now proxy: ${now_proxy['inst']}($now) ${now_proxy['pdns']}"); // next_proxyã®æ·»ãåãç¥ã $next = nextKey($insts, $now); // ã¹ã¿ã³ãã¤ã¨ãã¦èµ·åãã¦ããproxyã®æ·»ãåãç¥ã $stanby = nextKey($insts, $next); // nextã®PublicDNSã調ã¹ã message('check new proxy Address ...'); exec($api . 'ec2-describe-instances ' . $insts[$next] . ' -region ' . $region . ' | grep "INSTANCE"', $r); $next_pdns = null; if (preg_match('/ec2.+?amazonaws.com/', $r[0], $pdns)) { $next_pdns = $pdns[0]; } else { // PublicDNSãå¾ãããªãã£ãæãnextãèµ·åããã¦çµäºã message("No next PublicDNS.\nstart next: ${insts[$next]}($next)"); exec($api . 'ec2-start-instances ' . $insts[$next] . ' -region ' . $region); message('exit.'); exit(); } // next_proxyã®æ å ±ããã¡ã¤ã«æ¸ãåºãããããæ°ããproxyã®æ å ±ã message("new proxy: ${insts[$next]}($next) $next_pdns"); fo('./now_proxy', 'w', $insts[$next] . "\t" . $next_pdns); // stanby_proxyãèµ·åãã¦ããã message("start stanby proxy ... ${insts[$stanby]}($stanby)"); exec($api . 'ec2-start-instances ' . $insts[$stanby] . ' -region ' . $region); // now_proxyã忢ããã message("stop now proxy ... ${now_proxy['inst']}($now)"); exec($api . 'ec2-stop-instances ' . $now_proxy['inst'] . ' -region ' . $region); message('done.'); // æ¬¡ã®æ·»ãåãè¿ãã㤠function nextKey($a, $key) { $ret = 0; if (! ($key == (count($a)-1)) ) { $ret = $key + 1; } return $ret; } // ãã¡ã¤ã«èªã¿æ¸ãããã㤠function fo($f, $rw, $str=null) { $ret = null; $fh = fopen($f, $rw); flock($fh, LOCK_EX); if ($rw == 'w') { fputs($fh, $str); } else if ($rw == 'r') { $ret = fgets($fh); } flock($fh, LOCK_UN); fclose($fh); return $ret; } // ãããã¡ãããã«ã¡ãã»ã¼ã¸è¡¨ç¤º function message($str) { echo $str . "\n"; ob_flush(); flush(); }
ç°¡åã§ããããããªæãã®ããã°ã©ã ã¨ãcronãä»ã®Webããã°ã©ã ãçµã¿åãããã°è²ã
ã¨èªååã§ãã¾ãããï¼
ã¯ãï¼
ãã¤ãããã¾ã§ããï¼ç¡éIPã¢ãã¬ã¹åãæ¿ãå¨ã®å®æã§ãï¼
ã§ãç¡æã ããã¨ãã£ã¦ããã£ããProxyéããã¾ã¾åç»ã¿ãã¡ãã£ããã
ã¤ã³ã¹ã¿ã³ã¹ç«ã¡ä¸ããã¾ã¾å¿ããããã¦ããã¨ã
ãã¤ã®éã«ãç¡ææ ãããã¦è«æ±ãããããããã¾ããâ¦ï¼ï¼
éãã ãã¨ã¯ãã¡ããã¨stopããã¦ããã¾ããããï¼
æéãããã£ã¦ããªããå¿é
ãªäººã¯ããã°ããçµã£ã¦ãã(1æ¥ãããï¼)
AWSããããã¼ã¸ã®ã¡ãã¥ã¼ãããã¢ã«ã¦ã³ãã¢ã¯ãã£ããã£ããé¸ã¹ã°ç¢ºèªãããã¨ãã§ãã¾ããï¼