[victoria][magnum][octavia]<NOSRV> in amphora
Michael Johnson
johnsomor at gmail.com
Tue May 25 00:12:17 UTC 2021
Hi Luke,
>From the snippet you provided, it looks like the load balancer is
healthy and working as expected, but the health check of the member
endpoint is failing.
I also see that the health monitor is configured for a type of TCP and
the members are configured for port 31765. This assumes that the
members do not have "monitor_address" or "monitor_port" configured to
override the health check endpoint.
One thing to check is the subnet_id that was configured on the members
in Octavia. The members (192.168.1.99:31765, etc.) must be reachable
from that subnet_id. If no subnet_id was used when creating the
members, it will use the VIP subnet of the load balancer.
Sometimes users forget to specify the subnet_id, that a member should
be reachable from, when creating the member on the load balancer.
Michael
On Mon, May 24, 2021 at 1:48 PM Luke Camilleri
<luke.camilleri at zylacomputing.com> wrote:
>
> I have configured magnum with a service type of LoadBalancer and it is
> successfully deploying an external LoadBalancer via Octavia. The problem
> is that I cannot reach the public IP address but can see the entries in
> the haproxy.log on the amphora instance and the log shows <NOSRV> 0 SC--
> at the end of each entry when it is being accessed (via a browser for
> example).
>
> So the Octavia part seems to be fine, the config shows the correct LB
> --> listener --> pool --> member and the nodeports that the service
> should be listening on (I am assuming that the same nodeports are also
> used for the healthchecks)
>
> The haproxy.cfg in the amphora instance shows the below in the pool
> members section:
>
> server 43834d2f-4e22-4065-b448-ddf0713f2ced 192.168.1.191:31765
> weight 1 check inter 60s fall 3 rise 3
> server 3a733c48-24dd-426e-8394-699a908121ee 192.168.1.36:31765
> weight 1 check inter 60s fall 3 rise 3
> server 8d093783-79c9-4094-b3a2-8d31b1c4567f 192.168.1.99:31765
> weight 1 check inter 60s fall 3 rise 3
>
> and the status of the pool's members (# openstack loadbalancer member
> list) is as follows:
>
> +------------------------------------------------------------+---------------------------+-----------------+-----------------------+---------------------------+
> | id | provisioning_status | address | protocol_port |
> operating_status |
>
> 8d093783-79c9-4094-b3a2-8d31b1c4567f ACTIVE 192.168.1.99
> 31765 ERROR
> 43834d2f-4e22-4065-b448-ddf0713f2ced ACTIVE 192.168.1.191
> 31765 ERROR
> 3a733c48-24dd-426e-8394-699a908121ee ACTIVE 192.168.1.36
> 31765 ERROR
>
> From the below loadbalancer healthmonitor show command I can see that
> the health checks are being done via TCP on the same port and can
> confirm that the security group allows the nodeports range (ALLOW IPv4
> 30000-32767/tcp from 0.0.0.0/0)
>
> +---------------------+--------------------------------------+
> | Field | Value
> +---------------------+--------------------------------------+
> | provisioning_status | ACTIVE
> | type | TCP
> | id | 86604638-27db-47d2-ad9c-0594564a44be
> | operating_status | ONLINE
> +---------------------+--------------------------------------+
>
> $ kubectl describe service nginx-service
> Name: nginx-service
> Namespace: default
> Labels: <none>
> Annotations: <none>
> Selector: app=nginx
> Type: LoadBalancer
> IP Families: <none>
> IP: 10.254.255.232
> IPs: <none>
> LoadBalancer Ingress: 185.89.239.217
> Port: <unset> 80/TCP
> TargetPort: 8080/TCP
> NodePort: <unset> 31765/TCP
> Endpoints: 10.100.4.11:8080,10.100.4.12:8080,10.100.5.10:8080
> Session Affinity: None
> External Traffic Policy: Cluster
> Events:
> Type Reason Age From Message
> ---- ------ ---- ---- -------
> Normal EnsuringLoadBalancer 29m service-controller Ensuring load
> balancer
> Normal EnsuredLoadBalancer 28m service-controller Ensured load
> balancer
>
> The Kubernetes deployment file:
>
> apiVersion: apps/v1
> kind: Deployment
> metadata:
> name: nginx-deployment
> labels:
> app: nginx
> spec:
> replicas: 3
> selector:
> matchLabels:
> app: nginx
> template:
> metadata:
> labels:
> app: nginx
> spec:
> containers:
> - name: nginx
> image: nginx:latest
> ports:
> - containerPort: 8080
> ---
> apiVersion: v1
> kind: Service
> metadata:
> name: nginx-service
> spec:
> selector:
> app: nginx
> type: LoadBalancer
> ports:
> - protocol: TCP
> port: 80
> targetPort: 8080
>
> Does ayone have any pointers as to why the amphora is not able to reach
> the nodeports of the kubernetes workers?
>
> Thanks in advance
>
More information about the openstack-discuss
mailing list