This commit is contained in:
xingchaowang 2015-03-06 22:39:22 +08:00
parent 7e42bc17be
commit 265ea0733a
16 changed files with 677 additions and 30 deletions

View file

@ -2,6 +2,7 @@ package com.ctrip.zeus;
import com.ctrip.zeus.server.Server;
import com.ctrip.zeus.server.SlbAdminServer;
import com.ctrip.zeus.util.S;
import com.ctrip.zeus.util.ShutdownHookManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -22,11 +23,11 @@ public class SlbAdminMain {
private static void setSystemProperties() {
//Archaius loading configuration depends on this property.
setPropertyDefaultValue("archaius.deployment.applicationId","slb-admin");
setPropertyDefaultValue("archaius.deployment.environment","local");
setPropertyDefaultValue("server.www.base-dir",new File("").getAbsolutePath()+"/src/main/www");
setPropertyDefaultValue("server.temp-dir",new File("").getAbsolutePath()+"/target/temp");
setPropertyDefaultValue("APP_HOME",new File("").getAbsolutePath());
S.setPropertyDefaultValue("archaius.deployment.applicationId", "slb-admin");
S.setPropertyDefaultValue("archaius.deployment.environment","local");
S.setPropertyDefaultValue("server.www.base-dir",new File("").getAbsolutePath()+"/src/main/www");
S.setPropertyDefaultValue("server.temp-dir",new File("").getAbsolutePath()+"/target/temp");
S.setPropertyDefaultValue("APP_HOME",new File("").getAbsolutePath());
}
private static Server startServer() throws Exception {
@ -61,13 +62,6 @@ public class SlbAdminMain {
}
}
private static void setPropertyDefaultValue(String propertyName, String defaultValue) {
String val = System.getProperty(propertyName);
if(val==null || val.trim().isEmpty()){
System.setProperty(propertyName, defaultValue);
}
}
private static void printStartupAndShutdownMsg(String[] args) {
String host= "Unknown";
try {

View file

@ -0,0 +1,31 @@
package com.ctrip.zeus.client;
import org.glassfish.jersey.client.ClientConfig;
import org.glassfish.jersey.uri.UriComponent;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.WebTarget;
/**
* @author:xingchaowang
* @date: 3/6/2015.
*/
public abstract class AbstractRestClient {
private WebTarget webTarget;
protected AbstractRestClient(String url) {
ClientConfig config = new ClientConfig();
Client client = ClientBuilder.newClient(config);
webTarget = client.target(url);
}
public String urlEncode(String url) {
return UriComponent.encode(url, UriComponent.Type.PATH_SEGMENT);
}
protected WebTarget getTarget(){
return webTarget;
}
}

View file

@ -0,0 +1,36 @@
package com.ctrip.zeus.client;
import com.ctrip.zeus.model.entity.SlbCluster;
import javax.ws.rs.client.Entity;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.util.List;
/**
* @author:xingchaowang
* @date: 3/6/2015.
*/
public class SlbClusterClient extends AbstractRestClient {
public SlbClusterClient(String url) {
super(url);
}
public List<SlbCluster> getAll() {
String res = getTarget().path("/api/slb").request().get(String.class);
System.out.println(res);
return null;
}
public void add(SlbCluster slbCluster) {
Response res = getTarget().path("/api/slb").request()
.post(Entity.entity(
String.format(SlbCluster.JSON, slbCluster),
MediaType.APPLICATION_JSON
));
if (res.getStatus() != 200) {
throw new RuntimeException(String.valueOf(res.getStatus()));
}
}
}

View file

@ -1,14 +1,18 @@
package com.ctrip.zeus.restful.resource;
import com.ctrip.zeus.model.entity.SlbCluster;
import com.ctrip.zeus.model.transform.DefaultJsonParser;
import com.ctrip.zeus.service.SlbClusterRepository;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.io.IOException;
/**
* @author:xingchaowang
@ -26,4 +30,16 @@ public class SLBClusterResource {
slbClusterRepository.list();
return Response.ok("hello").build();
}
@POST
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, "*/*"})
public Response add(String slb) {
try {
SlbCluster sc = DefaultJsonParser.parse(SlbCluster.class, slb);
slbClusterRepository.add(sc);
} catch (IOException e) {
e.printStackTrace();
}
return Response.ok("hello").build();
}
}

View file

@ -10,4 +10,6 @@ import java.util.List;
*/
public interface SlbClusterRepository extends Repository {
List<SlbCluster> list();
void add(SlbCluster sc);
}

View file

@ -1,9 +1,15 @@
package com.ctrip.zeus.service.impl;
import com.ctrip.zeus.dal.core.*;
import com.ctrip.zeus.model.entity.SlbCluster;
import com.ctrip.zeus.service.SlbClusterRepository;
import com.ctrip.zeus.support.DefaultDoBuilder;
import org.springframework.stereotype.Repository;
import org.unidal.dal.jdbc.DalException;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
/**
* @author:xingchaowang
@ -11,10 +17,49 @@ import java.util.List;
*/
@Repository("slbClusterRepository")
public class SlbClusterRepositoryImpl implements SlbClusterRepository {
@Resource
private SlbClusterDao slbClusterDao;
@Resource
private SlbVipDao slbVipDao;
@Resource
private SlbServerDao slbServerDao;
@Resource
private SlbDomainDao slbDomainDao;
@Resource
private SlbVirtualServerDao slbVirtualServerDao;
@Override
public List<SlbCluster> list() {
return null;
}
@Override
public void add(SlbCluster sc) {
Map<Class<?>, List> map = new DefaultDoBuilder().build(sc);
SlbClusterDo scd = (SlbClusterDo) map.get(SlbClusterDo.class).get(0);
scd.setStatus("A");
List<SlbVipDo> svdList = map.get(SlbVipDo.class);
List<SlbServerDo> ssdList = map.get(SlbServerDo.class);
List<SlbDomainDo> sddList = map.get(SlbDomainDo.class);
List<SlbVirtualServerDo> svsdList = map.get(SlbVirtualServerDo.class);
try {
slbClusterDao.insert(scd);
if (svdList != null) {
for (SlbVipDo d : svdList) {
d.setSlbClusterId(scd.getId());
slbVipDao.insert(d);
}
}
if (ssdList != null) {
for (SlbServerDo d : ssdList) {
d.setSlbClusterId(scd.getId());
slbServerDao.insert(d);
}
}
} catch (DalException e) {
e.printStackTrace();
}
}
}

View file

@ -0,0 +1,157 @@
package com.ctrip.zeus.support;
import com.ctrip.zeus.dal.core.*;
import com.ctrip.zeus.model.IEntity;
import com.ctrip.zeus.model.IVisitor;
import com.ctrip.zeus.model.entity.*;
import java.util.*;
/**
* @author:xingchaowang
* @date: 3/6/2015.
*/
public class DefaultDoBuilder implements IVisitor {
private IVisitor m_visitor;
private Map<Class<?>,List> m_map;
public DefaultDoBuilder() {
m_map = new HashMap<>();
m_visitor = this;
}
public Map<Class<?>, List> build(IEntity<?> entity) {
entity.accept(this);
return m_map;
}
@Override
public void visitApplication(Application application) {
getList(ApplicationDo.class).add(EntityDoConverter.toApplicationDo(application));
if (!application.getAppSlbs().isEmpty()) {
for (AppSlb appSlb : application.getAppSlbs()) {
appSlb.accept(m_visitor);
}
}
if (application.getHealthCheck() != null) {
application.getHealthCheck().accept(m_visitor);
}
if (application.getLoadBalancingMethod() != null) {
application.getLoadBalancingMethod().accept(m_visitor);
}
if (!application.getAppServers().isEmpty()) {
for (AppServer appServer : application.getAppServers()) {
appServer.accept(m_visitor);
}
}
}
@Override
public void visitAppServer(AppServer appServer) {
getList(AppServerDo.class).add(EntityDoConverter.toAppServerDo(appServer));
if (appServer.getServer() != null) {
appServer.getServer().accept(m_visitor);
}
}
@Override
public void visitAppSlb(AppSlb appSlb) {
getList(AppServerDo.class).add(EntityDoConverter.toAppSlbDo(appSlb));
if (appSlb.getVirtualServer() != null) {
appSlb.getVirtualServer().accept(m_visitor);
}
}
@Override
public void visitDomain(Domain domain) {
getList(SlbDomainDo.class).add(EntityDoConverter.toSlbDomainDo(domain));
}
@Override
public void visitHealthCheck(HealthCheck healthCheck) {
getList(AppHealthCheckDo.class).add(EntityDoConverter.toAppHealthCheckDo(healthCheck));
}
@Override
public void visitLoadBalancingMethod(LoadBalancingMethod loadBalancingMethod) {
getList(AppLoadBalancingMethodDo.class).add(EntityDoConverter.toAppLoadBalancingMethodDo(loadBalancingMethod));
}
@Override
public void visitModel(Model model) {
if (model.getSlbCluster() != null) {
model.getSlbCluster().accept(m_visitor);
}
if (model.getApplication() != null) {
model.getApplication().accept(m_visitor);
}
}
@Override
public void visitServer(Server server) {
getList(ServerDo.class).add(EntityDoConverter.toServerDo(server));
}
@Override
public void visitSlbCluster(SlbCluster slbCluster) {
getList(SlbClusterDo.class).add(EntityDoConverter.toSlbClusterDo(slbCluster));
if (!slbCluster.getVips().isEmpty()) {
for (Vip vip : slbCluster.getVips()) {
vip.accept(m_visitor);
}
}
if (!slbCluster.getSlbServers().isEmpty()) {
for (SlbServer slbServer : slbCluster.getSlbServers()) {
slbServer.accept(m_visitor);
}
}
if (!slbCluster.getVirtualServers().isEmpty()) {
for (VirtualServer virtualServer : slbCluster.getVirtualServers()) {
virtualServer.accept(m_visitor);
}
}
}
@Override
public void visitSlbServer(SlbServer slbServer) {
getList(SlbServerDo.class).add(EntityDoConverter.toSlbServerDo(slbServer));
}
@Override
public void visitVip(Vip vip) {
getList(SlbVipDo.class).add(EntityDoConverter.toSlbVipDo(vip));
}
@Override
public void visitVirtualServer(VirtualServer virtualServer) {
getList(SlbVirtualServerDo.class).add(EntityDoConverter.toSlbVirtualServerDo(virtualServer));
if (virtualServer.getSlbCluster() != null) {
virtualServer.getSlbCluster().accept(m_visitor);
}
if (!virtualServer.getDomains().isEmpty()) {
for (Domain domain : virtualServer.getDomains()) {
domain.accept(m_visitor);
}
}
}
private List getList(Class<?> clazz) {
List list = m_map.get(clazz);
if (list == null) {
list = new ArrayList();
m_map.put(clazz, list);
}
return list;
}
}

View file

@ -0,0 +1,75 @@
package com.ctrip.zeus.support;
import com.ctrip.zeus.dal.core.ApplicationDo;
import com.ctrip.zeus.model.entity.*;
import java.util.List;
import java.util.Map;
/**
* @author:xingchaowang
* @date: 3/6/2015.
*/
public class DefaultDoParser implements DoParser{
@Override
public Application parseApplication(Map<Class<?>, List> map) {
List<ApplicationDo> list = map.get(ApplicationDo.class);
ApplicationDo ad = list.get(0);
return null;
}
@Override
public AppServer parseAppServer(Map<Class<?>, List> map) {
return null;
}
@Override
public AppSlb parseAppSlb(Map<Class<?>, List> map) {
return null;
}
@Override
public Domain parseDomain(Map<Class<?>, List> map) {
return null;
}
@Override
public HealthCheck parseHealthCheck(Map<Class<?>, List> map) {
return null;
}
@Override
public LoadBalancingMethod parseLoadBalancingMethod(Map<Class<?>, List> map) {
return null;
}
@Override
public Model parseModel(Map<Class<?>, List> map) {
return null;
}
@Override
public Server parseServer(Map<Class<?>, List> map) {
return null;
}
@Override
public SlbCluster parseSlbCluster(Map<Class<?>, List> map) {
return null;
}
@Override
public SlbServer parseSlbServer(Map<Class<?>, List> map) {
return null;
}
@Override
public Vip parseVip(Map<Class<?>, List> map) {
return null;
}
@Override
public VirtualServer parseVirtualServer(Map<Class<?>, List> map) {
return null;
}
}

View file

@ -0,0 +1,38 @@
package com.ctrip.zeus.support;
import com.ctrip.zeus.model.entity.*;
import java.util.List;
import java.util.Map;
/**
* @author:xingchaowang
* @date: 3/6/2015.
*/
public interface DoParser {
public Application parseApplication(Map<Class<?>, List> map);
public AppServer parseAppServer(Map<Class<?>, List> map);
public AppSlb parseAppSlb(Map<Class<?>, List> map);
public Domain parseDomain(Map<Class<?>, List> map);
public HealthCheck parseHealthCheck(Map<Class<?>, List> map);
public LoadBalancingMethod parseLoadBalancingMethod(Map<Class<?>, List> map);
public Model parseModel(Map<Class<?>, List> map);
public Server parseServer(Map<Class<?>, List> map);
public SlbCluster parseSlbCluster(Map<Class<?>, List> map);
public SlbServer parseSlbServer(Map<Class<?>, List> map);
public Vip parseVip(Map<Class<?>, List> map);
public VirtualServer parseVirtualServer(Map<Class<?>, List> map);
}

View file

@ -0,0 +1,163 @@
package com.ctrip.zeus.support;
import com.ctrip.zeus.dal.core.*;
import com.ctrip.zeus.model.entity.*;
/**
* @author:xingchaowang
* @date: 3/6/2015.
*/
public class EntityDoConverter {
public static Application toApplication(ApplicationDo d) {
return new Application()
.setAppId(d.getAppId())
.setName(d.getName());
}
public static AppServer toAppServer(AppServerDo d) {
return new AppServer()
.setEnable(d.isEnable())
.setFailTimeout(d.getFailTimeout())
.setHealthy(d.isHealthy())
.setMaxFails(d.getMaxFails())
.setPort(d.getPort())
.setWeight(d.getWeight());
}
public static AppSlb toAppSlb(AppSlbDo d) {
return new AppSlb()
.setPath(d.getPath());
}
public static Domain toDomain(SlbDomainDo d) {
return new Domain()
.setName(d.getName())
.setPort(d.getPort());
}
public static HealthCheck toHealthCheck(AppHealthCheckDo d) {
return new HealthCheck()
.setFails(d.getFails())
.setInterval(d.getInterval())
.setPasses(d.getPasses())
.setUri(d.getUri());
}
public static LoadBalancingMethod toLoadBalancingMethod(AppLoadBalancingMethodDo d) {
return new LoadBalancingMethod()
.setType(d.getType())
.setValue(d.getValue());
}
public static Server toServer(ServerDo d) {
return new Server()
.setHostName(d.getHostName())
.setIp(d.getIp())
.setUp(d.isUp());
}
public static SlbCluster toSlbCluster(SlbClusterDo d) {
return new SlbCluster()
.setName(d.getName())
.setNginxBin(d.getNginxBin())
.setNginxConf(d.getNginxConf())
.setNginxWorkerProcesses(d.getNginxWorkerProcesses());
}
public static SlbServer toSlbServer(SlbServerDo d) {
return new SlbServer()
.setEnable(d.isEnable())
.setHostName(d.getHostName())
.setIp(d.getIp());
}
public static Vip toVip(SlbVipDo d) {
return new Vip()
.setIp(d.getIp());
}
public static VirtualServer toVirtualServer(SlbVirtualServerDo d) {
return new VirtualServer()
.setName(d.getName())
.setSsl(d.isIsSsl());
}
/*Entity to Do*/
public static ApplicationDo toApplicationDo(Application e) {
return new ApplicationDo().setAppId(e.getAppId())
.setName(e.getName());
}
public static AppServerDo toAppServerDo(AppServer e) {
return new AppServerDo()
.setEnable(e.getEnable())
.setFailTimeout(e.getFailTimeout())
.setHealthy(e.getHealthy())
.setMaxFails(e.getMaxFails())
.setPort(e.getPort())
.setWeight(e.getWeight());
}
public static AppSlbDo toAppSlbDo(AppSlb e) {
return new AppSlbDo()
.setPath(e.getPath());
}
public static SlbDomainDo toSlbDomainDo(Domain e) {
return new SlbDomainDo()
.setName(e.getName())
.setPort(e.getPort());
}
public static AppHealthCheckDo toAppHealthCheckDo(HealthCheck e) {
return new AppHealthCheckDo()
.setUri(e.getUri())
.setId(e.getInterval())
.setFails(e.getFails())
.setPasses(e.getPasses());
}
public static AppLoadBalancingMethodDo toAppLoadBalancingMethodDo(LoadBalancingMethod e) {
return new AppLoadBalancingMethodDo()
.setType(e.getType())
.setValue(e.getValue());
}
public static ServerDo toServerDo(Server e) {
return new ServerDo()
.setHostName(e.getHostName())
.setIp(e.getIp())
.setUp(e.getUp());
}
public static SlbClusterDo toSlbClusterDo(SlbCluster e) {
return new SlbClusterDo()
.setName(e.getName())
.setNginxBin(e.getNginxBin())
.setNginxConf(e.getNginxConf())
.setNginxWorkerProcesses(e.getNginxWorkerProcesses());
}
public static SlbServerDo toSlbServerDo(SlbServer e) {
return new SlbServerDo()
.setHostName(e.getHostName())
.setIp(e.getIp());
}
public static SlbVipDo toSlbVipDo(Vip e) {
return new SlbVipDo()
.setIp(e.getIp());
}
public static SlbVirtualServerDo toSlbVirtualServerDo(VirtualServer e) {
return new SlbVirtualServerDo()
.setIsSsl(e.isSsl())
.setName(e.getName());
}
}

View file

@ -0,0 +1,15 @@
package com.ctrip.zeus.util;
/**
* @author:xingchaowang
* @date: 3/6/2015.
*/
public class S {
public static void setPropertyDefaultValue(String propertyName, String defaultValue) {
String val = System.getProperty(propertyName);
if(val==null || val.trim().isEmpty()){
System.setProperty(propertyName, defaultValue);
}
}
}

View file

@ -1,3 +1,3 @@
<?xml version="1.0" encoding="UTF-8"?>
<entities do-package="com.ctrip.zeus.dal.core" gen="true" />
<entities do-package="com.ctrip.zeus.dal.core" gen="true" do-class-suffix="Do"/>

View file

@ -23,7 +23,7 @@
</entity>
<entity name="virtual-server">
<attribute name="name" value-type="String" />
<attribute name="is-ssl" value-type="String" />
<attribute name="ssl" value-type="boolean" />
<entity-ref name="slb-cluster" />
<entity-ref name="domain" type="list" names="domains" xml-indent="true" />
</entity>
@ -33,13 +33,13 @@
</entity>
<entity name="application">
<attribute name="name" value-type="String" />
<attribute name="app-id" value-type="int" />
<entity-ref name="app-virtual-server" type="list" names="app-virtual-servers" xml-indent="true" />
<attribute name="app-id" value-type="String" />
<entity-ref name="app-slb" type="list" names="app-slbs" xml-indent="true" />
<entity-ref name="health-check" />
<entity-ref name="load-balancing-method" />
<entity-ref name="app-server" type="list" names="app-servers" xml-indent="true" />
</entity>
<entity name="app-virtual-server">
<entity name="app-slb">
<element name="path" value-type="String" />
<entity-ref name="virtual-server" />
</entity>

View file

@ -34,7 +34,8 @@ CREATE TABLE IF NOT EXISTS `app_health_check` (
`passes` int(11) NOT NULL DEFAULT '0',
`created_time` timestamp NULL DEFAULT NULL,
`last_modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
PRIMARY KEY (`id`),
UNIQUE KEY `application_id` (`application_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- Data exporting was unselected.
@ -48,7 +49,8 @@ CREATE TABLE IF NOT EXISTS `app_load_balancing_method` (
`value` varchar(200) NOT NULL DEFAULT '0',
`created_time` timestamp NULL DEFAULT NULL,
`last_modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
PRIMARY KEY (`id`),
UNIQUE KEY `application_id` (`application_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- Data exporting was unselected.
@ -67,7 +69,23 @@ CREATE TABLE IF NOT EXISTS `app_server` (
`enable` bit(1) NOT NULL DEFAULT b'0',
`created_time` timestamp NULL DEFAULT NULL,
`last_modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
PRIMARY KEY (`id`),
UNIQUE KEY `application_id_server_id` (`application_id`,`server_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- Data exporting was unselected.
-- Dumping structure for table zeus.app_slb
CREATE TABLE IF NOT EXISTS `app_slb` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`application_id` bigint(20) NOT NULL DEFAULT '0',
`slb_virtual_server_id` bigint(20) NOT NULL DEFAULT '0',
`path` varchar(200) NOT NULL DEFAULT '0',
`created_time` timestamp NULL DEFAULT NULL,
`last_modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `application_id_slb_virtual_server_id` (`application_id`,`slb_virtual_server_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- Data exporting was unselected.

View file

@ -0,0 +1,57 @@
package com.ctrip.zeus.restful;
import com.ctrip.zeus.client.SlbClusterClient;
import com.ctrip.zeus.model.entity.*;
import com.ctrip.zeus.server.SlbAdminServer;
import com.ctrip.zeus.util.S;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import java.io.File;
/**
* @author:xingchaowang
* @date: 3/6/2015.
*/
public class ApiTest {
private static SlbAdminServer server;
@BeforeClass
public static void setup() throws Exception {
S.setPropertyDefaultValue("archaius.deployment.applicationId", "slb-admin");
S.setPropertyDefaultValue("archaius.deployment.environment", "local");
S.setPropertyDefaultValue("server.www.base-dir", new File("").getAbsolutePath() + "/src/main/www");
S.setPropertyDefaultValue("server.temp-dir", new File("").getAbsolutePath() + "/target/temp");
S.setPropertyDefaultValue("APP_HOME", new File("").getAbsolutePath());
server = new SlbAdminServer();
server.start();
}
@AfterClass
public static void teardown() {
server.close();
}
@Test
public void testSlbCluster() {
SlbClusterClient c = new SlbClusterClient("http://127.0.0.1:8099");
c.getAll();
SlbCluster sc = new SlbCluster();
sc.setName("default").setNginxBin("nginx").setNginxConf("/usr/local/nginx/conf").setNginxWorkerProcesses(1)
.addVip(new Vip().setIp("192.168.1.1"))
.addVip(new Vip().setIp("192.168.1.2"))
.addSlbServer(new SlbServer().setHostName("slb001").setIp("192.168.10.1"))
.addSlbServer(new SlbServer().setHostName("slb002").setIp("192.168.10.2"))
.addVirtualServer(new VirtualServer().setName("vs001").setSsl(false)
.addDomain(new Domain().setName("m.ctrip.com").setPort(80))
.addDomain(new Domain().setName("m2.ctrip.com").setPort(80)))
.addVirtualServer(new VirtualServer().setName("vs002").setSsl(false).addDomain(new Domain().setName("hotel.ctrip.com").setPort(80)));
c.add(sc);
}
}

View file

@ -12,14 +12,14 @@
<slb-server ip="192.168.1.2" host-name="slb002" enable="true"/>
</slb-servers>
<virtual-servers>
<virtual-server name="vs001" is-ssl="true|false">
<virtual-server name="vs001" ssl="true">
<slb-cluster/>
<domains>
<domain name="www.ctrip.com" port="80"/>
<domain name="hotel.ctrip.com" port="80"/>
</domains>
</virtual-server>
<virtual-server name="vs001" is-ssl="true|false">
<virtual-server name="vs001" ssl="true">
<slb-cluster/>
<domains>
<domain name="www.ctrip.com" port="80"/>
@ -29,17 +29,17 @@
</virtual-servers>
</slb-cluster>
<application name="gateway" app-id="921822">
<app-virtual-servers>
<app-virtual-server>
<application name="gateway" app-id="app921822">
<app-slbs>
<app-slb>
<path>/hotel</path>
<virtual-server/>
</app-virtual-server>
<app-virtual-server>
</app-slb>
<app-slb>
<path>/hotel</path>
<virtual-server/>
</app-virtual-server>
</app-virtual-servers>
</app-slb>
</app-slbs>
<health-check interval="10" fails="2" passes="2">
<uri>/health-check</uri>
</health-check>