0109 | Cloud Web Hosting
Saturday, August 28th, 2010 Posted in Database, IP Network, Linux, Web Server | View Commentsบทความต่อไปนี้เป็นเพียงการทดสอบทฤษฎี หรือ Proof of Concept เท่านั้น ยังทดสอบใช้งานจริงไม่ผ่านด้วยสาเหตุทั้งปวง
เป้าหมายคือสร้างโฮสติ้งที่ล่มยากๆ และรองรับงานได้ปริมาณมากครับ
(โลภมากเนาะมึงนี่)
ฝั่ง web server ตรงนี้เป็น cluster ย่อมๆ เลย network ใช้ Virtual IP แต่ทำงานแบบ Dual Mode คือทุกเครื่องจะมีทั้ง Active VIP และ Standby VIP
โดยที่ Active VIP ของเครื่อง 1 จะเป็น Standby VIP ของเครื่อง 2 อย่างนี้ไปเรื่อยๆ
แล้วใช้ glusterfs ทำ replicate เก็บข้อมูล สามารถยัด node เพิ่มได้เรื่อยๆ ถ้าต้องการพื้นที่เพิ่ม
ปัญหาอย่างเดียวที่เจอตอนนี้คือ database ครับ … มัน… ทำงานพร้อมกันแบบ active-active ไม่ได้ T_T
ไม่สามารถใช้ master-master replication ได้ด้วยสาเหตุบางประการ เวลา master ล่ม จะ promote slave ขึ้นมาเป็น master แทนทันที
สามารถสลับเครื่องไปมาตลอด แต่ใช้ ip เดียว วิ่งผ่าน Virtual IP อันนึงครับ
อันนี้เขียน script ช่วยสลับเครื่องเพิ่มเติมไว้ด้วย ยังไม่รู้ว่าใช้งานจริงแล้วจะเน่าอนาถขนาดไหน
สรุป software ที่ใช้ (ในชุดทดสอบ)
- Linux CentOS 5.5 x86_64
- Apache 2.2 / PHP 5.2 / MySQL 5.0
- UCARP (Redundant Network Protocol)
- GlusterFS 3.0.5 (Distributed Storage Engine)
- Plesk 9.5 (Web Hosting Control Panel) ==> Concept ยังไม่ได้ทดสอบใช้งานจริง
จำนวนเครื่องในระบบขั้นต่ำ 4 เครื่อง แบ่งเป็น
- Web Server + Storage 2
- Database 2
ถ้าให้ดีขึ้นก็จับแยก storage ออกมาหน่อยจะดีมาก ด้านล่างเป็น diagram คร่าวๆ ครับ
Tags: carp, cluster, glusterfs, high availability
0104 | ปุ่มอัพโหลดรูปเข้า upic.me ด่วนทันใจ
Sunday, July 11th, 2010 Posted in PHP Coding, Web Server | View Commentsคุณสมบัติ
- upload รูปได้ทุก format ที่ upic.me รองรับ ขนาดใหญ่ได้ถึง 2MB
- เลือกอัพได้ทีละหลายๆ รูปเหมือนหน้าแรก upic.me ด้วย
- มีสถานะการ upload ขึ้นตลอดการอัพ และจะหายไปเองเมื่ออัพเสร็จ
- อัพเสร็จ code ขึ้นในกล่องข้อความทันที ไม่ต้องก๊อปวาง
- ปรับแต่งหน้าตา สีสันของปุ่มได้ตามสะดวก (ส่วนแก้ไขข้อความ จะทำ version ถัดไปครับ)
- เอาไปใช้กันได้ฟรีๆ ไม่ต้องแปะ link กลับ ไม่ต้องแปะเครดิตใดๆ ทั้งสิ้น
- ไม่เปลือง bandwidth ของ host ด้วย เพราะอัพตรงเข้ามาที่ server ของ upic.me เลย
ถ้างงยังไงลองดูตัวอย่าง code ด้านล่างได้เลยครับ
<script type="text/javascript" src="http://upic.me/js/embedupload.js"></script> <script type="text/javascript"> upic_target = "targetelement"; upic_type = "resulttype"; upic_buttoncss += "appendcss"; </script>
upic_target => จะให้เอา code ไปแปะที่ช่องไหน
upic_type => รูปแบบ code ที่แปะ มี htmlfull / htmlthumb / bbfull / bbthumb (ถ้าไม่ระบุ จะถือว่าเป็น bbthumb ครับ)
upic_buttoncss => css เสริมสำหรับข้อความในปุ่ม เผื่ออยากแก้สีแก้รูปแบบ ใส่ไปได้เลยครับ (การใส่สี รองรับ code แบบ #abcdef เท่านั้นนะครับ)
ส่วน uploadprogress จะมีประมาณนี้ครับ
<style type="text/css"> #upic_uploader{} #upic_uploadprogress{} .progressWrapper{margin-top:5px;} .progressContainer{border-bottom:1px dotted #ddd;padding:2px;} .progressName{text-align:left;color:black;margin-left:2px;float:left;} .progressBarStatus{color:#666;text-align:right;margin:1px 1px 0 0;font-size:9px;} .red{border:solid 1px #B50000;background-color:#FFEBEB;} .green{border:solid 1px #DDF0DD;background-color:#EBFFEB;} .blue{border:solid 1px #CEE2F2;background-color:#F0F5FF;} .progressBarInProgress,.progressBarComplete,.progressBarError{clear:both;font-size:0;width:0%;height:2px;background-color:blue;margin-top:4px;} .progressBarComplete{width:100%;background-color:green;visibility:hidden;} .progressBarError{width:100%;background-color:red;visibility:hidden;} </style>
(พอดีมันผ่าน compressor มาหลายรอบ code เลยดูยากหน่อย ขออภัยด้วยครับ)
ถ้าอยากแก้ไขหน้าตาสีสันยังไง สามารถ copy code ด้านบนไปแก้ไข แล้วใส่ต่อจาก script ได้เลยครับ
Tags: api, javascript, upicme

