Right now we have the following blockers that would preclude from migrating low-traffic services to Katran:
- Direct routing mode being used to forward traffic to realservers
- Weighted round robin (wrr) scheduler
IPIP encapsulation can be adopted by non-k8s based services behind the low-traffic load balancer in the same way as it was done for high-traffic2 services on T367312.
Moving away from wrr is feasible using the mh-port flag as mentioned on T368545, a small patch is required on pybal to support the mh-port flag to use -b mh-port flag on ipvsadm.
This is the list of services that could benefit from this migration (k8s based services are excluded from this migration):
This has been automatically generated using the following prompt:
sybil:puppet vgutierrez$ yq '.catalog | to_entries | map(select(.value.lvs.class != "high-traffic1" and .value.lvs.class != "high-traffic2")) | map(select(.value.lvs.conftool.cluster != "kubernetes" and .value.lvs.conftool.cluster != "k8s" and .value.lvs.conftool.cluster != "aux-k8s" and .value.lvs.conftool.cluster != "dse-k8s" and .value.lvs.conftool.cluster != "kubernetes-staging")) | map(select(.value.lvs.conftool.service != "kubesvc" and .value.lvs.conftool.service != "kubemaster")) | map(select(.value.lvs.conftool.cluster != null)) | map(.key)' hieradata/common/service.yaml | sed s/-/[]/
contact information obtained (partially) with this oneliner:
vgutierrez@carrot:~/wikimedia.org/operations/puppet/hieradata$ yq '.catalog | to_entries | map(select(.value.lvs.class != "high-traffic1" and .value.lvs.class != "high-traffic2")) | map(select(.value.lvs.conftool.cluster != "kubernetes" and .value.lvs.conftool.cluster != "k8s" and .value.lvs.conftool.cluster != "aux-k8s" and .value.lvs.conftool.cluster != "dse-k8s" and .value.lvs.conftool.cluster != "kubernetes-staging")) | map(select(.value.lvs.conftool.service != "kubesvc" and .value.lvs.conftool.service != "kubemaster")) | map(select(.value.lvs.conftool.cluster != null)) | map(.key)' common/service.yaml |egrep -v "^\[$|^\]$" | sed s/\"//g | sed s/,// | sed "s/ //" | xargs -I % sh -c 'git grep role_contacts | grep % || echo "contacts for % not found"'