IBM Cloud Load Balancer에 IBM Cloud CLI로 멤버 추가

6090 단어 loadbalanceribmcloud

목적



IBM Cloud Load Balancer(이하 ICLB)는 IBM Cloud의 LBaaS입니다. ICLB는 기본 설정은 포털의 웹 UI에서 가능하지만 웹 UI에서 설정할 수 없는 것도 있습니다. 예를 들어, ICLB의 구성원은 웹 UI에서 가상 서버의 기본 IP만 선택할 수 있습니다. 휴대용 IP를 지정하려면 API를 사용해야 합니다.

API를 이용하려면 API 문서를 읽고 열심히 curl하는 라이브러리를 사용하여 Python 등으로 쓰는 slcli를 이용하는 방법 등이 있지만 IBM Cloud, 특히 구 SoftLayer 시대의 문서는 매우 이해하기 어렵다. 입니다. 파이썬을 사용한 샘플은 많이 공개되어 있지만 파이썬을 실행하는 환경이 필요합니다.

그래서 이번에는 IBM Cloud 사용자라면 반드시 설치하고 있는 IBM Cloud CLI를 사용하여 멤버를 추가해 보겠습니다.

절차



ICLB 주문



API도 가능합니다만 이번은 할애해, 벌써 포털로부터 주문되고 있는 것으로 합니다.

멤버(서버 인스턴스)는 비워 둡니다.



인스턴스의 UUID 확인



인스턴스의 UUID를 확인합니다. IBM Cloud CLI를 활용합니다.
$ ibmcloud sl call-api Network_LBaaS_LoadBalancer getAllObjects

[
        {
                "accountId": ******,
                "address": "lb-tok04-******-tok04.clb.appdomain.cloud",
                "createDate": "2020-06-08T10:48:23+09:00",
                "id": ******,
                "isDataLogEnabled": 1,
                "isPublic": 0,
                "locationId": 2344395,
                "modifyDate": "2020-06-21T10:56:37+09:00",
                "name": "lb-tok04",
                "operatingStatus": "ONLINE",
                "provisioningStatus": "ACTIVE",
                "type": 0,
                "useSystemPublicIpPool": 1,
                "uuid": "*******-****-****-****-************",
                "datacenter": {
                        "id": 2344395,
                        "longName": "Tokyo 4",
                        "name": "tok04",
                        "statusId": 2
                }
        }
]

이 때의 uuid를 삼가해 둡니다.

멤버 정의 JSON 만들기



다음 형식으로 JSON 파일을 준비합니다. 배열의 첫 번째로 앞서 둔 UUID를 지정합니다. 두 번째로 멤버를 배열로 지정합니다. 대상이 Public IP인 경우publicIpAddress로 설정합니다. 이번은 privateIpAddress로 합니다.

members.json
[
  "${uuid}",
  [
    {
      "privateIpAddress": "${メンバー1のIP}"
    },
    {
      "privateIpAddress": "${メンバー2のIP}"
    }
  ]
]

회원 추가



다음과 같이 CLI를 실행합니다.
$ ibmcloud sl call-api Network_LBaaS_Member addLoadBalancerMembers --parameters "$(cat members.json)"

{
        "accountId": ******,
        "address": "lb-tok04-******-tok04.clb.appdomain.cloud",
        "createDate": "2020-06-08T10:48:23+09:00",
        "id": ******,
        "isDataLogEnabled": 1,
        "isPublic": 0,
        "locationId": 2344395,
        "modifyDate": "2020-06-21T11:08:35+09:00",
        "name": "lb-tok04",
        "operatingStatus": "ONLINE",
        "provisioningStatus": "UPDATE_PENDING",
        "type": 0,
        "useSystemPublicIpPool": 1,
        "uuid": "*******-****-****-****-************"
}

오류가 없으면 OK입니다.

확인



포털에서 확인합니다.



덧붙여서 목적지에 휴대용 IP를 지정했을 경우는 Server Name와 타입은 不明가 되어 기분 나쁘지만, 신경쓰지 말아 좋을 것입니다.

CLI에서 확인합니다. 방금 전에 UUID를 사용했지만 이 경우 ID를 사용합니다.
$ ibmcloud sl call-api Network_LBaaS_LoadBalancer getAllObjects --mask id
[
        {
                "id": ******
        }
]
$ ibmcloud sl call-api Network_LBaaS_LoadBalancer getMembers --init ${id}
[
        {
                "address": "*.*.*.*",
                "createDate": "2020-06-21T11:08:35+09:00",
                "id": *******,
                "modifyDate": "2020-06-21T11:08:42+09:00",
                "provisioningStatus": "ACTIVE",
                "uuid": "********-****-****-****-************",
                "weight": null
        },
        {
                "address": "*.*.*.*",
                "createDate": "2020-06-21T11:08:35+09:00",
                "id": *******,
                "modifyDate": "2020-06-21T11:08:42+09:00",
                "provisioningStatus": "ACTIVE",
                "uuid": "********-****-****-****-************",
                "weight": null
        }
]
"weight": null"weight": 50와 같은 의미입니다. 명시하고 싶은 경우는 방금전의 JSON로 지정하는 것도 가능합니다.

이상입니다.

참고


  • SoftLayer API Reference
  • ICLB API 참조
  • 좋은 웹페이지 즐겨찾기