Authored by qinchao

qcloud 负载均衡添加方法

... ... @@ -5,16 +5,12 @@ package com.monitor.cloudtools.controller;
*/
import com.monitor.awstools.service.AwsLbService;
import com.monitor.cloudtools.model.CommElbInfoResponse;
import com.monitor.cloudtools.model.CommLbInstances;
import com.monitor.cloudtools.service.CloudLbService;
import com.monitor.model.domain.ElbInfo;
import com.monitor.model.response.BaseResponse;
import com.monitor.qcloudtools.service.QcloudLbService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
... ... @@ -31,12 +27,6 @@ public class CloudLbController {
public static final Logger logger = LoggerFactory.getLogger("cloudLbLogger");
/**
* 腾讯云
*/
@Autowired
private QcloudLbService qcloudLbService;
/**
* 亚马逊云
*/
@Autowired
... ...
... ... @@ -9,7 +9,6 @@ import com.monitor.cloudtools.util.DnsPodUtil;
import com.monitor.model.domain.DomainInfo;
import com.monitor.model.domain.ElbInfo;
import com.monitor.model.domain.InstanceInfo;
import com.monitor.model.response.BaseResponse;
import com.monitor.mysql.mapper.InternalDomainMapper;
import com.monitor.qcloudtools.service.QcloudLbService;
import com.monitor.qcloudtools.service.QcloudToolService;
... ... @@ -19,7 +18,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
... ...
package com.monitor.compare.model;
package com.yoho.ops.cmdb.qcloud.model;
import lombok.Data;
... ... @@ -14,6 +14,8 @@ public class QcloudCLBModel {
@Data
public static class Backend {
String unInstanceId;
String instanceId;
String lanIp;
String instanceName;
... ...
... ... @@ -5,13 +5,17 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.qcloud.Module.Base;
import com.qcloud.Module.Cvm;
import com.qcloud.Module.Lb;
import com.qcloud.Module.Scaling;
import com.qcloud.QcloudApiModuleCenter;
import com.yoho.ops.cmdb.qcloud.constant.QcloudConstant;
import com.yoho.ops.cmdb.qcloud.model.QcloudAutoScalingGroup;
import com.yoho.ops.cmdb.qcloud.model.QcloudCLBModel;
import com.yoho.ops.cmdb.qcloud.model.QcloudInstanceSet;
import com.yoho.ops.cmdb.qcloud.model.QcloudScalingInstancesSet;
import org.apache.commons.lang3.StringUtils;
import org.codehaus.jackson.map.DeserializationConfig;
import org.codehaus.jackson.map.ObjectMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.CollectionUtils;
... ... @@ -25,6 +29,7 @@ import java.util.TreeMap;
*/
public class QcloudSdkUtil {
private static final Logger logger = LoggerFactory.getLogger(QcloudSdkUtil.class);
public static ObjectMapper OBJECT_MAPPER = new ObjectMapper().configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES,false);
/**
* 获取腾讯云通用参数
... ... @@ -105,7 +110,7 @@ public class QcloudSdkUtil {
/*******************************************************************
*************************** 伸缩组 ************************
*************************** 1. 伸缩组 ************************
******************************************************************/
/*******************************************************************
... ... @@ -310,9 +315,33 @@ public class QcloudSdkUtil {
return instanceSets;
}
/*******************************************************************
*************************** 2 负载均衡器 (传统) ************************
******************************************************************/
/**
* 获取负载均衡绑定的后端服务器列表
*/
public static QcloudCLBModel describeLoadBalancerBackends(String loadBalancerId){
if(StringUtils.isBlank(loadBalancerId)){
return null;
}
try{
TreeMap<String, Object> params = new TreeMap<>();
params.put("loadBalancerId", loadBalancerId);
String rootJson = QcloudSdkUtil.getCommonData(new Lb(), "GET", QcloudConstant.QCLOUD_API_Describe_Load_BalancerBackends, params, true);
if(StringUtils.isBlank(rootJson)){
return null;
}
QcloudCLBModel qcloudCLBModel = OBJECT_MAPPER.readValue(rootJson, QcloudCLBModel.class);
return qcloudCLBModel;
}catch (Exception e){
logger.error(" - QcloudSdkUtil - describeInstances- error", e);
}
return null;
}
public static void main(String args[]){
getScalingInstancesSetAll("asg-1llhxawt");
describeLoadBalancerBackends("lb-09g87u8f");
}
}
\ No newline at end of file
... ...
... ... @@ -3,12 +3,11 @@ package com.monitor.compare.service;
import com.model.HostInfo;
import com.monitor.cmdb.service.IHostInfoService;
import com.monitor.compare.comparator.IpComparator;
import com.monitor.compare.model.QcloudCLBModel;
import com.qcloud.Module.Lb;
import com.qcloud.QcloudApiModuleCenter;
import com.yoho.ops.cmdb.aws.lb.AwsLoadBalance;
import com.yoho.ops.cmdb.models.Host;
import com.yoho.ops.cmdb.models.LoadBalance;
import com.yoho.ops.cmdb.qcloud.model.QcloudCLBModel;
import com.yoho.ops.cmdb.qcloud.util.QcloudSdkUtil;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
... ... @@ -19,7 +18,6 @@ import org.springframework.stereotype.Component;
import java.util.*;
import static com.monitor.compare.stat.StaticVar.AWS_TYPE;
import static com.monitor.compare.stat.StaticVar.OBJECT_MAPPER;
/**
* Created by yoho on 2016/10/19.
... ... @@ -35,20 +33,12 @@ public class NignxCompare {
@Value("${nginx_clb_qcloud}")
private String nginx_clb_qcloud;
/* @Autowired
private AWSClientComp awsClientComp;
@Autowired
private AWSELBClientComp awselbClientComp;*/
@Autowired
private AwsLoadBalance awsLoadBalance;
@Autowired
private IHostInfoService hostInfoService;
/* @Autowired
private AwsApplicationLoadBalanceFetcher alb;*/
public Map<String, List<String>> compare(String net) {
Map<String, List<String>> configMap;
... ... @@ -102,40 +92,14 @@ public class NignxCompare {
//获取clb中ip列表
private List<String> queryQcloudClbInstance() throws Exception {
List<String> qcloudNignxIps = new ArrayList<>();
TreeMap<String, Object> config = new TreeMap<String, Object>();
config.put("SecretId", "AKID6dwpKadiQgbDpXDtyNhppIHPO5qPv5GK");
config.put("SecretKey", "ACJkH9mg0DBA1PYpf0E7f3g534wBsQaW");
config.put("RequestMethod", "GET");
config.put("DefaultRegion", "bj");
QcloudApiModuleCenter module = new QcloudApiModuleCenter(new Lb(),
config);
TreeMap<String, Object> params = new TreeMap<String, Object>();
params.put("loadBalancerId", nginx_clb_qcloud);
String result;
result = module.call("DescribeLoadBalancerBackends", params);
QcloudCLBModel qcloudCLBModel = OBJECT_MAPPER.readValue(result, QcloudCLBModel.class);
QcloudCLBModel qcloudCLBModel=QcloudSdkUtil.describeLoadBalancerBackends(nginx_clb_qcloud);
if (null != qcloudCLBModel) {
for (QcloudCLBModel.Backend backend : qcloudCLBModel.getBackendSet()) {
qcloudNignxIps.add(backend.getLanIp());
}
}
//排序
Collections.sort(qcloudNignxIps, new IpComparator());
return qcloudNignxIps;
}
... ... @@ -146,8 +110,6 @@ public class NignxCompare {
Map<String, List<String>> nginxMap = new HashMap<>();
List<String> elbInstanceIpList = new ArrayList<>();
try {
List<String> elbList = new ArrayList<>();
... ... @@ -194,43 +156,6 @@ public class NignxCompare {
elbInstanceIpList.add(host.getIp());
}
}
/*
//DescribeLoadBalancersResult result = awselbClientComp.getClient().describeLoadBalancers(new DescribeLoadBalancersRequest(elbList));
//List<Instance> elbInstances = result.getLoadBalancerDescriptions().get(0).getInstances();
List<LoadBalance> elbInstances=alb.getAlbsWithNames(elbList);
List<String> elbInstanceIdList = new ArrayList<>();
for(LoadBalance alb:elbInstances){
alb.getHosts().forEach(host -> {
elbInstanceIdList.add(host.getId());
});
}
if (elbInstanceIdList.isEmpty()) {
return elbInstanceIpList;
}
DescribeInstancesRequest request = new DescribeInstancesRequest();
request.setInstanceIds(elbInstanceIdList);
DescribeInstancesResult describeInstancesResult = awsClientComp.getClient().describeInstances(request);
List<Reservation> reservationList = describeInstancesResult.getReservations();
for (Reservation reservation : reservationList) {
for (com.amazonaws.services.ec2.model.Instance instance : reservation.getInstances()) {
elbInstanceIpList.add(instance.getPrivateIpAddress());
}
}*/
return elbInstanceIpList;
return elbInstanceIpList;
}
}
... ...