Neutron/LBaaS/APIRevisionProposals
< Neutron | LBaaS
Revision as of 17:52, 17 April 2014 by Brandon Logan (talk | contribs) (Created page with "== Proposal 1 == === Use Cases === ====SSL Termination==== '''Single Create LB Call''' Request: <pre> POST /loadbalancers { "loadbalancer": { "name": "Single...")
Proposal 1
Use Cases
SSL Termination
Single Create LB Call
Request:
POST /loadbalancers { "loadbalancer": { "name": "Single Call LB", "port":443, "protocol": "HTTPS", "ssl_decryption": { "certificate": "CERTIFICATE", "private_key": "PRIVATE_KEY", "intermediate_certificate": "INTERMEDIATE_CERTIFICATE" }, "vips":[ { "type":"IPv4", "subnet_id":"SUBNET_UUID" } ], "pool":{ "name": "pool1”, “subnet_id”: “SUBNET_UUID”, "algorithm": "ROUNDROBIN", "session_persistence": "COOKIE", "members": [{ "ip": "10.1.1.1", "port": 80, "enabled": true }], "health_monitor": { "type": "HTTPS", "delay": 1, "timeout": 10, "interval": 1 } } } }
Response:
{ "loadbalancer": { "id": "LB_UUID", "name": "Single Call LB", "port":443, "protocol": "HTTPS", "ssl_decryption": { "id": SSL_DECRYPTION_UUID", "certificate": "CERTIFICATE", "private_key": "PRIVATE_KEY", "intermediate_certificate": "INTERMEDIATE_CERTIFICATE" }, "vips":[ { "id": "VIP_UUID", "address": "12.1.1.1", "type":"IPv4", "subnet_id":"SUBNET_UUID" } ], "pool":{ "id": "POOL_UUID", "name": "pool1”, “subnet_id”: “SUBNET_UUID”, "algorithm": "ROUNDROBIN", "session_persistence": "COOKIE", "members": [{ "id": "MEMBER_UUID", "ip": "10.1.1.1", "port": 80, "enabled": true }], "health_monitor": { "type": "HTTPS", "delay": 1, "timeout": 10, "interval": 1 } } } }
Create by Each Primitive
1. Create VIP
Request:
POST /vips { "vip": { "type": "IPv4", "subnet_id": "SUBNET_UUID" } }
Response:
{ "vip": { "id": "VIP_UUID", "address": "12.1.1.1", "type": "IPv4", "subnet_id": "SUBNET_UUID" } }
2. Create Pool
Request:
POST /pools { "pool": { "name": "pool1", "algorithm": "ROUNDROBIN", "session_persistence": "SOURCE_IP", "subnet_id": "SUBNET_UUID", "members": [ { "ip": "10.1.1.1", "port": 80 } ] } }
Response:
{ "pool": { "id": "POOL_UUID", "name": "pool1", "algorithm": "ROUNDROBIN", "session_persistence": "SOURCE_IP", "subnet_id": "SUBNET_UUID", "members": [ { "id": "MEMBER_UUID", "ip": "10.1.1.1", "port": 80 } ] } }
3. Create Health Monitor On Pool
Request:
POST /pools/{pool_uuid}/health_monitor { "health_monitor": { "type": "HTTPS", "delay": 1, "timeout": 10, "interval": 1 } }
Response:
{ "health_monitor": { "type": "HTTPS", "delay": 1, "timeout": 10, "interval": 1 } }
4. Create SSL Decryption
Request:
POST /ssl_decryption { "ssl_decryption": { "certificate": "CERTIFICATE", "private_key": "PRIVATE_KEY", "intermediate_certificate": "INTERMEDIATE_CERTIFICATE" } }
Response:
{
"ssl_decryption": { "id": "SSL_DECRYPTION_UUID", "certificate": "CERTIFICATE", "private_key": "PRIVATE_KEY", "intermediate_certificate": "INTERMEDIATE_CERTIFICATE" }
}
5. Create Load Balancer
Request:
POST /loadbalancers { "loadbalancer": { "name": "Single Call LB", "port":443, "protocol": "HTTPS", "ssl_decryption": { "id": "SSL_DECRYPTION_UUID" }, "vips":[ { "id": "VIP_UUID" } ], "pool":{ "id": "POOL_UUID" } } }
L7 Switching/Content Switching
Single Create LB Call
In this example, the multiple pools are defined in a content_switching object that is attached to the load balancer object. The rules are to be defined for each pool defined in the content_switching object.
Request:
POST /loadbalancers { "loadbalancer": { "name": "Single Call LB", "port":443, "protocol": "HTTPS", "content_switching": { "enabled": true, "pools": [ { "name": "pool2", "subnet_id": "SUBNET_UUID", "algorithm": "ROUNDROBIN", "session_persistence": "COOKIE", "members": [ { "ip":"10.1.1.2", "port": 80, "enabled": true }, "rules":[ { "type": "path", "match": "/index.html" }] }] }, "vips":[ { "type":"IPv4", "subnet_id":"SUBNET_UUID" } ], "pool":{ "name": "pool1”, “subnet_id”: “SUBNET_UUID”, "algorithm": "ROUNDROBIN", "session_persistence": "COOKIE", "members": [{ "ip": "10.1.1.1", "port": 80, "enabled": true }], "health_monitor": { "type": "HTTPS", "delay": 1, "timeout": 10, "interval": 1 } } } }
Response:
{ "loadbalancer": { "id": "LB_UUID", "name": "Single Call LB", "port":443, "protocol": "HTTPS", "ssl_decryption": { "id": SSL_DECRYPTION_UUID", "certificate": "CERTIFICATE", "private_key": "PRIVATE_KEY", "intermediate_certificate": "INTERMEDIATE_CERTIFICATE" }, "vips":[ { "id": "VIP_UUID", "address": "12.1.1.1", "type":"IPv4", "subnet_id":"SUBNET_UUID" } ], "pool":{ "id": "POOL_UUID", "name": "pool1”, “subnet_id”: “SUBNET_UUID”, "algorithm": "ROUNDROBIN", "session_persistence": "COOKIE", "members": [{ "id": "MEMBER_UUID", "ip": "10.1.1.1", "port": 80, "enabled": true }], "health_monitor": { "type": "HTTPS", "delay": 1, "timeout": 10, "interval": 1 } } } }
Create by Each Primitive