mirror of
https://github.com/ctripcorp/zeus.git
synced 2024-09-20 15:46:01 +08:00
add flags for healthyOps and HealthCheckConf
This commit is contained in:
parent
f7342347d2
commit
68139a3f1b
|
@ -6,6 +6,7 @@ import com.ctrip.zeus.exceptions.ValidationException;
|
|||
import com.ctrip.zeus.executor.TaskManager;
|
||||
import com.ctrip.zeus.model.entity.*;
|
||||
import com.ctrip.zeus.restful.message.ResponseHandler;
|
||||
import com.ctrip.zeus.service.build.ConfigService;
|
||||
import com.ctrip.zeus.service.model.*;
|
||||
import com.ctrip.zeus.service.nginx.CertificateConfig;
|
||||
import com.ctrip.zeus.service.nginx.CertificateInstaller;
|
||||
|
@ -74,6 +75,8 @@ public class OperationResource {
|
|||
private CertificateInstaller certificateInstaller;
|
||||
@Resource
|
||||
private EntityFactory entityFactory;
|
||||
@Resource
|
||||
private ConfigService configService;
|
||||
|
||||
private static DynamicLongProperty apiTimeout = DynamicPropertyFactory.getInstance().getLongProperty("api.timeout", 15000L);
|
||||
private static DynamicBooleanProperty healthyOpsActivate = DynamicPropertyFactory.getInstance().getBooleanProperty("healthy.operation.active", false);
|
||||
|
@ -304,16 +307,27 @@ public class OperationResource {
|
|||
groupId = groupCriteriaQuery.queryByName(groupName);
|
||||
}
|
||||
}
|
||||
|
||||
Group gp = groupRepository.getById(groupId);
|
||||
if (gp == null) {
|
||||
throw new ValidationException("Group Id or Name not found!");
|
||||
}
|
||||
if (null != batch && batch.equals(true)) {
|
||||
Group gp = groupRepository.getById(groupId);
|
||||
List<GroupServer> servers = gp.getGroupServers();
|
||||
for (GroupServer gs : servers) {
|
||||
_ips.add(gs.getIp());
|
||||
}
|
||||
} else if (ips != null) {
|
||||
_ips = ips;
|
||||
List<GroupServer> servers = gp.getGroupServers();
|
||||
for (GroupServer gs : servers) {
|
||||
if (ips.contains(gs.getIp())) {
|
||||
_ips.add(gs.getIp());
|
||||
}
|
||||
}
|
||||
}
|
||||
if (_ips.size() == 0) {
|
||||
throw new ValidationException("Not found ip in group.GroupId:" + groupId + " ip:" + ips.toString());
|
||||
}
|
||||
|
||||
if (healthyOpsActivate.get()) {
|
||||
return memberOps(hh, groupId, _ips, true, TaskOpsType.HEALTHY_OPS);
|
||||
} else {
|
||||
|
@ -349,7 +363,15 @@ public class OperationResource {
|
|||
_ips.add(gs.getIp());
|
||||
}
|
||||
} else if (ips != null) {
|
||||
_ips = ips;
|
||||
List<GroupServer> servers = gp.getGroupServers();
|
||||
for (GroupServer gs : servers) {
|
||||
if (ips.contains(gs.getIp())) {
|
||||
_ips.add(gs.getIp());
|
||||
}
|
||||
}
|
||||
}
|
||||
if (_ips.size() == 0) {
|
||||
throw new ValidationException("Not found ip in group.GroupId:" + groupId + " ip:" + ips.toString());
|
||||
}
|
||||
if (healthyOpsActivate.get()) {
|
||||
return memberOps(hh, groupId, _ips, false, TaskOpsType.HEALTHY_OPS);
|
||||
|
@ -526,6 +548,15 @@ public class OperationResource {
|
|||
}
|
||||
slbIds.add(tmp.getSlbId());
|
||||
}
|
||||
//TODO flag for Healthy ops
|
||||
if (type.equals(TaskOpsType.HEALTHY_OPS)) {
|
||||
for (Long slbId : slbIds) {
|
||||
if (!configService.getEnable("healthy.operation.active", slbId, null, null, false)) {
|
||||
logger.info("healthy.operation.active is false. slbId:" + slbId);
|
||||
return healthyOps(hh, groupId, ips, up);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
List<OpsTask> tasks = new ArrayList<>();
|
||||
for (Long slbId : slbIds) {
|
||||
|
|
|
@ -22,8 +22,9 @@ public class HealthCheckConf {
|
|||
public String generate(VirtualServer vs, Group group) throws Exception {
|
||||
Long vsId = vs.getId();
|
||||
Long groupId = group.getId();
|
||||
Long slbId = vs.getSlbId();
|
||||
|
||||
if (!configService.getEnable("upstream.healthCheck", null, vsId, groupId, true)) {
|
||||
if (!configService.getEnable("upstream.healthCheck", slbId, vsId, groupId, true)) {
|
||||
return "";
|
||||
}
|
||||
|
||||
|
|
|
@ -213,6 +213,7 @@ public class GroupStatusServiceImpl implements GroupStatusService {
|
|||
groupServerStatus.setPull(pullIn);
|
||||
groupServerStatus.setHealthy(raise);
|
||||
groupServerStatus.setUp(up);
|
||||
groupServerStatus.setOnline(true);
|
||||
status.addGroupServerStatus(groupServerStatus);
|
||||
}
|
||||
res.add(status);
|
||||
|
@ -237,14 +238,18 @@ public class GroupStatusServiceImpl implements GroupStatusService {
|
|||
|
||||
Group onlineGroup = onlineGroups.get(groupId);
|
||||
Set<String> onlineMembers = new HashSet<>();
|
||||
Map<String, GroupServer> members = new HashMap<>();
|
||||
if (onlineGroup != null) {
|
||||
for (GroupServer groupServer : onlineGroup.getGroupServers()) {
|
||||
onlineMembers.add(groupServer.getIp());
|
||||
members.put(groupServer.getIp(),groupServer);
|
||||
}
|
||||
}
|
||||
|
||||
List<GroupServer> groupServerList = group.getGroupServers();
|
||||
for (GroupServer gs : groupServerList) {
|
||||
members.put(gs.getIp(),gs);
|
||||
}
|
||||
for (GroupServer gs : members.values()) {
|
||||
GroupServerStatus groupServerStatus = new GroupServerStatus();
|
||||
groupServerStatus.setIp(gs.getIp());
|
||||
groupServerStatus.setPort(gs.getPort());
|
||||
|
@ -277,6 +282,7 @@ public class GroupStatusServiceImpl implements GroupStatusService {
|
|||
groupServerStatus.setPull(pullIn);
|
||||
groupServerStatus.setHealthy(raise);
|
||||
groupServerStatus.setUp(up);
|
||||
groupServerStatus.setOnline(onlineMembers.contains(gs.getIp()));
|
||||
status.addGroupServerStatus(groupServerStatus);
|
||||
}
|
||||
res.add(status);
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
<element name="pull" value-type="boolean" />
|
||||
<element name="healthy" value-type="boolean" />
|
||||
<element name="up" value-type="boolean" />
|
||||
<element name="online" value-type="boolean" />
|
||||
<element name="discription" value-type="String" />
|
||||
</entity>
|
||||
<entity name="group-status-list">
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
<pull>true</pull>
|
||||
<healthy>true</healthy>
|
||||
<up>true</up>
|
||||
<online>false</online>
|
||||
<discription>status</discription>
|
||||
</group-server-status>
|
||||
<group-server-status>
|
||||
|
@ -23,6 +24,7 @@
|
|||
<pull>true</pull>
|
||||
<healthy>true</healthy>
|
||||
<up>true</up>
|
||||
<online>false</online>
|
||||
<discription>status</discription>
|
||||
</group-server-status>
|
||||
</group-status>
|
||||
|
|
Loading…
Reference in a new issue