Hipache เป็นโครงการโอเพนซอร์สพัฒนาโดย dotCloud ทำหน้าที่เป็น Load Balancing และ Routing ให้กับ Docker Container และ service ปลายทาง ซึ่ง Hipache เรียกใช้ข้อมูลใน Redis การผูก Domain Name ต่างๆ จะสามารถทำได้ง่ายมากขึ้น แค่เขาข้อมูลไปใส่ใน Redis เท่านั้น เราสามารถใช้ Hipache จาก Docker Image ได้ ไม่ต้องติดตั้ง Hipache เองก็ได้

เริ่มต้นง่ายๆ ด้วยการสั่ง run container จาก Docker Image ที่ชื่อ Hipache ดังนี้

sudo docker run -d -p 80:80 -p 6379:6379 hipache

เราจะต้อง expose port nginx และ Redis เพื่อให้ใช้งานตรงจากภายนอกได้ หากใช้คำสั่ง docker ps ดูเราจะเห็นค่า port เป็น 0.0.0.0:80->80/tcp, 0.0.0.0:6379->6379/tcp คือ expose port 80 และ 6379 แล้ว

สั่ง run apache2 เพิ่มเข้าไปเพื่อใช้ทดสอบ โดยไม่ expose port 80 ดังนี้

docker run -dP anoochit/apache2

จะพบว่าเราจะได้เลข port แปลกๆ เป็น 0.0.0.0:49153->80/tcp คือ port 49153 เป็น expose port ของ service apache2 ใน Container นั่นเอง

มาลองผูก Container เข้ากับ Domain Name ซึ่งเราสามารถใช้ Hipache เพื่อระบุว่า Domain Name ใดจะเรียกบริการจาก Container ใดได้ เพียงแค่โดยกำหนดค่า Domain Name และ Container + Port ให้กับ Redis เริ่มจากกำหนดค่าเริ่มต้นให้ชุดข้อมูลก่อน โดยเราจะอ้างอิง frontend สมมุติว่าเราใช้ domain www.fffee.com ดังนี้

redis-cli rpush frontend:www.fffee.org fffee.org

จากนั้นกำหนด Container ที่ต้องการผูกเพิ่มลงไป คือเครื่อง Docker Host ใช้ port 49153 ก็คือ service apache2 ใน Container นั่นเอง

redis-cli rpush frontend:www.fffee.org http://172.16.29.13:49153

ลองดูว่ามีข้อมูลเข้าไปยัง Redis แล้วหรือยัง ด้วยคำสั่ง

redis-cli lrange frontend:www.fffee.org 0 -1

จะพบว่ามี 1 ชุดข้อมูลคือ http://172.16.29.13:49153 ชี้ไปที่ www.fffee.org

ให้ชี้ DNS Record ของ www.fffee.org ไปที่เครื่อง Hipache หรือจะแก้ไฟล์ /etc/hosts ก็ได้ จากนั้นลอง browse ไปที่ www.fffee.org จะพบว่าเราได้เรียกใช้ service apache2 ใน container

Comments are closed.