![aw131163](https://wtc.co.th/wp-content/uploads/F5-Networks-NGINX-expended-opportunity-1-scaled-450x450.jpg)
The virtual server type of F5 Full Proxy
บทความวันนี้อยากจะให้ท่านผู้อ่านมาทำความเข้าใจกับ F5 Virtual Server ในแบบ Standard Virtual Server Type ฟังแล้วท่านผู้อ่านอาจจะยังไม่เข้าใจว่าคืออะไร แต่ถ้าท่านใดเคยมีโอกาส Configures F5 Load Balance แล้ว คงพอจะนึกออกว่านี่คือ Default Type ของการสร้าง Virtual Server สำหรับงาน Load Balance นั้นเองครับ
![1](https://wtc.co.th/wp-content/uploads/1-12-300x353.png)
สรุปโดยให้เข้าใจง่ายๆ ว่า Virtual Server หรือ Virtual IP (VIP) คืออะไรกันนะครับ
Virtual Server เป็นส่วนนึงของการจัดการการรับส่งข้อมูลบนระบบ Load Balance ที่แสดงตัวด้วยที่อยู่ของ Virtual IP Address และกำลังให้บริการอยู่ เช่น 192.168.20.10:80 เมื่อ Client ส่งทราฟฟิกของแอปพลิเคชันไปยัง Virtual Server ระบบ Load Balance จะรับฟังการส่งข้อมูลนั้นและกำหนดทิศทางการรับส่งข้อมูลไปยัง Real Server ตามการกำหนดค่าบน Virtual Server นั่นเอง
ดังนั้นค่าพื้นฐาน (Standard) จึงมีการกำหนดค่าเริ่มต้น (Default)
สำหรับการรับส่งข้อมูลผ่าน Load Balance Standard Virtual Server มีการตั้งค่าที่ช่วยให้คุณสามารถปรับแต่งการจราจรที่ Virtual Server ตามกระบวนการตัวอย่างเช่นคุณสามารถระบุโปรโตคอลที่เฉพาะเจาะจงเช่น TCP, UDP, Stream Control Transmission Protocol (SCTP) หรือแม้แต่โปรโตคอลอื่นๆ นอกจากนี้คุณสามารถปรับแต่งวิธีการที่ระบบจัดการกับประเภทต่างๆของการจราจรได้ โดยกำหนดโปรไฟล์ไปยัง Standard Virtual Server ตัวอย่างเช่นการกำหนดค่าของการสามารถบีบอัด (Compression) HTTP ของข้อมูลผ่านระบบ หรือถอดรหัสและเข้ารหัสการเชื่อมต่อ SSL (SSL Decryption และ SSL Encryption) และสามารถตรวจสอบใบรับรอง SSL ว่ามีความถูกต้องหรือไม่
สำหรับแต่ละประเภทของการจราจรอื่นๆ (Protocol Profile) เช่น TCP, UDP, HTTP, HTTPS, SSL, SIP,SMTP, Stream, DNS, Radius, และ FTP นอกจากนี้ คุณยังสามารถกำหนดโปรไฟล์ที่กำหนดขึ้นเองได้
เมื่อคุณสร้าง Standard Virtual Server คุณสามารถกำหนด Specific Pool (Member of Real Server for Load Balance) หรือทำการ Load Balance หลายๆ Pools โดยเมื่อคุณต้องการส่ง Traffic ไปยังหลายๆทาง ที่มาจาก Virtual Server เดียวกัน นอกจากนี้คุณยังสามารถปรับแต่งคุณสมบัติทั่วไปของโปรไฟล์ความปลอดภัยบนเครือข่าย (Secure Network Address Translate – SNAT) และทรัพยากรอื่นๆเช่น iRule, Session Persistence, Port Translate, Address Translate หรือ Connection Limit เป็นต้น
![2](https://wtc.co.th/wp-content/uploads/2-13.png)
สำหรับข้อมูลเพิ่มเติม แนะนำให้เข้าไปดูการกำหนดค่าในแต่ละส่วนของ Standard Virtual Server ได้ที่ Link นี้ครับ
https://support.f5.com/csp/article/K93017176
นอกจากการ Configuration ของ Standard Virtual Server ผมอยากพาท่านผู้อ่านมาเข้าใจหลักการทำงานของ Flow ของ TCP Connection บน Virtual Server Type นี้ เพราะมีรายละเอียดที่น่าสนใจอยู่ในนั้นครับ
ขอเกริ่นให้เข้าใจก่อนนะครับว่า ระบบของ F5 จะเรียกว่า TMOS ซึ่งจริงๆ แล้ว TMOS จะทำงานเป็นแบบ Full Proxy Architecture (การรวมกันของ Reverse Proxy และ Forward Proxy เข้าด้วยกัน) ซึ่งในการทำงานของ Virtual Server นี้ จะทำงานบน TCP/UDP บน F5 Load Balance ซึ่งบน Virtual Server Type นี้จะบังคับให้เราเลือกว่าต้องการทำงานบน TCP, UDP หรือ All Protocol ก่อนครับ อย่าลืมเลือกให้ถูกต้องตามการใช้งานด้วยนะครับ
Standard virtual server with TCP Profile and Layer 7 functionality
เมื่อ Standard Virtual Server ที่ทำงานด้วย Layer7 function หรือการ Enable L7 Profile ไว้บน Virtual Server เช่น HTTP Profile ซึ่ง Client จะต้องส่ง Three-way TCP handshake และ data packet อย่างน้อย 1 packet มาก่อน และ F5 Load Balance จะเปิด Connection ด้วย Three-way TCP handshake และส่ง Packet ไปยัง Server เพื่อทำความเข้าใจมากขึ้น สามารถดูได้จากรูปด้านล่างครับ
![3](https://wtc.co.th/wp-content/uploads/3-12.png)
จะเห็นได้ครับว่า F5 Standard Virtual Server เป็นการทำงานแบบ Full Proxy โดยแท้จริง คือการกำหนดการเปิด Connection ด้วย Three-way TCP handshake ที่ฝั่งของ Client ก่อนเสมอ ถึงจะเปิด Connection ที่ Server และส่ง Packet ไปให้ครับ
ซึ่งการทำงานในลักษณะนี้จะมีประโยชน์เป็นอย่างมากต่อสุขภาพของ Application Server ซึ่งจะเป็นผลดีต่อ Application Server ที่ให้บริการ เพราะ F5 จะไม่ยอมส่ง TCP Connection (TCP SYN) ไปยัง Server เลยถ้ากระบวนการของ Client ที่ร้องขอมา เปิด TCP Connection ไม่ถูกต้อง เช่น TCP SYN Flood รวมถึงถ้าใช้งานบน SSL Protocol (require secure renegotiation of SSL connections) ก็ยิ่งทำให้เรามันใจได้ว่า SSL ที่กำลังเข้ามาต้องถูกต้องก่อนที่จะ Establishing SSL Connection เสมอเช่นกันครับ
และถ้ามีการใช้งาน HTTP Protocol ก็สามารถกำหนดการตั้งค่าได้บน HTTP Service ได้เช่นการทำ HTTP Rewrite, Replace, Response, Redirect ให้เราสามารถปรับแต่งการทำงานได้ง่ายและยืดหยุ่นต่อการทำงานเป็นอย่างมากครับ
เป็นอย่างไรบ้างครับ บทความนี้พอจะเป็นแนวทางในท่านผู้อ่านที่กำลังสนใจ ได้มีความเข้าใจมากขึ้น และสามารถนำไปใช้งาน หรือกำหนดการตั้งค่า Standard Virtual Server ให้มีประสิทธิภาพสูงขึ้น ผมหวังว่าบทความนี้จะนำมาซึ่งความเข้าใจ ความรู้ในส่วนการทำงานของ F5 Load Balance ให้แก่ท่านผู้อ่านไม่มากก็น้อยนะครับ