123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- package main
- import (
- "fmt"
- "net"
- // "os"
- "encoding/json"
- "github.com/aliyun/alibaba-cloud-sdk-go/services/slb"
- "github.com/aliyun/alibaba-cloud-sdk-go/services/ecs"
-
- )
- const accessKeyId = "LTAIuPbTPL3LDDKN"
- const accessSecret = "ORcNedKwWuwVtcq4IRFtUDZgS0b1le"
- func GetOutBoundIP()(ip string, err error) {
- addrs, err := net.InterfaceAddrs()
- if err != nil {
- fmt.Println(err)
- }
- for _, address := range addrs {
- // 检查ip地址判断是否回环地址
- if ipnet, ok := address.(*net.IPNet); ok && !ipnet.IP.IsLoopback() {
- if ipnet.IP.To4() != nil {
- ip = ipnet.IP.String()
- }
- }
- }
- return ip, err
- }
- func GetInstancdFromSlb() (res [] string, err error) {
- client, err := slb.NewClientWithAccessKey("cn-hangzhou", accessKeyId, accessSecret)
- request := slb.CreateDescribeLoadBalancersRequest()
- request.Scheme = "https"
- request.Tags = "[{\"tagKey\":\"app\",\"tagValue\":\"longvideoapi\"}]"
- response, err := client.DescribeLoadBalancers(request)
- if err != nil {
- fmt.Println(err.Error())
-
- }
- loadBalancers := response.LoadBalancers.LoadBalancer
- for i := 0; i < len(loadBalancers); i++ {
- var loadBalancer = loadBalancers[i].LoadBalancerId
- res = append(res, loadBalancer)
- }
- // loadBalancer := responres []string,se.DescribeLoadBalancersResponse
- // res = loadBalancer.String()
- return res , err
- }
- func GetInastanceNameFromEcs(ipaddrs string)(name string , err error) {
- client, err := ecs.NewClientWithAccessKey("cn-hangzhou", accessKeyId, accessSecret)
- request := ecs.CreateDescribeInstancesRequest()
- request.Scheme = "https"
- fmt.Println("['" + ipaddrs + "'']")
- request.PrivateIpAddresses = "['" + ipaddrs + "']"
- response, err := client.DescribeInstances(request)
- if err != nil {
- fmt.Print(err.Error())
- }
- if len(response.Instances.Instance) >0 {
- name= response.Instances.Instance[0].InstanceId
- } else {
- name = "Noname"
- }
- return name ,err
- }
- func SetBackendServers(loadbalancer, backendServices string) (res string, err error) {
- client, err := slb.NewClientWithAccessKey("cn-hangzhou", accessKeyId, accessSecret)
- request := slb.CreateSetBackendServersRequest()
- request.Scheme = "https"
- request.LoadBalancerId = loadbalancer
- request.BackendServers = backendServices
- response, err := client.SetBackendServers(request)
- if err != nil {
- fmt.Print(err.Error())
- }
- fmt.Printf("response is %#v\n", response)
- return
- }
- func main(){
- ipaddr, err := GetOutBoundIP()
- if err != nil {
- fmt.Println(err)
- }
- LoadbalancersIDs, err:= GetInstancdFromSlb()
- InstanceID , err := GetInastanceNameFromEcs(ipaddr)
- backendServices := make(map[string]string)
- backendServices["ServerId"] = InstanceID
- backendServices["Weight"] = "100"
- backend_json, _ := json.Marshal(backendServices)
- backend_string := "[" + string(backend_json) + "]"
- fmt.Printf(backend_string)
- if len(LoadbalancersIDs) >0 {
- for _, LoadbalancersID := range LoadbalancersIDs {
- _, err = SetBackendServers(LoadbalancersID, backend_string)
- if err != nil {
- fmt.Print(err.Error())
- }
- }
- }
- // fmt.Println(response)
- }
|