github.com/outbrain/consul@v1.4.5/website/source/api/operator/area.html.md (about) 1 --- 2 layout: api 3 page_title: Network Areas - Operator - HTTP API 4 sidebar_current: api-operator-area 5 description: |- 6 The /operator/area endpoints expose the network tomography information via 7 Consul's HTTP API. 8 --- 9 10 # Network Areas - Operator HTTP API 11 12 The `/operator/area` endpoints provide tools to manage network areas via 13 Consul's HTTP API. 14 15 ~> **Enterprise Only!** This API endpoint and functionality only exists in 16 Consul Enterprise. This is not present in the open source version of Consul. 17 18 The network area functionality described here is available only in 19 [Consul Enterprise](https://www.hashicorp.com/products/consul/) version 0.8.0 and 20 later. Network areas are operator-defined relationships between servers in two 21 different Consul datacenters. 22 23 Unlike Consul's WAN feature, network areas use just the server RPC port for 24 communication, and relationships can be made between independent pairs of 25 datacenters, so not all servers need to be fully connected. This allows for 26 complex topologies among Consul datacenters like hub/spoke and more general 27 trees. 28 29 Please see the [Network Areas Guide](/docs/guides/areas.html) for more details. 30 31 ## Create Network Area 32 33 This endpoint creates a new network area and returns its ID if it is created 34 successfully. 35 36 | Method | Path | Produces | 37 | ------ | ---------------------------- | -------------------------- | 38 | `POST` | `/operator/area` | `application/json` | 39 40 The table below shows this endpoint's support for 41 [blocking queries](/api/index.html#blocking-queries), 42 [consistency modes](/api/index.html#consistency-modes), 43 [agent caching](/api/index.html#agent-caching), and 44 [required ACLs](/api/index.html#acls). 45 46 | Blocking Queries | Consistency Modes | Agent Caching | ACL Required | 47 | ---------------- | ----------------- | ------------- | ---------------- | 48 | `NO` | `none` | `none` | `operator:write` | 49 50 ### Parameters 51 52 - `dc` `(string: "")` - Specifies the datacenter to query. This will default to 53 the datacenter of the agent being queried. This is specified as a URL query 54 parameter. 55 56 - `PeerDatacenter` `(string: <required>)` - Specifies the name of the Consul 57 datacenter that will be joined the Consul servers in the current datacenter to 58 form the area. Only one area is allowed for each possible `PeerDatacenter`, 59 and a datacenter cannot form an area with itself. 60 61 - `RetryJoin` `(array<string>: nil)`- Specifies a list of Consul servers to 62 attempt to join. Servers can be given as `IP`, `IP:port`, `hostname`, or 63 `hostname:port`. Consul will spawn a background task that tries to 64 periodically join the servers in this list and will run until a join succeeds. 65 If this list is not supplied, joining can be done with a call to the 66 [join endpoint](#area-join) once the network area is created. 67 68 - `UseTLS` `(bool: <optional>)` - Specifies whether gossip over this area should be 69 encrypted with TLS if possible. 70 71 ### Sample Payload 72 73 ```json 74 { 75 "PeerDatacenter": "dc2", 76 "RetryJoin": [ "10.1.2.3", "10.1.2.4", "10.1.2.5" ], 77 "UseTLS": false 78 } 79 ``` 80 81 ### Sample Request 82 83 ```text 84 $ curl \ 85 --request POST \ 86 --data @payload.json \ 87 http://127.0.0.1:8500/v1/operator/area 88 ``` 89 90 ### Sample Response 91 92 ```json 93 { 94 "ID": "8f246b77-f3e1-ff88-5b48-8ec93abf3e05" 95 } 96 ``` 97 98 ## List Network Areas 99 100 This endpoint lists all network areas. 101 102 | Method | Path | Produces | 103 | ------ | ---------------------------- | -------------------------- | 104 | `GET` | `/operator/area` | `application/json` | 105 106 The table below shows this endpoint's support for 107 [blocking queries](/api/index.html#blocking-queries), 108 [consistency modes](/api/index.html#consistency-modes), 109 [agent caching](/api/index.html#agent-caching), and 110 [required ACLs](/api/index.html#acls). 111 112 | Blocking Queries | Consistency Modes | Agent Caching | ACL Required | 113 | ---------------- | ----------------- | ------------- | --------------- | 114 | `YES` | `all` | `none` | `operator:read` | 115 116 ### Parameters 117 118 - `dc` `(string: "")` - Specifies the datacenter to query. This will default to 119 the datacenter of the agent being queried. This is specified as a URL query 120 parameter. 121 122 ### Sample Request 123 124 ```text 125 $ curl \ 126 http://127.0.0.1:8500/v1/operator/area 127 ``` 128 129 ### Sample Response 130 131 ```json 132 [ 133 { 134 "ID": "8f246b77-f3e1-ff88-5b48-8ec93abf3e05", 135 "PeerDatacenter": "dc2", 136 "RetryJoin": ["10.1.2.3", "10.1.2.4", "10.1.2.5"] 137 } 138 ] 139 ``` 140 141 ## Update Network Area 142 143 This endpoint updates a network area to the given configuration. 144 145 | Method | Path | Produces | 146 | ------ | ---------------------------- | -------------------------- | 147 | `PUT` | `/operator/area/:uuid` | `application/json` | 148 149 The table below shows this endpoint's support for 150 [blocking queries](/api/index.html#blocking-queries), 151 [consistency modes](/api/index.html#consistency-modes), 152 [agent caching](/api/index.html#agent-caching), and 153 [required ACLs](/api/index.html#acls). 154 155 | Blocking Queries | Consistency Modes | Agent Caching | ACL Required | 156 | ---------------- | ----------------- | ------------- | ---------------- | 157 | `NO` | `none` | `none` | `operator:write` | 158 159 ### Parameters 160 161 - `dc` `(string: "")` - Specifies the datacenter to query. This will default to 162 the datacenter of the agent being queried. This is specified as a URL query 163 parameter. 164 165 - `UseTLS` `(bool: <optional>)` - Specifies whether gossip over this area should be 166 encrypted with TLS if possible. 167 168 ### Sample Payload 169 170 ```json 171 { 172 "UseTLS": true 173 } 174 ``` 175 176 ### Sample Request 177 178 ```text 179 $ curl \ 180 --request PUT \ 181 --data @payload.json \ 182 http://127.0.0.1:8500/v1/operator/area/8f246b77-f3e1-ff88-5b48-8ec93abf3e05 183 ``` 184 185 ## List Specific Network Area 186 187 This endpoint lists a specific network area. 188 189 | Method | Path | Produces | 190 | ------ | ---------------------------- | -------------------------- | 191 | `GET` | `/operator/area/:uuid` | `application/json` | 192 193 The table below shows this endpoint's support for 194 [blocking queries](/api/index.html#blocking-queries), 195 [consistency modes](/api/index.html#consistency-modes), 196 [agent caching](/api/index.html#agent-caching), and 197 [required ACLs](/api/index.html#acls). 198 199 | Blocking Queries | Consistency Modes | Agent Caching | ACL Required | 200 | ---------------- | ----------------- | ------------- | --------------- | 201 | `YES` | `all` | `none` | `operator:read` | 202 203 ### Parameters 204 205 - `uuid` `(string: <required>)` - Specifies the UUID of the area to list. This 206 is specified as part of the URL. 207 208 - `dc` `(string: "")` - Specifies the datacenter to query. This will default to 209 the datacenter of the agent being queried. This is specified as a URL query 210 parameter. 211 212 ### Sample Request 213 214 ```text 215 $ curl \ 216 http://127.0.0.1:8500/v1/operator/area/8f246b77-f3e1-ff88-5b48-8ec93abf3e05 217 ``` 218 219 ### Sample Response 220 221 ```json 222 [ 223 { 224 "ID": "8f246b77-f3e1-ff88-5b48-8ec93abf3e05", 225 "PeerDatacenter": "dc2", 226 "RetryJoin": ["10.1.2.3", "10.1.2.4", "10.1.2.5"] 227 } 228 ] 229 ``` 230 231 ## Delete Network Area 232 233 This endpoint deletes a specific network area. 234 235 | Method | Path | Produces | 236 | -------- | ---------------------------- | -------------------------- | 237 | `DELETE` | `/operator/area/:uuid` | `application/json` | 238 239 The table below shows this endpoint's support for 240 [blocking queries](/api/index.html#blocking-queries), 241 [consistency modes](/api/index.html#consistency-modes), 242 [agent caching](/api/index.html#agent-caching), and 243 [required ACLs](/api/index.html#acls). 244 245 | Blocking Queries | Consistency Modes | Agent Caching | ACL Required | 246 | ---------------- | ----------------- | ------------- | ---------------- | 247 | `NO` | `none` | `none` | `operator:write` | 248 249 ### Parameters 250 251 - `uuid` `(string: <required>)` - Specifies the UUID of the area to delete. This 252 is specified as part of the URL. 253 254 - `dc` `(string: "")` - Specifies the datacenter to query. This will default to 255 the datacenter of the agent being queried. This is specified as a URL query 256 parameter. 257 258 ### Sample Request 259 260 ```text 261 $ curl \ 262 --request DELETE \ 263 http://127.0.0.1:8500/v1/operator/area/8f246b77-f3e1-ff88-5b48-8ec93abf3e05 264 ``` 265 266 ## Join Network Area 267 268 This endpoint attempts to join the given Consul servers into a specific network 269 area. 270 271 | Method | Path | Produces | 272 | ------ | ---------------------------- | -------------------------- | 273 | `PUT` | `/operator/area/:uuid/join` | `application/json` | 274 275 The table below shows this endpoint's support for 276 [blocking queries](/api/index.html#blocking-queries), 277 [consistency modes](/api/index.html#consistency-modes), 278 [agent caching](/api/index.html#agent-caching), and 279 [required ACLs](/api/index.html#acls). 280 281 | Blocking Queries | Consistency Modes | Agent Caching | ACL Required | 282 | ---------------- | ----------------- | ------------- | ---------------- | 283 | `NO` | `none` | `none` | `operator:write` | 284 285 ### Parameters 286 287 - `uuid` `(string: <required>)` - Specifies the UUID of the area to join. This 288 is specified as part of the URL. 289 290 - `dc` `(string: "")` - Specifies the datacenter to query. This will default to 291 the datacenter of the agent being queried. This is specified as a URL query 292 parameter. 293 294 ### Sample Payload 295 296 ```json 297 ["10.1.2.3", "10.1.2.4", "10.1.2.5"] 298 ``` 299 300 This can be provided as `IP`, `IP:port`, `hostname`, or `hostname:port`. 301 302 ### Sample Request 303 304 ```text 305 $ curl \ 306 --request PUT \ 307 --data @payload.json \ 308 http://127.0.0.1:8500/v1/operator/area/8f246b77-f3e1-ff88-5b48-8ec93abf3e05/join 309 ``` 310 311 ### Sample Response 312 313 ```json 314 [ 315 { 316 "Address": "10.1.2.3", 317 "Joined": true, 318 "Error": "" 319 }, 320 { 321 "Address": "10.1.2.4", 322 "Joined": true, 323 "Error": "" 324 }, 325 { 326 "Address": "10.1.2.5", 327 "Joined": true, 328 "Error": "" 329 } 330 ] 331 ``` 332 333 - `Address` has the address requested to join. 334 335 - `Joined` will be `true` if the Consul server at the given address was 336 successfully joined into the network area. Otherwise, this will be `false` and 337 `Error` will have a human-readable message about why the join didn't succeed. 338 339 ## List Network Area Members 340 341 This endpoint provides a listing of the Consul servers present in a specific 342 network area. 343 344 | Method | Path | Produces | 345 | ------ | ------------------------------ | -------------------------- | 346 | `GET` | `/operator/area/:uuid/members` | `application/json` | 347 348 The table below shows this endpoint's support for 349 [blocking queries](/api/index.html#blocking-queries), 350 [consistency modes](/api/index.html#consistency-modes), 351 [agent caching](/api/index.html#agent-caching), and 352 [required ACLs](/api/index.html#acls). 353 354 | Blocking Queries | Consistency Modes | Agent Caching | ACL Required | 355 | ---------------- | ----------------- | ------------- | --------------- | 356 | `NO` | `none` | `none` | `operator:read` | 357 358 ### Parameters 359 360 - `uuid` `(string: <required>)` - Specifies the UUID of the area to list. This 361 is specified as part of the URL. 362 363 - `dc` `(string: "")` - Specifies the datacenter to query. This will default to 364 the datacenter of the agent being queried. This is specified as a URL query 365 parameter. 366 367 ### Sample Request 368 369 ```text 370 $ curl \ 371 http://127.0.0.1:8500/v1/operator/area/8f246b77-f3e1-ff88-5b48-8ec93abf3e05/members 372 ``` 373 374 ### Sample Response 375 376 ```json 377 [ 378 { 379 "ID": "afc5d95c-1eee-4b46-b85b-0efe4c76dd48", 380 "Name": "node-2.dc1", 381 "Addr": "127.0.0.2", 382 "Port": 8300, 383 "Datacenter": "dc1", 384 "Role": "server", 385 "Build": "0.8.0", 386 "Protocol": 2, 387 "Status": "alive", 388 "RTT": 256478 389 }, 390 ] 391 ``` 392 393 - `ID` is the node ID of the server. 394 395 - `Name` is the node name of the server, with its datacenter appended. 396 397 - `Addr` is the IP address of the node. 398 399 - `Port` is the server RPC port of the node. 400 401 - `Datacenter` is the node's Consul datacenter. 402 403 - `Role` is always "server" since only Consul servers can participate in network 404 areas. 405 406 - `Build` has the Consul version running on the node. 407 408 - `Protocol` is the [protocol version](/docs/upgrading.html#protocol-versions) 409 being spoken by the node. 410 411 - `Status` is the current health status of the node, as determined by the 412 network area distributed failure detector. This will be "alive", "leaving", 413 "left", or "failed". A "failed" status means that other servers are not able 414 to probe this server over its server RPC interface. 415 416 - `RTT` is an estimated network round trip time from the server answering the 417 query to the given server, in nanoseconds. This is computed using [network 418 coordinates](/docs/internals/coordinates.html).