ให้ฉันแนะนำแนวคิด Amazon Elastic Compute Cloud (EC2) สักครู่ Amazon EC2 เป็นบริการบนเว็บที่ออกแบบมาเพื่อมอบความสามารถในการประมวลผลที่ปรับขนาดได้และปรับขนาดได้ในทันทีแก่ผู้ใช้ทั่วโลก เป็นกริดเวอร์ชวลไลเซชันขนาดมหึมาซึ่งตั้งอยู่ภายในฟาร์มขนาดใหญ่ของ Amazon โดยให้บริการวงจร CPU และพื้นที่ฮาร์ดดิสก์แก่ใครก็ตามที่ต้องการใช้ได้ทันที สิ่งเดียวที่คุณต้องทำคือจ่าย ไม่มากขนาดนั้น
เพื่อให้เป็นประโยชน์อย่างแท้จริง Amazon ให้บริการด้วยป้ายราคาที่ไม่แพงมาก เทียบได้กับสิ่งที่คุณอาจต้องใช้ในการซื้อและบำรุงรักษาโครงสร้างพื้นฐานของคุณเอง สำหรับผู้ใช้ตามบ้าน สิ่งนี้อาจดูเหมือนไม่จำเป็นในทันที แต่ธุรกิจขนาดเล็กถึงขนาดกลางที่มีความต้องการที่ยืดหยุ่นจะต้องชอบโอกาสของอิสระฮาร์ดแวร์
พวกคุณบางคนจะชอบแนวคิดนี้ พวกคุณบางคนจะเกลียดมัน โดยส่วนตัวแล้ว ฉันคิดว่านี่เป็นโครงการที่ยอดเยี่ยม โดยเฉพาะอย่างยิ่งเมื่อระบบคลาวด์ของ Amazon ใช้ Linux และสนับสนุน Linux เป็นหลัก ซึ่งสร้างโอกาสอันยิ่งใหญ่สำหรับการเติบโตของตลาด Linux Mark Shuttleworth ได้รับคำวิจารณ์ค่อนข้างน้อยสำหรับความตั้งใจที่จะรวมฟังก์ชันการทำงานของ Amazon เข้ากับการเปิดตัว Ubuntu ที่กำลังจะมาถึง แต่ฉันคิดว่านี่เป็นขั้นตอนที่ชาญฉลาด เนื่องจากการผสานความต้องการระหว่างเดสก์ท็อปและเว็บทำให้เกิดความยืดหยุ่นแบบ "ไม่มีตัวตน" ที่มีเฉพาะใน เมฆ.
ที่บ้าน ...
ที่บ้าน คุณแทบจะไม่ต้องการอะไรมากไปกว่าการจำลองเสมือนแบบคลาสสิกที่มีให้ แต่คุณอาจจะเริ่มพิจารณา Amazon เมื่อใดก็ตามที่ป้ายราคาของการมีเซิร์ฟเวอร์ฐานข้อมูลของคุณเองพร้อม RAM ขนาด 16GB ในห้องนั่งเล่นปรากฏขึ้น
หากเคยเกิดขึ้น คุณจะต้องการทราบวิธีการใช้ Amazon EC2 บทช่วยสอนแบบเต็มอยู่นอกเหนือขอบเขตของบทความนี้อย่างแน่นอน คุณมีเอกสารอย่างเป็นทางการสำหรับสิ่งนั้น
แต่ฉันจะแสดงให้เห็นแต่เป็นส่วนหนึ่งของโครงร่างทั้งหมด แม้ว่าอาจเป็นสิ่งที่สำคัญที่สุดที่ผู้ใช้ตามบ้านอาจพบเจอ นั่นคือการสร้างอิมเมจเครื่องเสมือนของ Amazon ฉันจะแสดงวิธีแปลงฮาร์ดดิสก์เสมือนที่ผลิตเองที่บ้านซึ่งใช้โดยผลิตภัณฑ์ VMware เป็นอิมเมจที่เข้ากันได้กับ Amazon ซึ่งคุณสามารถใช้กับ EC2 ได้
ทำไมไม่สร้างอิมเมจ Amazon ตั้งแต่แรกหรือใช้บิลด์ที่มีอยู่
เป็นคำถามที่ดี! Amazon ให้คุณสร้างรูปภาพตั้งแต่เริ่มต้นหรือใช้หนึ่งในเทมเพลตที่มีอยู่แล้ว (เช่น SUSE, Ubuntu, RedHat ฯลฯ) เป็นจุดเริ่มต้น อย่างไรก็ตาม การสร้างภาพนั้นค่อนข้างซับซ้อน และการใช้เทมเพลตที่มีอยู่อาจไม่ใช่สิ่งที่คุณต้องการ ตัวอย่างเช่น คุณอาจต้องการเรียกใช้ distro แบบพิเศษที่กำหนดค่าเอง หรือคุณอาจต้องการใช้อิมเมจส่วนตัวที่มีลายเซ็นดิจิทัลซึ่งไม่มีใครสามารถใช้ได้นอกจากคุณ คุณต้องการควบคุมทั้งหมดและคุณไม่สามารถปล่อยให้คนอื่นสร้างภาพให้คุณได้
วัตถุประสงค์:สร้างภาพที่บ้าน แล้วอัปโหลดไปยัง Amazon
ฉันกำลังจำกัดบทช่วยสอนนี้ให้แคบลงเฉพาะเรื่องซึ่งฉันพบว่าค่อนข้างสำคัญ คุณต้องการมีภาพส่วนตัวพร้อมใบรับรองของตัวเอง คุณต้องการสร้างมันที่บ้าน ในยามว่าง ตามเวลาและค่าใช้จ่ายของคุณเอง โดยไม่ต้องเสียเงินกับแบนด์วิธและการกำหนดค่าที่ยาวนานหลายชั่วโมง เมื่อพร้อมแล้ว คุณจะแปลงและอัปโหลดไปยังพื้นที่จัดเก็บของ Amazon ที่เรียกว่า Amazon Simple Storage Service (S3)
หมายเหตุ:คุณต้องมีบัญชี Amazon EC2 ที่ถูกต้องก่อนจึงจะสามารถนำคำแนะนำในบทช่วยสอนนี้ไปใช้ได้ นอกจากนี้ คุณจะต้องใช้ Linux เพื่อทำตามบทช่วยสอนให้สำเร็จ เครื่องมือบางอย่างที่ใช้ที่นี่มีให้ใช้งานสำหรับ Linux เท่านั้น ไม่น่าแปลกใจเมื่อพิจารณาว่า Amazon ทำงานบน Linux
คำถามแรก:แปลงจากอะไร
อีกคำถามที่ดี มีรูปแบบการจำลองเสมือนบนเดสก์ท็อปมากมาย อย่างไรก็ตาม หากคุณใช้งานระบบเสมือนจริงที่บ้าน มีโอกาสดีที่คุณกำลังใช้ผลิตภัณฑ์ VMware ตัวใดตัวหนึ่งอยู่ VMware ใช้รูปแบบ .vmdk สำหรับฮาร์ดดิสก์เสมือน นี่คือรูปแบบต้นฉบับของเรา ซึ่งเราต้องการแปลงเป็น Amazon Machine Image (AMI)
อย่างไรก็ตาม คุณไม่สามารถแปลงดิสก์เสมือน VMDK เป็น AMI ได้โดยตรง เพื่อแสดงให้คุณเห็นว่าต้องทำอะไร ฉันได้เขียนบทช่วยสอนนี้ เอาล่ะ.
ขั้นตอนที่ 1:ตรวจสอบให้แน่ใจว่าคุณมีทุกสิ่งที่คุณต้องการ
ก่อนที่เราจะเริ่ม มีบางสิ่งที่สำคัญมาก (ค่อนข้างน้อย) ที่ต้องพิจารณาก่อนที่จะรีบแปลงสิ่งนี้และสิ่งนั้น
นอกจากนี้ ก่อนที่คุณจะเริ่มอ่าน ฉันต้องการให้คุณตระหนักว่าโครงการ Amazon EC2 ยังอยู่ในช่วงเริ่มต้น ดังนั้นคำแนะนำที่ให้ไว้ที่นี่อาจนำไปใช้กับการตั้งค่าในอนาคตเพียงบางส่วนเท่านั้น หรือใช้ไม่ได้เลย แม้ว่าโดยปกติแล้วฉันจะไม่ถ่อมสิ่งที่ค้นพบ แต่ในกรณีนี้ เนื่องจากมีตัวแปรที่ละเอียดอ่อนจำนวนมาก ฉันจึงไม่สามารถรับรองความสำเร็จด้วยความพยายามนี้ได้ อย่างไรก็ตาม อย่าปล่อยให้ค่าเข้าชมเล็กน้อยนี้ทำให้คุณผิดหวัง! ปฏิบัติตามฉัน.
ข้อกำหนดทั่วไปของ Amazon (โดยไม่คำนึงถึง VMware):
ข้อกำหนด Xen
คุณจะต้อง xenify การแจกจ่ายของคุณก่อนจึงจะสามารถแปลงและใช้งานบน Amazon ได้ สิ่งนี้หมายความว่า? โครงสร้างพื้นฐานเสมือนของ Amazon นั้นใช้ Xen ซึ่งเป็นไฮเปอร์ไวเซอร์โอเพ่นซอร์สที่คล้ายกับ VMware, KVM หรือผลิตภัณฑ์เวอร์ชวลไลเซชันอื่นๆ เครื่องเสมือนของ Amazon ต้องการเคอร์เนลและโมดูลเคอร์เนลเฉพาะเพื่อให้สามารถทำงานบนแพลตฟอร์มนี้ได้ คุณจะต้องดาวน์โหลดเคอร์เนล Xen ที่เหมาะสม แตกไฟล์ ติดตั้งโมดูล Xen และอัปเดตเมนู GRUB
ให้ไปที่เว็บไซต์/ที่เก็บซอฟต์แวร์ของการเผยแพร่ที่คุณชื่นชอบและดาวน์โหลดเคอร์เนลที่เกี่ยวข้องซึ่งตรงกับเวอร์ชันของคุณ แยกไฟล์เก็บถาวรและวางไฟล์ที่อยู่ในนั้นลงใน /boot และ /lib ขั้นตอนต่อไปคือการสร้างไฟล์โมดูลที่เกี่ยวข้อง:
depmod -F /boot/System.map-<เคอร์เนล>-xenU -a <เคอร์เนล>-xenUโดยที่เคอร์เนลตรงกับเวอร์ชันที่คุณมี (uname -r)
เมื่อเสร็จแล้ว ให้ตรวจสอบว่ามีโมดูลอยู่ในไดเร็กทอรี /lib/modules/
ข้อกำหนดในการแบ่งพาร์ติชัน
อีกอันที่ยุ่งยาก เครื่องเสมือนของ Amazon ต้องมีเค้าโครงการแบ่งพาร์ติชันที่เฉพาะเจาะจงมาก ต้นไม้ /etc/fstab ของคุณควรมีลักษณะดังนี้:
/dev/sda1 / ext3 ค่าเริ่มต้น 1 1ไม่มี /dev/pts devpts gid=5,mode=620 0 0
ไม่มี /dev/shm tmpfs ค่าเริ่มต้น 0 0
ไม่มี /proc proc ค่าเริ่มต้น 0 0
ไม่มี /sys sysfs ค่าเริ่มต้น 0 0
หากคุณใช้จุดเมานต์ swap และ /mnt ของคุณเอง ให้ลบออกจาก /etc/fstab เนื่องจาก Amazon จะใช้จุดเมานต์ของตัวเองเมื่อเรียกใช้อินสแตนซ์ของเครื่อง
โดยทั่วไป โปรดอ่านการสร้างเอกสาร AMI สำหรับรายละเอียดมากมายเกี่ยวกับลักษณะของเครื่องเสมือนของคุณควรมีลักษณะอย่างไร อย่าตื่นตระหนกกับข้อมูลที่มีอยู่มากมาย เนื่องจากข้อมูลส่วนใหญ่ไม่เกี่ยวข้องกับกรณีทดสอบของเรา สิ่งที่คุณต้องให้ความสนใจคือโมดูลเคอร์เนล รูปแบบการแบ่งพาร์ติชัน และการกำหนดค่าเครือข่าย
ระดับรันเริ่มต้นและบริการ
นอกจากนี้ เพื่อให้สามารถเชื่อมต่อกับเครื่อง Amazon ของคุณได้จริง คุณจะต้องปิดใช้งานบริการไฟร์วอลล์หรือกำหนดค่าให้อนุญาตการเชื่อมต่อขาเข้าของ SSH และบริการ SSH ที่เปิดใช้งานในระดับเริ่มต้นเริ่มต้นของคุณ โดยค่าเริ่มต้น SSH จะใช้พอร์ต TCP 22
เมื่อพูดถึง runlevels เครื่อง Xen มักจะบู๊ตเป็น runlevel 4 ที่ไม่ได้ใช้ ดังนั้นคุณจะต้องแก้ไขไฟล์ /etc/inittab ของคุณและยกเลิกการใส่เครื่องหมาย runlevel 4 ที่ไม่ได้ใช้และตั้งค่าเป็น runlevel เริ่มต้น ประการที่สอง คุณจะต้องเปิดใช้งานบริการที่เกี่ยวข้อง ฉันไม่มีชุดมายากลที่จะแนะนำน่าเสียดาย
ในทำนองเดียวกัน คุณไม่สามารถรัน X ใน Amazon ได้ (ยัง) ดังนั้น runlevel 5 จึงไม่เป็นปัญหา หากคุณต้องการความช่วยเหลือในการกำหนดค่าบริการให้ทำงานในระดับรันที่แตกต่างกัน โปรดดูบทช่วยสอนเกี่ยวกับบริการ Linux ของฉัน
อินเทอร์เฟซเครือข่าย
คุณจะต้องกำหนดค่าอุปกรณ์เครือข่ายของคุณเพื่อเช่าที่อยู่ IP ผ่าน DHCP และปิดใช้งานโปรโตคอล IPv6 ในกรณีส่วนใหญ่ นี่คือการตั้งค่าเริ่มต้น คุณจึงไม่ต้องทำงานหนักเกินไปที่นี่
หมายเหตุสำคัญเพิ่มเติม:
ผลิตภัณฑ์ VMware ช่วยให้คุณสร้างอิมเมจที่ขยายได้แบบไดนามิกซึ่งจะขยายใหญ่ขึ้นเมื่อเต็มไปด้วยข้อมูล ดังนั้น ดิสก์เสมือนขนาด 40GB อาจมีน้ำหนักเพียง 700MB หากมีข้อมูลเพียง 700MB นอกจากนี้ยังสามารถจัดสรรขนาดล่วงหน้าได้ ซึ่งในกรณีนี้ดิสก์จะถูกขยายเป็นขนาดเต็ม 40GB อย่างไรก็ตาม เพื่อประหยัดเนื้อที่ฮาร์ดดิสก์ ผู้ใช้จำนวนมากจะเลือกใช้ตัวเลือกแรก - ฮาร์ดดิสก์ไดนามิก
เมื่อพูดถึงการแปลง VMDK เป็น RAW ประโยชน์ใดๆ ที่ได้รับจากการขยายแบบไดนามิกจะหายไป ดิสก์อิมเมจจะขยายใหญ่ขึ้นตามขนาดจริง ดังนั้นโปรดใช้ความระมัดระวังในการสร้างเครื่องเสมือนและใส่ใจกับขนาดดิสก์
ประการที่สอง ปัจจุบัน Amazon รองรับรูปภาพได้สูงสุด 10GB เท่านั้น ซึ่งหมายความว่า VMDK ของคุณไม่ควรเกิน 10GB มิฉะนั้น คุณจะไม่สามารถสร้าง AMI ได้ ใช้รูปภาพที่ใหญ่เกินไป และคุณจะได้รับข้อผิดพลาด:
ข้อผิดพลาด:ไฟล์ภาพที่ระบุภาพตัวอย่าง:
ประการที่สาม คุณจะต้องติดตั้ง java และ ruby บนเครื่อง Linux ของคุณ และใช่ คุณต้องมีเครื่อง Linux สำหรับขั้นตอนที่ 3 ของบทช่วยสอนนี้ ตรวจสอบให้แน่ใจว่าคุณตอบสนองความต้องการเหล่านี้ทั้งหมดก่อนที่จะออกไปผจญภัย
ขั้นตอนที่ 2:แปลง VMDK เป็น RAW
ตอนนี้เรารู้แล้วว่าเราต้องการอะไร เราจะใช้ QEMU สำหรับการแปลง QEMU พร้อมใช้งานสำหรับทั้ง Windows และ Linux เป็นโปรแกรมจำลอง/อิมเมจยูทิลิตี้ที่มีประสิทธิภาพค่อนข้างมาก ซึ่งช่วยให้คุณสามารถแปลงไฟล์ VMDK เป็นรูปแบบ RAW
ฉันได้แนะนำ QEMU เป็นเครื่องมือที่ยอดเยี่ยมสำหรับการสร้างฮาร์ดดิสก์เสมือนในบทความ VMware Player ของฉันเมื่อนานมาแล้ว คุณยังสามารถใช้กับงานอื่น ๆ ที่เกี่ยวข้องกับดิสก์ เช่น การแปลง
ตอนนี้ คุณจะต้องแปลงดิสก์ VMware เป็นรูปแบบดิบ Essentially, this will strip the hard disk image of any smart VMware algorithms and expand it into a sector-by-sector disk image.
QEMU does this well. In fact, you can use QEMU for all sorts of conversions. But currently, we're interested in vmdk> raw. To convert, simply locate the relevant .vmdk file and run the following qemu-img command:
qemu-img convert -O raw source.vmdk target.rawLet the process run. Depending on your machine specs and the image size, it can take quite a while.
Step 3:Bundle the image with AMI tools
Amazon offers two bundles of tools for work with their EC2 service. One is the set of API tools, a client interface for the EC2 service. The other is the set of AMI tools, a collection of command utilities used to create, bundle and upload AMI to Amazon S3.
We need the AMI tools. Download and extract them, preferably inside your home directory. Now, you will have to run a long and tedious conversion command that will look something like this:
./ec2-bundle-image -i-> -k
Let's explain the options:
- -i
- This is your RAW file. - -r
- This is the architecture of your virtual machine (i386, x86_64, etc). - -c
- This is the certificate you received from Amazon. You should keep them in the home directory or the same directory against which you're running the command, because the ec2-bundle-image command does not permit trailing slashes in the path to certificate. I don't know why this is, it just is. If you do use it, you'll get an error like this one:
Here's an actual screenshot of such an error (output manipulated for clarity):
- -k
- Your private key. Again, the same rules apply as for the certificate. - --user
- Your Amazon user ID.
Requirements
But this is not enough. Even if you follow the command to the letter, the ec2-bundle-image will complain. Something like this:
ec2-bundle-image:line 3:EC2_HOME:Neither of EC2_AMITOOL or EC2_HOME environment variables are setThis means you will have to export a few environment variables before using the utility.
BASH
On Bash, you will use the export command, like this:
export EC_HOME=export EC_AMITOOL_HOME=
TCSH
TCSH does not support export. So instead, you will have to use setenv:
setenv EC_HOMEsetenv EC_AMITOOL_HOME
The paths should correspond to the following:
- EC_HOME - your home directory or perhaps an ec2 sub-directory inside it, most likely. Do not use the /tmp filesystem as EC_HOME might complain about an insecure, world-readable directory.
- EC_AMITOOL_HOME - the directory where you extracted the AMI tools.
You may also want to export/setenv other variables, which makes the process of typing them manually rather boring. To make things more efficient, you may want to create a file, contain all your variables and their values and then source it when you need to run the AMI tools. Something like this:
source file-containing-all-exportsตอนนี้เราพร้อมแล้ว Hit Enter against your long conversion command. And wait. After a while, the process should complete successfully. The emphasis is on the word should, as you have to complete a series of delicate preparations for the thing to work.
If you did successfully convert the VMDK> RAW> AMI, then you're ready to upload the file. The indication that your conversion was successful will be a list of files in the /tmp directory and an XML manifest file. This is the default output directory.
This concludes the actual conversion process. Your next step is the upload, but this is beyond the scope of this article. We'll talk about this on another occasion. Amazon is here to stay and you're likely to see several more articles on the subject on Dedoimedo in the future.
สรุป
As you can see, the task is not that simple, but it is manageable and will save you quite a bit of time, bandwidth and ultimately money. Being able to convert images offers you freedom beyond the specific needs of the Amazon EC2 service. We've already seen how to use VMware Converter to this end. Now, QEMU is another power tool we can use to enhance our virtualization needs.
You must satisfy quite a few rules though, especially in regard to AMI tools. You must make sure the image is not too big, not to use the trailing slash in front of the certificate and private key paths, make sure the environment variables are exported, and in general, not to place the Amazon tools in "unsafe" directories. Now, have fun walking on clouds.
In the sequel articles, we will talk about Kiwi, a handsome component of the powerful SUSE Build Service and see how it can be used to create Xen or even AMI images from custom distributions or even your own physical installation, offering similar capabilities to VMware Converter - and then some. To this end, we'll play with Image Creator and Product Creator. We will also talk about SUSE Studio and many other exciting, revolutionary concepts, ideas and projects.
Markus, you asked about an AMI tutorial? นี่คุณไป สนุก.
ไชโย