Forum Discussion

Brian_Burns's avatar
Brian_Burns
Icon for Nimbostratus rankNimbostratus
Sep 16, 2019

Big-IQ AS3 - Invalid Node, the IP address X.X.X.X already exists

We are in the process of implementing automation through AS3 and Big-IQ. I am currently running into an issue where I have multiple tenants that use the same pool member IP addresses, but different ports for each tenant application. When I declare the second Tenant, I receive an error that states the IP address already exists. Is there any way I can reuse pool members with different AS3 tenants?

 

{
    "msg": [
        "The AS3 declaration returned an error.",
        {
            "status": 422,
            "response": {
                "results": [
                    {
                        "message": "Failed to send declaration: status:422, body:{\"results\":[{\"message\":\"declaration failed\",\"response\":\"0107176c:3: Invalid Node, the IP address X.X.X.X%1 already exists.\",\"code\":422,\"host\":\"localhost\",\"tenant\":\"DEV_APP02\",\"runTime\":1177}],\"declaration\":{\"remark\":\"HTTPS with predictive-node pool\",\"label\":\"DEV_APP02\",\"id\":\"2d30988f-8379-48cc-b239-48c31c0534ba\",\"schemaVersion\":\"3.0.0\",\"class\":\"ADC\",\"updateMode\":\"selective\",\"controls\":{\"archiveTimestamp\":\"2019-09-16T19:15:30.558Z\"}},\"code\":422}",
                        "code": 422,
                        "host": "localhost",
                        "tenant": "DEV_APP02",
                        "runTime": 11557
                    }
                ],
                "declaration": {
                    "updateMode": "selective",
                    "remark": "HTTPS with predictive-node pool",
                    "target": {
                        "address": "X.X.X.X"
                    },
                    "class": "ADC",
                    "controls": {
                        "archiveTimestamp": "2019-09-16T19:15:33.914Z"
                    },
                    "label": "DEV_APP02",
                    "schemaVersion": "3.0.0",
                    "id": "xxxx-xxxx-xxxx"
                }
            }
        }
    ],
    "changed": false,
    "_ansible_no_log": false
}

 

Thanks,

Brian Burns

 

  • Sounds like you should be able to use the following in your pool member section:

     

    "shareNodes": true

     

    This will create the Nodes in the Common partition, but be aware that those nodes in that Common partition will show up in all of the other tenants even if they are not using it.

     

    so for example my node declarations look like this.

     

    ...

                    "app1_pool": {

                        "class": "Pool",

                        "monitors": [

                            "http"

                        ],

                        "loadBalancingMode": "least-connections-member",

                        "members": [

                            {

                                "adminState": "enable",

                                "shareNodes": true,

                                "servicePort": 80,

                                "serverAddresses": [

                                    "2.2.2.2"

                                ],

                                "hostname": "vmmsjontestp01"

                            },

                            {

                                "adminState": "enable",

                                "shareNodes": true,

                                "servicePort": 80,

                                "serverAddresses": [

                                    "3.3.3.3"

                                ],

                                "hostname": "vmmsjontestp02"

                            }

                            {

                                "adminState": "enable",

                                "shareNodes": true,

                                "servicePort": 80,

                                "serverAddresses": [

                                    "4.4.4.4"

                                ],

                                "hostname": "vmmsjontestp03"

                            }

     

  • Sounds like you should be able to use the following in your pool member section:

     

    "shareNodes": true

     

    This will create the Nodes in the Common partition, but be aware that those nodes in that Common partition will show up in all of the other tenants even if they are not using it.

     

    so for example my node declarations look like this.

     

    ...

                    "app1_pool": {

                        "class": "Pool",

                        "monitors": [

                            "http"

                        ],

                        "loadBalancingMode": "least-connections-member",

                        "members": [

                            {

                                "adminState": "enable",

                                "shareNodes": true,

                                "servicePort": 80,

                                "serverAddresses": [

                                    "2.2.2.2"

                                ],

                                "hostname": "vmmsjontestp01"

                            },

                            {

                                "adminState": "enable",

                                "shareNodes": true,

                                "servicePort": 80,

                                "serverAddresses": [

                                    "3.3.3.3"

                                ],

                                "hostname": "vmmsjontestp02"

                            }

                            {

                                "adminState": "enable",

                                "shareNodes": true,

                                "servicePort": 80,

                                "serverAddresses": [

                                    "4.4.4.4"

                                ],

                                "hostname": "vmmsjontestp03"

                            }