บันทึกนี้ปรับปรุงล่าสุดเมื่อวันที่ 26-11-2561
ดูแลโดย WIBOON
server ที่ 1 มี physical network interface คือ enp2s0 เราจะตั้งค่า fix ip 192.168.6.17 subnet 255.255.255.128
network: version: 2 renderer: networkd ethernets: enp2s0: addresses: [ 192.168.6.17/25 ] gateway4: 192.168.6.1 nameservers: addresses: - "192.100.77.10"
server ที่ 2 มี physical network interface คือ enp0s25 เราจะตั้งค่า fix ip 192.168.6.19 subnet 255.255.255.128
network: version: 2 renderer: networkd ethernets: enp0s25: addresses: [ 192.168.6.19/25 ] gateway4: 192.168.6.1 nameservers: addresses: - "192.100.77.10"
ตอนนี้มันก็ยังดูเหมือนไม่ค่อยยุ่งสักเท่าไหร มาดูกันต่อ
server ที่ 1 มี physical network interface คือ enp2s0 ต้องการให้เป็น bridges และ ตั้งค่า fix ip 192.168.6.17 subnet 255.255.255.128
network: version: 2 renderer: networkd ethernets: enp2s0: dhcp4: no dhcp6: no bridges: br0: dhcp4: no dhcp6: no interfaces: - enp2s0 addresses: [ 192.168.6.17/25 ] gateway4: 192.168.6.1 nameservers: addresses: - "192.100.77.10"
server ที่ 2 มี physical network interface คือ enp0s25 ต้องการให้เป็น bridges และ ตั้งค่า fix ip 192.168.6.19 subnet 255.255.255.128
network: version: 2 renderer: networkd ethernets: enp0s25: dhcp4: no dhcp6: no bridges: br0: dhcp4: no dhcp6: no interfaces: - enp0s25 addresses: [ 192.168.6.19/25 ] gateway4: 192.168.6.1 nameservers: addresses: - "192.100.77.10"
จะเห็นได้ว่า physical network interface ของ server ที่ 1 และ server ที่ 2 ต่างกัน enp2s0 และ enp0s25 ตามลำดับ มีการอ้างถึงตั้ง 2 แห่ง
ต่อไปเรามาดูวิธีตั้งชื่อ network interface เป็น vif1 ใช้แทน physical network interface ของ server ทั้ง 2 เครื่อง (จะทำได้สำเร็จก็ต่อเมื่อ netplan version 0.36.3 ขึ้นไป)
server ที่ 1
network: version: 2 renderer: networkd ethernets: vif1: match: macaddress: "44:bb:33:85:91:08" set-name: vif1 dhcp4: no dhcp6: no bridges: br0: dhcp4: no dhcp6: no interfaces: - vif1 addresses: [ 192.168.6.17/25 ] gateway4: 192.168.6.1 nameservers: addresses: - "192.100.77.10"
server ที่ 2
network: version: 2 renderer: networkd ethernets: vif1: match: macaddress: "11:c1:ee:95:89:30" set-name: vif1 dhcp4: no dhcp6: no bridges: br0: dhcp4: no dhcp6: no interfaces: - vif1 addresses: [ 192.168.6.19/25 ] gateway4: 192.168.6.1 nameservers: addresses: - "192.100.77.10"
จะเห็นได้ว่า สะดวกขึ้นเมื่อตั้งค่าสำหรับ br0 ด้วย interface ชื่อ vif1 เหมือนกันทั้ง 2 เครื่อง ก็ไม่ต้องจดจำว่า เครื่อง server ที่กำลังทำนี้ใช้ physical network interface name อะไร
รู้วิธีตั้งชื่อแล้วได้อะไร
มาดูต่อกันครับ ตอนนี้ server ทั้ง 2 เครื่อง เราใช้งาน network เดียว คือ vlan 6 ต้องการให้ server รองรับ vlan 7 ด้วย จะต้องทำอย่างไรบ้าง ก่อนอื่นเราไปตั้งค่า port ที่ L3 หรือ L2 manage switch ของ server ทั้ง 2 เครื่องให้มี vlan 6 (untagged) และ vlan 7 (tagged) เสร็จแล้วเราก็นำท่อนข้างล่างนี้เพิ่มต่อท้ายทั้ง 2 เครื่อง เพื่อให้มี vlan 7 สังเกตที่คำว่า link: จะใช้เป็น vif1 จะสะดวกมาก
vlans: vlan7: id: 7 link: vif1
และหากต้องการทำ bridge (br1) on top of vlan ก็เพิ่มดังนี้
bridges: br1: dhcp4: no dhcp6: no interfaces: - vlan7
ถ้าหากเรากำลังใช้งานโปรแกรมจัดการจำพวก Cloud Management (Build Clouds and Manage Data Center Virtualization) เช่น ที่ผมทดสอบคือ OpenNebula จะมีความสามารถในโปรแกรมให้เลือกว่า VM ที่จะสร้างใหม่นั้นจะสร้างไว้ที่ server ใด และจะให้ VM นั้นเป็น vlan อะไร เช่น ถ้าจะให้เป็น vlan 7 ทำได้ง่าย ๆ โดยให้เลือกตั้งค่า 802.1q สำหรับ vlan7 และจะมีการสร้าง bridge interface br1 ให้เองเมื่อมี VM เปิดทำงาน โดยเราไม่ต้องเพิ่มทั้ง vlans: (vlan7) และ bridges: (br1) ด้วยตัวเองเหมือนตัวอย่างข้างบนครับ แค่เราตั้งชื่อ network interface ให้เป็นชื่อเดียวกัน เช่น vif1 เป็นต้น จะทำให้ OpenNebula สามารถสร้าง VM ไปที่ KVM server เครื่องใดก็ได้ เช่น server ที่ 1 และ server ที่ 2 ที่เราตั้งชื่อเรียบร้อยแล้ว