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.
ip link add veth0 type veth peer name veth1
ip addr add 10.10.10.1/30 dev veth0
ip link set up dev veth0
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
1 Comment
GLB için yaptığımız test te bir hata olduğunu ilettiler, bu testi daha sonra tekrar yapıp bir güncelleme ile düzelteceğiz