ปัญหาเรื่องการย้าย Application ข้าม Cloud Provider เป็นปัญหาปกติที่ต้องหาทางแก้ไข ซึ่งแต่ละ Cloud Provider มีช่องทางในการบริการที่ต่างกัน เทคโนโลยีต่างกัน เครื่องมือที่ใช้งานก็ต่างกัน เรียกได้ว่าถ้าจะย้าย instance จะทำได้ยากมาก ครั้งนี้จะให้แนวคิดเรื่องการย้าย Container จาก Cloud Provider ค่ายหนึ่งไปยังอีกค่ายหนึ่งหรือจาก Local ไปยัง Cloud Provider ก็ได้ ซึ่งทำได้หลายวิธี

จากภาพแนะนำการย้ายแบบง่ายๆ ผ่าน Docker อย่างเดียวไม่ได้ใช้เครื่องมือใดๆ เพิ่มเติม ถ้าจะให้สะดวกควรมี Orchestration Service อยู่ในแต่ละ Cloud Provider ด้วย ในเบื้องต้นทำความเข้าใจแบบง่ายๆ กันก่อน การทำ Migration ทำได้ 2 แบบ คือ

  1. Import / Export ไฟล์ Container ทั้งก้อนจาก Local ไปยัง Cloud วิธีนี้จะให้ความสะดวกมากกว่าแต่การสำรองข้อมูลและการย้ายไฟล์ Export จะช้าขึ้นอยู่กับความเร็วของเน็คเวิร์ก
  2. Push / Pull ให้ Commit Container State ปัจจุบันแล้ว push ขึ้น Docker Registry อาจจะเป็น Docker Hub (Private) หรือ Private Registry ที่ตั้งขึ้นเองก็ได้ จากนั้นค่อยสั่ง pull ไปยัง Cloud Provider ปลายทาง

สำหรับข้อมูลใน hipache ก็ต้องเปลี่ยนตาม เช่น จากเดิมอยู่ใน Local พอย้าย Container เสร็จจะต้องเปลี่ยน record ใน redis ชี้ไปที่ Container ที่อยู่บน Cloud จึงจะ route traffic ไปได้ถูกต้อง หากทำด้วยมือจะช้า ถ้าใช้ Orchestration Service จะเร็วและสะดวกกว่ามาก

วิธีที่ 1 แบบ Export / Import

สั่ง Export ก่อน

sudo docker export mynodeapp > mynodepp-latest.tar

จะได้ filesystem ของ container mynodeapp ในรูปแบบของไฟล์ tar จากนั้นย้ายไฟล์ไปยัง Cloud Provider ปลายทาง แล้วสั่ง Import

cat mynodepp-latest.tar | sudo docker import - mynodepp:version2

docker run -Pd mynodepp:version2

วิธีที่ 2 แบบ Push / Pull

สั่ง Commit State ของ Container ที่กำลังทำงานอยู่

docker commit mynodeapp mynodeapp:version2

สั่ง Tag และ push ไปยัง registry ปลายทาง

docker tag mynodeapp:version2 index.fffee.org/mynodeapp

docker push index.fffee.org/mynodeapp

สั่ง Pull เมื่อต้องการใช้งาน

docker run -Pd index.fffee.org/mynodeapp

Comments are closed.