Skip to main content

Namespace kullanarak, glb nin fougue tünel fonksiyonunun operasyon testi

Amaç

GLB ve apisix in aynı makina üzerinde çalışması

Dizayn

Glb, çalışmak ve second chance işini yaptırabilmek adına gue tüneli ve diğer uçta bu tünelden gelen gue headerlarını okuyabilmek için bir kernel modülü kullanır. Bu sayede gue headerdaki second chance verisini modül okur, offline endpointten cevap alamazsa 2nd chance destinasyona yollar.

Sonuç

Olmadı, gue headerlarından destinasyon bilgisi ölçen kernel modülü olan, glb_redirect namespace aware bir modül olmadığından, çalışmadı. Bu tunel üzerinden healthcheck ve http requestlerin işlenmemesine ve sonuçta paketlerin drop edilmesine sebep oldu.

Aşağıda high level örnek planı bulabiliriz.

namespace ler arası link için veth lerin oluşturulması ve default namespace için iplendirme.

apisix'in ve kernel modülünün çalışacağı namepsace in oluşturulması, veth pairin iplendirilmesi ve rotalandırma

ip netns add apisix
ip link set veth1 netns apisix
ip netns exec apisix ifconfig veth1 10.10.10.2 netmask 255.255.255.252 up
ip netns exec apisix ip r add default via 10.10.10.1

FouGue tünelinin process edilebilmesi için namespace te modüle redirect

ip netns exec apisix iptables -A INPUT -p udp -m udp --dport 19523 -j GLBREDIRECT 

Default namespace ten apisix namespace e fougue tüneli kurulumu ve up edilmesi

modprobe fou 
ip fou add port 19523 gue
ip link add name tun1 type ipip remote 10.10.10.2 local 10.10.10.1 ttl 225 encap gue encap-sport auto encap-dport 19523
ip link set up dev tun1

apisix namespace te http listener

ip netns exec apisix nc -l 80 < index.html

Hızlı bir demo için youtube'dan izleyebilirsiniz