diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml new file mode 100644 index 00000000..91106d3f --- /dev/null +++ b/.github/workflows/maven.yml @@ -0,0 +1,17 @@ +name: Java CI + +on: [push] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v1 + - name: Set up JDK 1.8 + uses: actions/setup-java@v1 + with: + java-version: 1.8 + - name: Build with Maven + run: mvn -B package --file pom.xml diff --git a/README.md b/README.md index accbafd1..8f7a7fd1 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -### CacheCloud团队于2017年3月出版实体书《Redis开发与运维》,[更多详情请见](#cc10) +### CacheCloud团队写作《Redis开发与运维》实体书,[详情见](#cc10) -## 目录 (具体细节[wiki文档](https://github.com/sohutv/cachecloud/wiki "Cachecloud Wiki")、[博客](http://cachecloud.github.io/ "Cachecloud page")、QQ群:534429768) +## 目录 (具体细节[wiki文档](https://github.com/sohutv/cachecloud/wiki "Cachecloud Wiki")、[博客](http://cachecloud.github.io/ "Cachecloud page")、[相关交流群](#cc11)) * [一、CacheCloud是做什么的](#cc1) * [二、CacheCloud提供哪些功能](#cc2) * [三、CacheCloud解决什么问题](#cc3) @@ -13,9 +13,8 @@ * [3.开发计划](#cc7) * [4.已存在Redis接入CacheCloud](#cc7) * [5.迁移工具](#cc7) -* [八、CacheCloud开发计划TODO LIST](#cc8) -* [九、CacheCloud已知用户](#cc9) -* [十、Redis开发与运维图书](#cc10) +* [八、CacheCloud已知用户](#cc8) +* [九、Redis开发与运维图书](#cc9) @@ -115,26 +114,20 @@ -## 八、开发计划-TODO LIST - -[后期开发计划](http://cachecloud.github.io/2016/04/17/v2%E8%AE%A1%E5%88%92/) - - - -## 九、已知用户 +## 八、已知用户 ![](http://i0.itc.cn/20170315/3084_f3e50a44_c732_9ac2_e117_90759d8e406b_1.png) 除此之外,还有天津联怡科技有限公司、瑞友科技、厦门美好出行物联网技术有限公司、北京九瑞网络科技有限公司、深圳市深软信息技术有限公司、欧乐在线科技有限公司、慧科教育、上海仁画信息股份有限公司等。 - + -## 十、图书 +## 九、图书 由CacheCloud团队撰写的实体书《Redis开发与运维》(机械工业出版)已在各大网店售卖,本书包含了CacheCloud团队在Redis规模化开发运维大量经验,以及Cachecloud更为系统的介绍,[目录介绍和购买地址](https://cachecloud.github.io/2016/10/24/Redis3%E5%BC%80%E5%8F%91%E8%BF%90%E7%BB%B4%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5-%E7%9B%AE%E5%BD%95/),欢迎大家指教和购买。 ### 相关样章 -1.[Redis架构之防雪崩设计:网站不宕机背后的兵法](https://mp.weixin.qq.com/s/TBCEwLVAXdsTszRVpXhVug) +1.[Redis架构之防雪崩设计](https://mp.weixin.qq.com/s/TBCEwLVAXdsTszRVpXhVug) 2.[Redis的内存优化](https://cachecloud.github.io/2017/02/16/Redis%E5%86%85%E5%AD%98%E4%BC%98%E5%8C%96/) @@ -148,9 +141,20 @@ ![](http://i0.itc.cn/20170527/3084_cfcdad5a_0310_c17e_f80b_064afb296b75_1.jpeg) - + ## 十一、支持与帮助 +QQ群:534429768 + +Redis开发运维公众号:关注Redis开发运维实战,发布Cachecloud最新动态,帮大家减轻工作负担。 + +![Redis开发运维公众号](https://camo.githubusercontent.com/1dfd263ce5fcd07e0107e1a9a65bd094df31315b/68747470733a2f2f75706c6f61642d696d616765732e6a69616e7368752e696f2f75706c6f61645f696d616765732f313439333837382d333365343330323038376535623330362e6a70673f696d6167654d6f6772322f6175746f2d6f7269656e742f7374726970253743696d61676556696577322f322f772f31323430) + +微信群: + +![微信二维码](https://camo.githubusercontent.com/92f3577e84b06d61f52b7f548dfddf60349b476b/687474703a2f2f69302e6974632e636e2f32303139303232312f6161635f38343333316366395f306361645f643063345f353436645f3164356530356161373661365f312e6a706567) + + 如果你觉得CacheCloud对你有帮助,欢迎Star。 diff --git a/cachecloud-open-client/cachecloud-open-client-redis/pom.xml b/cachecloud-open-client/cachecloud-open-client-redis/pom.xml index 4906e010..4329a263 100644 --- a/cachecloud-open-client/cachecloud-open-client-redis/pom.xml +++ b/cachecloud-open-client/cachecloud-open-client-redis/pom.xml @@ -38,41 +38,6 @@ - - - leifu - leifu@sohu-inc.com - sohu-tv - - developer - - - - yongfeigao - yongfeigao@sohu-inc.com - sohu-tv - - developer - - - - haibogu - haibogu@sohu-inc.com - sohu-tv - - developer - - - - yijunzhang - yijunzhang@sohu-inc.com - sohu-tv - - developer - - - - diff --git a/cachecloud-open-common/src/main/java/com/sohu/cache/enums/SshAuthTypeEnum.java b/cachecloud-open-common/src/main/java/com/sohu/cache/enums/SshAuthTypeEnum.java new file mode 100644 index 00000000..72c8acf8 --- /dev/null +++ b/cachecloud-open-common/src/main/java/com/sohu/cache/enums/SshAuthTypeEnum.java @@ -0,0 +1,32 @@ +package com.sohu.cache.enums; + +/** + * ssh授权方式 + * @author leifu + * @date 2018年6月15日 + * @time 下午5:56:59 + */ +public enum SshAuthTypeEnum { + + PASSWORD(1, "用户密码"), + PUBLIC_KEY(2, "公钥"); + + private int value; + + private String info; + + private SshAuthTypeEnum(int value, String info) { + this.value = value; + this.info = info; + } + + public int getValue() { + return value; + } + + public String getInfo() { + return info; + } + + +} diff --git a/cachecloud-open-common/src/main/java/com/sohu/cache/util/ConstUtils.java b/cachecloud-open-common/src/main/java/com/sohu/cache/util/ConstUtils.java index 451eaa04..3d17a17c 100644 --- a/cachecloud-open-common/src/main/java/com/sohu/cache/util/ConstUtils.java +++ b/cachecloud-open-common/src/main/java/com/sohu/cache/util/ConstUtils.java @@ -4,6 +4,8 @@ import java.util.List; import java.util.ResourceBundle; +import com.sohu.cache.enums.SshAuthTypeEnum; + /** * cachecloud常量 * @author leifu @@ -146,7 +148,7 @@ public class ConstUtils { /** * 报警相关 */ - public static String DEFAULT_EMAILS = "xx@sohu.com,yy@qq.com"; + public static String DEFAULT_EMAILS = "xx@xx.com,yy@qq.com"; public static String EMAILS = DEFAULT_EMAILS; public static String DEFAULT_PHONES = "13812345678,13787654321"; @@ -227,6 +229,12 @@ public static String getRedisMigrateToolDir() { public static String DEFAULT_CACHECLOUD_BASE_DIR = "/opt"; public static String CACHECLOUD_BASE_DIR = DEFAULT_CACHECLOUD_BASE_DIR; + /** + * MNON_DIR根目录 + */ + public static String DEFAULT_NMON_DIR = "/opt/cachecloud"; + public static String NMON_DIR = DEFAULT_NMON_DIR; + /** * 是否定期清理各种统计数据:(详见CleanUpStatisticsJob) */ @@ -248,6 +256,18 @@ public static String getRedisMigrateToolDir() { public static int MACHINE_STATS_CRON_MINUTE = DEFAULT_MACHINE_STATS_CRON_MINUTE; + /** + * ssh授权方式:参考SshAuthTypeEnum + */ + public static int DEFAULT_SSH_AUTH_TYPE = SshAuthTypeEnum.PASSWORD.getValue(); + public static int SSH_AUTH_TYPE = DEFAULT_SSH_AUTH_TYPE; + + /** + * public key pem + */ + public static String DEFAULT_PUBLIC_KEY_PEM = ""; + public static String PUBLIC_KEY_PEM = DEFAULT_PUBLIC_KEY_PEM; + /** * 网站域名 */ diff --git a/cachecloud-open-web/pom.xml b/cachecloud-open-web/pom.xml index 3b82857e..5fa9d6e0 100644 --- a/cachecloud-open-web/pom.xml +++ b/cachecloud-open-web/pom.xml @@ -159,6 +159,11 @@ commons-lang commons-lang + + + commons-io + commons-io + net.sf.json-lib diff --git a/cachecloud-open-web/src/main/java/com/sohu/cache/alert/strategy/MasterSlaveOffsetAlertStrategy.java b/cachecloud-open-web/src/main/java/com/sohu/cache/alert/strategy/MasterSlaveOffsetAlertStrategy.java index e8013731..5d3c8618 100644 --- a/cachecloud-open-web/src/main/java/com/sohu/cache/alert/strategy/MasterSlaveOffsetAlertStrategy.java +++ b/cachecloud-open-web/src/main/java/com/sohu/cache/alert/strategy/MasterSlaveOffsetAlertStrategy.java @@ -22,8 +22,8 @@ public class MasterSlaveOffsetAlertStrategy extends AlertConfigStrategy { /** * 格式: * connected_slaves:2 - * slave0:ip=10.10.76.151,port=6380,state=online,offset=33119690469561,lag=1 - * slave1:ip=10.10.76.160,port=6380,state=online,offset=33119690513578,lag=0 + * slave0:ip=127.0.0.1,port=6380,state=online,offset=33119690469561,lag=1 + * slave1:ip=127.0.0.1,port=6380,state=online,offset=33119690513578,lag=0 * master_repl_offset:33119653194425 */ @Override diff --git a/cachecloud-open-web/src/main/java/com/sohu/cache/redis/impl/RedisDeployCenterImpl.java b/cachecloud-open-web/src/main/java/com/sohu/cache/redis/impl/RedisDeployCenterImpl.java index f1ae946c..ebc4ce21 100644 --- a/cachecloud-open-web/src/main/java/com/sohu/cache/redis/impl/RedisDeployCenterImpl.java +++ b/cachecloud-open-web/src/main/java/com/sohu/cache/redis/impl/RedisDeployCenterImpl.java @@ -29,6 +29,7 @@ import org.slf4j.LoggerFactory; import org.springframework.util.Assert; +import redis.clients.jedis.HostAndPort; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisSentinelPool; import redis.clients.jedis.Protocol; @@ -779,59 +780,12 @@ public RedisOperateEnum addSlotsFailMaster(final long appId, int lossSlotsInstan } // 6. 分配slots - //String addSlotsResult = ""; + String nodeId = null; Jedis newMasterJedis = null; - //Jedis healthyMasterJedis = null; try { newMasterJedis = redisCenter.getJedis(appId, newMasterHost, newMasterPort, 5000, 5000); //获取新的补救节点的nodeid - final String nodeId = getClusterNodeId(newMasterJedis); - //healthyMasterJedis = redisCenter.getJedis(appId, healthyMasterHost, healthyMasterPort, 5000, 5000); - for (InstanceInfo instance : allInstanceInfo) { - final Jedis masterJedis = redisCenter.getJedis(appId, instance.getIp(), instance.getPort(), 5000, 5000); - logger.warn("{}:{} set {}:{} slots start", instance.getIp(), instance.getPort(), newMasterHost, newMasterPort); - // 1. nodes meet 2. nodes set - boolean setSlotStatus = true; - try { - setSlotStatus = new IdempotentConfirmer() { - @Override - public boolean execute() { - String setSlotsResult = null; - try { - for (final Integer slot : clusterLossSlots) { - setSlotsResult = masterJedis.clusterSetSlotNode(slot, nodeId); - logger.warn("set slot {}, result is {}", slot, setSlotsResult); - } - } catch (JedisDataException exception) { - logger.warn(exception.getMessage()); - // unkown jedis node - try { - TimeUnit.SECONDS.sleep(2); - } catch (InterruptedException e) { - logger.error(e.getMessage(), e); - } - } - // result - boolean nodeSetStatus = setSlotsResult != null && setSlotsResult.equalsIgnoreCase("OK"); - return nodeSetStatus; - } - }.run(); - } catch (Exception e) { - logger.error(e.getMessage(), e); - } finally { - //close jedis - if (masterJedis != null) { - masterJedis.close(); - } - } - // set slots result - if (setSlotStatus) { - logger.warn("{}:{} set {}:{} slots success", instance.getIp(), instance.getPort(), newMasterHost, newMasterPort); - } else { - logger.warn("{}:{} set {}:{} slots faily", instance.getIp(), instance.getPort(), newMasterHost, newMasterPort); - return RedisOperateEnum.FAIL; - } - } + nodeId = getClusterNodeId(newMasterJedis); } catch (Exception e) { logger.error(e.getMessage(), e); } finally { @@ -839,10 +793,66 @@ public boolean execute() { newMasterJedis.close(); } } - /*if (!"OK".equalsIgnoreCase(addSlotsResult)) { - logger.warn("{}:{} set slots faily", newMasterHost, newMasterPort); + final String newNodeId = nodeId; + if (StringUtils.isBlank(nodeId)) { + logger.warn("{}:{} nodeId is empty!"); return RedisOperateEnum.FAIL; - }*/ + } + + //需要做setslot的实例列表 + final List hostAndPorts = new ArrayList(); + hostAndPorts.add(new HostAndPort(newMasterHost, newMasterPort)); + for (InstanceInfo instance : allInstanceInfo) { + hostAndPorts.add(new HostAndPort(instance.getIp(), instance.getPort())); + } + + final Map jedisMap = new HashMap(); + for (final Integer slot : clusterLossSlots) { + logger.warn("set slot {} start", slot); + boolean setSlotStatus = new IdempotentConfirmer() { + @Override + public boolean execute() { + String setSlotsResult = null; + for (HostAndPort hostAndPort : hostAndPorts) { + Jedis masterJedis = null; + try { + String hostPort = hostAndPort.toString(); + if (jedisMap.containsKey(hostAndPort)) { + masterJedis = jedisMap.get(hostAndPort); + } else { + masterJedis = redisCenter.getJedis(appId, hostAndPort.getHost(), hostAndPort.getPort(), 5000, 5000); + jedisMap.put(hostPort, masterJedis); + } + setSlotsResult = masterJedis.clusterSetSlotNode(slot, newNodeId); + logger.warn("\t {} set slot {}, result is {}", hostAndPort.toString(), slot, setSlotsResult); + } catch (JedisDataException exception) { + logger.warn(exception.getMessage()); + // unkown jedis node + try { + TimeUnit.SECONDS.sleep(2); + } catch (InterruptedException e) { + logger.error(e.getMessage(), e); + } + } + } + boolean nodeSetStatus = setSlotsResult != null && setSlotsResult.equalsIgnoreCase("OK"); + return nodeSetStatus; + } + }.run(); + // set slots result + if (setSlotStatus) { + logger.warn("set slot {} success", slot); + } else { + logger.warn("set slot {} faily", slot); + return RedisOperateEnum.FAIL; + } + } + //统一关闭 + for (Jedis jedis : jedisMap.values()) { + if (jedis != null) { + jedis.close(); + } + } // 7.保存实例信息、并开启收集信息 saveInstance(appId, newMasterHost, newMasterPort, healthyMasterMem, ConstUtils.CACHE_TYPE_REDIS_CLUSTER, ""); diff --git a/cachecloud-open-web/src/main/java/com/sohu/cache/server/nmon/NMONService.java b/cachecloud-open-web/src/main/java/com/sohu/cache/server/nmon/NMONService.java index 8593955f..79e8ee30 100644 --- a/cachecloud-open-web/src/main/java/com/sohu/cache/server/nmon/NMONService.java +++ b/cachecloud-open-web/src/main/java/com/sohu/cache/server/nmon/NMONService.java @@ -10,6 +10,7 @@ import com.sohu.cache.ssh.SSHTemplate.DefaultLineProcessor; import com.sohu.cache.ssh.SSHTemplate.Result; import com.sohu.cache.ssh.SSHTemplate.SSHSession; +import com.sohu.cache.util.ConstUtils; import com.sohu.cache.util.NMONFileFactory; import com.sohu.cache.util.OSFactory; /** @@ -20,13 +21,7 @@ public class NMONService { //获取系统版本位数命令 public static final String OS_INFO_CMD = "/bin/uname -a; /bin/cat /etc/issue"; //nmon路径 - public static final String NMON_DIR = "/opt/cachecloud/soft/"; - //nmon文件名 public static final String NMON = "nmon"; - //nmon完整路径 - public static final String NMON_FILE = NMON_DIR + NMON; - //获取nmon版本 - public static final String NMON_VERSION = "[ -e \""+NMON_FILE+"\" ] && "+NMON_FILE+" -V"; //nmon输出的结果文件 public static final String NMON_LOG = "/tmp/nmon.log"; //nmon输出的老结果文件 @@ -35,12 +30,6 @@ public class NMONService { public static final String SOCK_LOG = "/tmp/sock.log"; //ulimit输出的结果文件 public static final String ULIMIT_LOG = "/tmp/ulimit.log"; - //nmon监控启动 - public static final String START_SERVER_COLLECT = NMON_FILE+" -F " + NMON_LOG + " -s0 -c1;" + - "/bin/grep TCP /proc/net/sockstat> " + SOCK_LOG + - ";ulimit -n -u> " + ULIMIT_LOG; - //创建nmon路径 - public static final String MK_NMON_DIR = "/bin/mkdir -p /opt/cachecloud/soft/"; /** * 启动nmon收集系统状况 @@ -49,7 +38,7 @@ public class NMONService { * @return @OSInfo 收集到的操作系统信息 */ public OSInfo start(String ip, SSHSession session) { - Result startCollectResult = session.executeCommand(START_SERVER_COLLECT); + Result startCollectResult = session.executeCommand(getStartServerCollect()); if(!startCollectResult.isSuccess()) { logger.error("start nmon "+ip+" err:"+startCollectResult.getResult(), startCollectResult.getExcetion()); @@ -62,6 +51,7 @@ public OSInfo start(String ip, SSHSession session) { return null; } + /** * 尝试修复启动失败的错误 * @param ip @@ -75,12 +65,12 @@ private OSInfo initNmon(String ip, SSHSession session) { OS os = null; //nmon文件不存在,需要根据操作系统识别是否支持 if(null == version) { - logger.warn("{} not exist {}", ip, NMON_FILE); + logger.warn("{} not exist {}", ip, getNmonFile()); //将原始信息转换为可识别的操作系统 os = OSFactory.getOS(osInfo); } else { //nmon存在,但是版本有问题,此时不应该再判断系统信息了,直接用默认的 - logger.warn("{} {} version err:"+version, ip, NMON_FILE); + logger.warn("{} {} version err:"+version, ip, getNmonFile()); os = OSFactory.getDefaultOS(osInfo); } if(os == null) { @@ -106,11 +96,11 @@ private OSInfo initNmon(String ip, SSHSession session) { * @return 存在返回版本,不存在返回null, 执行错误返回异常 */ private String getNMONVersion(String ip, SSHSession session) { - Result nmonVersionResult = session.executeCommand(NMON_VERSION); + Result nmonVersionResult = session.executeCommand(getNmonVersion()); if(nmonVersionResult.isSuccess()) { return nmonVersionResult.getResult(); } else { - logger.error(NMON_VERSION+" err:"+nmonVersionResult.getResult(), nmonVersionResult.getExcetion()); + logger.error(getNmonVersion()+" err:"+nmonVersionResult.getResult(), nmonVersionResult.getExcetion()); } return null; } @@ -144,16 +134,43 @@ public void process(String line, int lineNum) throws Exception { * @param nmonFile */ private void sendNMONToServer(String ip, SSHSession session, File nmonFile) { - Result mkResult = session.executeCommand(MK_NMON_DIR); + Result mkResult = session.executeCommand(getMkNmonDir()); if(!mkResult.isSuccess()) { logger.error("mkdir err:"+mkResult.getResult(), mkResult.getExcetion()); return; } - Result scpRst = session.scpToFile(nmonFile.getAbsolutePath(), NMON, NMON_DIR); + Result scpRst = session.scpToFile(nmonFile.getAbsolutePath(), NMON, getMmonDir()); if(scpRst.isSuccess()) { logger.info("scp {} to {} success", nmonFile.getAbsolutePath(), ip); } else { logger.error("scp to "+ip+" err", scpRst.getExcetion()); } } + + /** + * nmon监控启动 + * @return + */ + private String getStartServerCollect() { + return getNmonFile() +" -F " + NMON_LOG + " -s0 -c1;" + + "/bin/grep TCP /proc/net/sockstat> " + SOCK_LOG + + ";ulimit -n -u> " + ULIMIT_LOG; + } + + private String getMmonDir() { + return ConstUtils.NMON_DIR; + } + + private String getNmonFile() { + return getMmonDir() + "/" + NMON; + } + + private String getMkNmonDir() { + return "/bin/mkdir -p " + getMmonDir(); + } + + private String getNmonVersion() { + return "[ -e \""+ getNmonFile() +"\" ] && "+ getNmonFile() +" -V"; + } + } diff --git a/cachecloud-open-web/src/main/java/com/sohu/cache/ssh/SSHTemplate.java b/cachecloud-open-web/src/main/java/com/sohu/cache/ssh/SSHTemplate.java index 77cbaa63..1b8b2189 100644 --- a/cachecloud-open-web/src/main/java/com/sohu/cache/ssh/SSHTemplate.java +++ b/cachecloud-open-web/src/main/java/com/sohu/cache/ssh/SSHTemplate.java @@ -1,6 +1,7 @@ package com.sohu.cache.ssh; import java.io.BufferedReader; +import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; @@ -21,6 +22,7 @@ import ch.ethz.ssh2.StreamGobbler; import com.google.common.util.concurrent.ThreadFactoryBuilder; +import com.sohu.cache.enums.SshAuthTypeEnum; import com.sohu.cache.exception.SSHException; import com.sohu.cache.util.ConstUtils; /** @@ -38,7 +40,7 @@ public class SSHTemplate { new ThreadFactoryBuilder().setNameFormat("SSH-%d").setDaemon(true).build()); public Result execute(String ip, SSHCallback callback) throws SSHException{ - return execute(ip,ConstUtils.DEFAULT_SSH_PORT_DEFAULT, ConstUtils.USERNAME, + return execute(ip,ConstUtils.SSH_PORT_DEFAULT, ConstUtils.USERNAME, ConstUtils.PASSWORD, callback); } @@ -77,10 +79,21 @@ private Connection getConnection(String ip, int port, String username, String password) throws Exception { Connection conn = new Connection(ip, port); conn.connect(null, CONNCET_TIMEOUT, CONNCET_TIMEOUT); - boolean isAuthenticated = conn.authenticateWithPassword(username, password); + boolean isAuthenticated = false; + if (ConstUtils.SSH_AUTH_TYPE == SshAuthTypeEnum.PASSWORD.getValue()) { + isAuthenticated = conn.authenticateWithPassword(username, password); + } else if (ConstUtils.SSH_AUTH_TYPE == SshAuthTypeEnum.PUBLIC_KEY.getValue()) { + isAuthenticated = conn.authenticateWithPublicKey(username, new File(ConstUtils.PUBLIC_KEY_PEM), password); + } if (isAuthenticated == false) { - throw new Exception("SSH authentication failed with [ userName: " + - username + ", password: " + password + "]"); + if (ConstUtils.SSH_AUTH_TYPE == SshAuthTypeEnum.PASSWORD.getValue()) { + throw new Exception("SSH authentication failed with [ userName: " + + username + ", password: " + password + "]"); + } else if (ConstUtils.SSH_AUTH_TYPE == SshAuthTypeEnum.PUBLIC_KEY.getValue()) { + throw new Exception("SSH authentication failed with [ userName: " + + username + ", pemfile: " + ConstUtils.PUBLIC_KEY_PEM + "]"); + } + } return conn; } diff --git a/cachecloud-open-web/src/main/java/com/sohu/cache/web/service/impl/ConfigServiceImpl.java b/cachecloud-open-web/src/main/java/com/sohu/cache/web/service/impl/ConfigServiceImpl.java index 5c1827d1..d5d5cc73 100644 --- a/cachecloud-open-web/src/main/java/com/sohu/cache/web/service/impl/ConfigServiceImpl.java +++ b/cachecloud-open-web/src/main/java/com/sohu/cache/web/service/impl/ConfigServiceImpl.java @@ -172,6 +172,17 @@ public void reloadSystemConfig() { ConstUtils.MACHINE_STATS_CRON_MINUTE = MapUtils.getIntValue(configMap, "cachecloud.machine.stats.cron.minute", ConstUtils.DEFAULT_MACHINE_STATS_CRON_MINUTE); logger.info("{}: {}", "ConstUtils.MACHINE_STATS_CRON_MINUTE", ConstUtils.MACHINE_STATS_CRON_MINUTE); + //ssh授权方式 + ConstUtils.SSH_AUTH_TYPE = MapUtils.getIntValue(configMap, "cachecloud.ssh.auth.type", ConstUtils.DEFAULT_SSH_AUTH_TYPE); + logger.info("{}: {}", "ConstUtils.SSH_AUTH", ConstUtils.SSH_AUTH_TYPE); + + //public key pem + ConstUtils.PUBLIC_KEY_PEM = MapUtils.getString(configMap, "cachecloud.public.key.pem", ConstUtils.DEFAULT_PUBLIC_KEY_PEM); + logger.info("{}: {}", "ConstUtils.PUBLIC_KEY_PEM", ConstUtils.PUBLIC_KEY_PEM); + + //nmon根目录 + ConstUtils.NMON_DIR = MapUtils.getString(configMap, "cachecloud.nmon.dir", ConstUtils.DEFAULT_NMON_DIR); + logger.info("{}: {}", "ConstUtils.NMON_DIR", ConstUtils.NMON_DIR); logger.info("===========ConfigServiceImpl reload config end============"); } diff --git a/cachecloud-open-web/src/main/webapp/WEB-INF/jsp/manage/config/initConfigDetail.jsp b/cachecloud-open-web/src/main/webapp/WEB-INF/jsp/manage/config/initConfigDetail.jsp index 4fa1138e..d05ca157 100644 --- a/cachecloud-open-web/src/main/webapp/WEB-INF/jsp/manage/config/initConfigDetail.jsp +++ b/cachecloud-open-web/src/main/webapp/WEB-INF/jsp/manage/config/initConfigDetail.jsp @@ -64,6 +64,16 @@ + + + diff --git a/cachecloud-open-web/src/test/java/com/sohu/cache/dao/MachineDaoTest.java b/cachecloud-open-web/src/test/java/com/sohu/cache/dao/MachineDaoTest.java index f1bc05b0..c8f0e87f 100644 --- a/cachecloud-open-web/src/test/java/com/sohu/cache/dao/MachineDaoTest.java +++ b/cachecloud-open-web/src/test/java/com/sohu/cache/dao/MachineDaoTest.java @@ -26,7 +26,7 @@ public void testSaveMachine() throws Exception { MachineInfo machineInfo = new MachineInfo(); machineInfo.setCpu(16); - machineInfo.setIp("10.10.53.181"); + machineInfo.setIp("127.0.0.1"); machineInfo.setMem(96); machineInfo.setModifyTime(new Date()); machineInfo.setRealIp(""); diff --git a/cachecloud-open-web/src/test/java/com/sohu/cache/stats/app/ImportAppCenterTest.java b/cachecloud-open-web/src/test/java/com/sohu/cache/stats/app/ImportAppCenterTest.java index eb7f930a..8f36d0f2 100644 --- a/cachecloud-open-web/src/test/java/com/sohu/cache/stats/app/ImportAppCenterTest.java +++ b/cachecloud-open-web/src/test/java/com/sohu/cache/stats/app/ImportAppCenterTest.java @@ -41,11 +41,11 @@ public void testImport() { // 实例信息 String appInstanceInfo = - "10.10.53.159:7000:512\n" + - "10.10.53.159:7001:512\n" + - "10.10.53.159:26379:mymaster\n" + - "10.10.53.159:26380:mymaster\n" + - "10.10.53.159:26381:mymaster"; + "127.0.0.1:7000:512\n" + + "127.0.0.1:7001:512\n" + + "127.0.0.1:26379:mymaster\n" + + "127.0.0.1:26380:mymaster\n" + + "127.0.0.1:26381:mymaster"; boolean result = importAppCenter.importAppAndInstance(appDesc, appInstanceInfo); logger.info("result: {}", result); } @@ -87,7 +87,7 @@ public void testCheckWrongFormatAppInstanceInfo2() { AppDesc appDesc = new AppDesc(); appDesc.setName("carlosfu2"); // 实例信息 - String appInstanceInfo = "\n10.10.53.159:6379:1024"; + String appInstanceInfo = "\n127.0.0.1:6379:1024"; ImportAppResult importAppResult = importAppCenter.check(appDesc, appInstanceInfo); logger.info("importAppResult: {}", importAppResult); } @@ -101,7 +101,7 @@ public void testCheckWrongFormatAppInstanceInfo3() { AppDesc appDesc = new AppDesc(); appDesc.setName("carlosfu3"); // 实例信息 - String appInstanceInfo = "10.10.53.159:6379"; + String appInstanceInfo = "127.0.0.1:6379"; ImportAppResult importAppResult = importAppCenter.check(appDesc, appInstanceInfo); logger.info("importAppResult: {}", importAppResult); } @@ -115,7 +115,7 @@ public void testCheckWrongFormatAppInstanceInfo4() { AppDesc appDesc = new AppDesc(); appDesc.setName("carlosfu4"); // 实例信息 - String appInstanceInfo = "10.10.10.10:6379:1024"; + String appInstanceInfo = "127.0.0.1:6379:1024"; ImportAppResult importAppResult = importAppCenter.check(appDesc, appInstanceInfo); logger.info("importAppResult: {}", importAppResult); } @@ -129,7 +129,7 @@ public void testCheckWrongFormatAppInstanceInfo5() { AppDesc appDesc = new AppDesc(); appDesc.setName("carlosfu5"); // 实例信息 - String appInstanceInfo = "10.10.53.162:ab:1024"; + String appInstanceInfo = "127.0.0.1:ab:1024"; ImportAppResult importAppResult = importAppCenter.check(appDesc, appInstanceInfo); logger.info("importAppResult: {}", importAppResult); } @@ -143,7 +143,7 @@ public void testCheckExistInstanceInfo() { AppDesc appDesc = new AppDesc(); appDesc.setName("carlosfu6"); // 实例信息 - String appInstanceInfo = "10.10.53.162:6379:1024"; + String appInstanceInfo = "127.0.0.1:6379:1024"; ImportAppResult importAppResult = importAppCenter.check(appDesc, appInstanceInfo); logger.info("importAppResult: {}", importAppResult); } @@ -157,7 +157,7 @@ public void testCheckNotRunInstance() { AppDesc appDesc = new AppDesc(); appDesc.setName("carlosfu7"); // 实例信息 - String appInstanceInfo = "10.10.53.162:6399:1024"; + String appInstanceInfo = "127.0.0.1:6399:1024"; ImportAppResult importAppResult = importAppCenter.check(appDesc, appInstanceInfo); logger.info("importAppResult: {}", importAppResult); } @@ -171,7 +171,7 @@ public void testCheckWrongMaxMemory() { AppDesc appDesc = new AppDesc(); appDesc.setName("carlosfu8"); // 实例信息 - String appInstanceInfo = "10.10.53.159:6379:aa"; + String appInstanceInfo = "127.0.0.1:6379:aa"; ImportAppResult importAppResult = importAppCenter.check(appDesc, appInstanceInfo); logger.info("importAppResult: {}", importAppResult); } @@ -184,7 +184,7 @@ public void testCheckDataNode() { AppDesc appDesc = new AppDesc(); appDesc.setName("carlosfu9"); // 实例信息 - String appInstanceInfo = "10.10.53.159:6379:1024"; + String appInstanceInfo = "127.0.0.1:6379:1024"; ImportAppResult importAppResult = importAppCenter.check(appDesc, appInstanceInfo); logger.info("importAppResult: {}", importAppResult); } @@ -198,7 +198,7 @@ public void testCheckSentinelNodeMasterName() { AppDesc appDesc = new AppDesc(); appDesc.setName("carlosfu10"); // 实例信息 - String appInstanceInfo = "10.10.53.159:26379:1024"; + String appInstanceInfo = "127.0.0.1:26379:1024"; ImportAppResult importAppResult = importAppCenter.check(appDesc, appInstanceInfo); logger.info("importAppResult: {}", importAppResult); } @@ -212,7 +212,7 @@ public void testCheckSentinelNode() { AppDesc appDesc = new AppDesc(); appDesc.setName("carlosfu11"); // 实例信息 - String appInstanceInfo = "10.10.53.159:26379:mymaster"; + String appInstanceInfo = "127.0.0.1:26379:mymaster"; ImportAppResult importAppResult = importAppCenter.check(appDesc, appInstanceInfo); logger.info("importAppResult: {}", importAppResult); } @@ -227,11 +227,11 @@ public void testCheckSentinelAllNodes() { appDesc.setName("carlosfu12"); // 实例信息 String appInstanceInfo = - "10.10.53.159:7000:512\n" + - "10.10.53.159:7001:512\n" + - "10.10.53.159:26379:mymaster\n" + - "10.10.53.159:26380:mymaster\n" + - "10.10.53.159:26381:mymaster"; + "127.0.0.1:7000:512\n" + + "127.0.0.1:7001:512\n" + + "127.0.0.1:26379:mymaster\n" + + "127.0.0.1:26380:mymaster\n" + + "127.0.0.1:26381:mymaster"; ImportAppResult importAppResult = importAppCenter.check(appDesc, appInstanceInfo); logger.info("importAppResult: {}", importAppResult); } @@ -243,12 +243,12 @@ public void testCheckClusterNodes() { appDesc.setName("carlosfu13"); // 实例信息 String appInstanceInfo = - "10.10.53.159:8000:512\n" + - "10.10.53.159:8001:512\n" + - "10.10.53.159:8002:512\n" + - "10.10.53.159:8003:512\n" + - "10.10.53.159:8004:512\n" + - "10.10.53.159:8005:512\n"; + "127.0.0.1:8000:512\n" + + "127.0.0.1:8001:512\n" + + "127.0.0.1:8002:512\n" + + "127.0.0.1:8003:512\n" + + "127.0.0.1:8004:512\n" + + "127.0.0.1:8005:512\n"; ImportAppResult importAppResult = importAppCenter.check(appDesc, appInstanceInfo); logger.info("importAppResult: {}", importAppResult); } diff --git a/cachecloud-open-web/src/test/java/com/sohu/test/dao/AppClientReportDataSizeDaoTest.java b/cachecloud-open-web/src/test/java/com/sohu/test/dao/AppClientReportDataSizeDaoTest.java index 0b03442f..202bcf18 100644 --- a/cachecloud-open-web/src/test/java/com/sohu/test/dao/AppClientReportDataSizeDaoTest.java +++ b/cachecloud-open-web/src/test/java/com/sohu/test/dao/AppClientReportDataSizeDaoTest.java @@ -24,7 +24,7 @@ public class AppClientReportDataSizeDaoTest extends BaseTest { @Test public void testSave() { AppClientDataSizeStat stat = new AppClientDataSizeStat(); - stat.setClientIp("10.7.40.201"); + stat.setClientIp("127.0.0.1"); stat.setReportTime(new Date()); stat.setCollectTime(20150120135000L); stat.setCreateTime(new Date()); diff --git a/cachecloud-open-web/src/test/java/com/sohu/test/dao/AppDataMigrateStatusDaoTest.java b/cachecloud-open-web/src/test/java/com/sohu/test/dao/AppDataMigrateStatusDaoTest.java index d58c344e..83ccef74 100644 --- a/cachecloud-open-web/src/test/java/com/sohu/test/dao/AppDataMigrateStatusDaoTest.java +++ b/cachecloud-open-web/src/test/java/com/sohu/test/dao/AppDataMigrateStatusDaoTest.java @@ -28,17 +28,17 @@ public class AppDataMigrateStatusDaoTest extends BaseTest { public void testSave() { AppDataMigrateStatus appDataMigrateStatus = new AppDataMigrateStatus(); appDataMigrateStatus.setEndTime(new Date()); - appDataMigrateStatus.setMigrateMachineIp("10.10.53.159"); + appDataMigrateStatus.setMigrateMachineIp("127.0.0.1"); appDataMigrateStatus.setMigrateMachinePort(8888); appDataMigrateStatus.setStartTime(new Date()); appDataMigrateStatus.setStatus(1); appDataMigrateStatus.setUserId(10244); appDataMigrateStatus.setSourceAppId(10023); appDataMigrateStatus.setSourceMigrateType(1); - appDataMigrateStatus.setSourceServers("10.10.53.159:6379"); + appDataMigrateStatus.setSourceServers("127.0.0.1:6379"); appDataMigrateStatus.setTargetAppId(0); appDataMigrateStatus.setTargetMigrateType(2); - appDataMigrateStatus.setTargetServers("10.10.52.136:6385"); + appDataMigrateStatus.setTargetServers("127.0.0.1:6385"); appDataMigrateStatus.setLogPath("/opt/redis-migrate-tool/rmt-20160609144601.log"); appDataMigrateStatus.setConfigPath("/opt/redis-migrate-tool/rmt-20160609144601.conf"); appDataMigrateStatusDao.save(appDataMigrateStatus); diff --git a/cachecloud-open-web/src/test/java/com/sohu/test/dao/AppUserDaoTest.java b/cachecloud-open-web/src/test/java/com/sohu/test/dao/AppUserDaoTest.java index 39e910c6..37821be9 100644 --- a/cachecloud-open-web/src/test/java/com/sohu/test/dao/AppUserDaoTest.java +++ b/cachecloud-open-web/src/test/java/com/sohu/test/dao/AppUserDaoTest.java @@ -16,14 +16,4 @@ public class AppUserDaoTest extends BaseTest{ @Resource private AppUserDao appUserDao; - - @Test - public void testAppDao() { - AppUser appUser = AppUser.buildFrom(null, "11", "fff", "leifu@sohu-inc.com", "13820794024", -1); - appUserDao.save(appUser); - logger.info("{}", appUser); - } - - - } diff --git a/pom.xml b/pom.xml index 009693b9..8101b1d2 100644 --- a/pom.xml +++ b/pom.xml @@ -16,18 +16,18 @@ UTF-8 4.2.4.RELEASE - 2.2.1 + 2.3.2 1.1.1 - 5.1.29 - 4.11 + 8.0.16 + 4.13.1 3.1 9.2.3.v20140905 1.2.3 3.2.8 2.8.0 - 2.3.2 - 4.3.2 - 4.0 + 2.9.10.5 + 4.3.6 + 4.1 3.1 1.7 2.4 @@ -35,7 +35,8 @@ 2.5 build210 3.2.1 - 15.0 + 2.4 + 24.1.1-jre 2.3 2.2.1 1.7.6 @@ -43,7 +44,7 @@ 1.7 2.0 2.1.0-SNAPSHOT - 1.2.28 + 1.2.70 2.8.1 2.2.1 2.6 @@ -143,18 +144,24 @@ ${apache.commons.collections} + + commons-io + commons-io + ${commons.io.version} + + com.google.guava guava ${guava.version} - + commons-lang commons-lang ${commons-lang.version} - + net.sf.json-lib json-lib @@ -194,40 +201,10 @@ fastjson ${fastjson.version} - + - - - - yijunzhang - yijunzhang@sohu-inc.com - sohu-tv - - developer - - - - - leifu - leifu@sohu-inc.com - sohu-tv - - developer - - - - - lingguo - lingguo@sohu-inc.com - sohu-tv - - developer - - - - @@ -278,13 +255,13 @@ - + org.apache.maven.plugins maven-deploy-plugin ${maven.deloy.plugin} - + org.apache.maven.plugins maven-source-plugin @@ -301,7 +278,7 @@ - + org.apache.maven.plugins maven-resources-plugin @@ -310,15 +287,15 @@ UTF-8 - + - + central - http://repo1.maven.org/maven2 + https://repo1.maven.org/maven2 false @@ -326,7 +303,7 @@ com.springsource.repository.maven.release - http://repo.springsource.org/release/ + https://repo.springsource.org/release/ false @@ -334,7 +311,7 @@ nexus local private nexus - http://maven.oschina.net/content/groups/public/ + https://maven.oschina.net/content/groups/public/ true @@ -343,7 +320,7 @@ - - + + - \ No newline at end of file + diff --git a/script/cachecloud.sql b/script/cachecloud.sql index 91a75833..4031015b 100644 --- a/script/cachecloud.sql +++ b/script/cachecloud.sql @@ -1,6 +1,6 @@ -- MySQL dump 10.13 Distrib 5.5.16, for Linux (x86_64) -- --- Host: 10.10.19.167 Database: cache-cloud +-- Host: 127.0.0.1 Database: cache-cloud -- ------------------------------------------------------ -- Server version 5.5.34-32.0-log @@ -741,7 +741,7 @@ CREATE TABLE `machine_info` ( `cpu` mediumint(24) unsigned NOT NULL COMMENT 'cpu数量', `virtual` tinyint(8) unsigned NOT NULL DEFAULT '1' COMMENT '是否虚拟,0表示否,1表示是', `real_ip` varchar(16) COLLATE utf8_bin NOT NULL COMMENT '宿主机ip', - `service_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '上线时间', + `service_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '上线时间', `fault_count` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '故障次数', `modify_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', `warn` tinyint(255) unsigned NOT NULL DEFAULT '1' COMMENT '是否启用报警,0不启用,1启用', @@ -800,6 +800,7 @@ CREATE TABLE `standard_statistics` ( KEY `idx_create_time` (`created_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT; +DROP TABLE IF EXISTS `instance_slow_log`; CREATE TABLE `instance_slow_log` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增id', `instance_id` bigint(20) NOT NULL COMMENT '实例的id', @@ -816,6 +817,7 @@ CREATE TABLE `instance_slow_log` ( KEY `idx_app_create_time` (`app_id`,`create_time`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='实例慢查询列表'; +DROP TABLE IF EXISTS `app_client_value_minute_stats`; CREATE TABLE `app_client_value_minute_stats` ( `app_id` bigint(20) NOT NULL COMMENT '应用id', `collect_time` bigint(20) NOT NULL COMMENT '统计时间:格式yyyyMMddHHmm00', @@ -827,6 +829,7 @@ CREATE TABLE `app_client_value_minute_stats` ( KEY `idx_collect_time` (`collect_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='客户端每分钟值分布上报数据统计'; +DROP TABLE IF EXISTS `app_client_instance`; CREATE TABLE `app_client_instance` ( `app_id` bigint(20) NOT NULL COMMENT '应用id', `client_ip` varchar(20) NOT NULL COMMENT '客户端ip', @@ -837,6 +840,7 @@ CREATE TABLE `app_client_instance` ( PRIMARY KEY (`app_id`,`day`,`client_ip`,`instance_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='应用实例与客户端对应关系表'; +DROP TABLE IF EXISTS `system_config`; CREATE TABLE `system_config` ( `config_key` varchar(255) NOT NULL COMMENT '配置key', `config_value` varchar(512) NOT NULL COMMENT '配置value', @@ -853,37 +857,41 @@ CREATE TABLE `system_config` ( insert into system_config(config_key,config_value,info,status,order_id) values('cachecloud.machine.ssh.name','cachecloud','机器ssh用户名',1,1); insert into system_config(config_key,config_value,info,status,order_id) values('cachecloud.machine.ssh.password','cachecloud','机器ssh密码',1,2); insert into system_config(config_key,config_value,info,status,order_id) values('cachecloud.machine.ssh.port','22','机器ssh端口',1,3); -insert into system_config(config_key,config_value,info,status,order_id) values('cachecloud.admin.user.name','admin','cachecloud-admin用户名',1,4); -insert into system_config(config_key,config_value,info,status,order_id) values('cachecloud.admin.user.password','admin','cachelcoud-admin密码',1,5); -insert into system_config(config_key,config_value,info,status,order_id) values('cachecloud.superAdmin','admin,xx,yy','超级管理员组',1,6); -insert into system_config(config_key,config_value,info,status,order_id) values('machine.cpu.alert.ratio','80.0','机器cpu报警阀值',1,7); -insert into system_config(config_key,config_value,info,status,order_id) values('machine.mem.alert.ratio','80.0','机器内存报警阀值',1,8); -insert into system_config(config_key,config_value,info,status,order_id) values('machine.load.alert.ratio','8.0','机器负载报警阀值',1,9); -insert into system_config(config_key,config_value,info,status,order_id) values('cachecloud.documentUrl','http://cachecloud.github.io','文档地址',1,10); -insert into system_config(config_key,config_value,info,status,order_id) values('cachecloud.owner.email','xx@sohu.com,yy@qq.com','邮件报警(逗号隔开)',1,11); -insert into system_config(config_key,config_value,info,status,order_id) values('cachecloud.owner.phone','13812345678,13787654321','手机号报警(逗号隔开)',1,12); -insert into system_config(config_key,config_value,info,status,order_id) values('cachecloud.mavenWareHouse','http://your_maven_house','maven仓库地址(客户端)',1,13); -insert into system_config(config_key,config_value,info,status,order_id) values('cachecloud.contact','user1:(xx@zz.com, user1:135xxxxxxxx)
user2: (user2@zz.com, user2:138xxxxxxxx)','值班联系人信息',1,14); -insert into system_config(config_key,config_value,info,status,order_id) values('cachecloud.good.client','1.0-SNAPSHOT','可用客户端版本(用逗号隔开)',1,15); -insert into system_config(config_key,config_value,info,status,order_id) values('cachecloud.warn.client','0.1','警告客户端版本(用逗号隔开)',1,16); -insert into system_config(config_key,config_value,info,status,order_id) values('cachecloud.error.client','0.0','不可用客户端版本(用逗号隔开)',1,17); - -insert into system_config(config_key,config_value,info,status,order_id) values('redis.migrate.tool.home','/opt/cachecloud/redis-migrate-tool/','redis-migrate-tool安装路径',1,18); -insert into system_config(config_key,config_value,info,status,order_id) values('cachecloud.user.login.type','1','用户登录状态保存方式(session或cookie)',1,19); -insert into system_config(config_key,config_value,info,status,order_id) values('cachecloud.cookie.domain','','cookie登录方式所需要的域名',1,20); -insert into system_config(config_key,config_value,info,status,order_id) values('cachecloud.base.dir','/opt','cachecloud根目录,要和cachecloud-init.sh脚本中的目录一致',1,21); -insert into system_config(config_key,config_value,info,status,order_id) values('cachecloud.app.client.conn.threshold','2000','应用连接数报警阀值',1,22); - -insert into system_config(config_key,config_value,info,status,order_id) values('cachecloud.email.alert.interface','','邮件报警接口(说明:http://cachecloud.github.io 邮件和短信报警接口规范)',1,23); -insert into system_config(config_key,config_value,info,status,order_id) values('cachecloud.mobile.alert.interface','','短信报警接口(说明:http://cachecloud.github.io 邮件和短信报警接口规范)',1,24); -insert into system_config(config_key,config_value,info,status,order_id) values('cachecloud.ldap.url','','LDAP接口地址(例如:ldap://ldap.xx.com)',1,25); - -insert into system_config(config_key,config_value,info,status,order_id) values('cachecloud.whether.schedule.clean.data','false','是否定期清理统计数据',1,26); - -insert into system_config(config_key,config_value,info,status,order_id) values('cachecloud.app.secret.base.key','cachecloud-2014','appkey秘钥基准key',1,27); -insert into system_config(config_key,config_value,info,status,order_id) values('cachecloud.machine.stats.cron.minute','1','机器性能统计周期(分钟)',1,28); - - +insert into system_config(config_key,config_value,info,status,order_id) values('cachecloud.ssh.auth.type','1','ssh授权方式',1,4); +insert into system_config(config_key,config_value,info,status,order_id) values('cachecloud.public.key.pem','','公钥地址',1,5); +insert into system_config(config_key,config_value,info,status,order_id) values('cachecloud.admin.user.name','admin','cachecloud-admin用户名',1,6); +insert into system_config(config_key,config_value,info,status,order_id) values('cachecloud.admin.user.password','admin','cachelcoud-admin密码',1,7); +insert into system_config(config_key,config_value,info,status,order_id) values('cachecloud.superAdmin','admin,xx,yy','超级管理员组',1,8); +insert into system_config(config_key,config_value,info,status,order_id) values('machine.cpu.alert.ratio','80.0','机器cpu报警阀值',1,9); +insert into system_config(config_key,config_value,info,status,order_id) values('machine.mem.alert.ratio','80.0','机器内存报警阀值',1,10); +insert into system_config(config_key,config_value,info,status,order_id) values('machine.load.alert.ratio','8.0','机器负载报警阀值',1,11); +insert into system_config(config_key,config_value,info,status,order_id) values('cachecloud.documentUrl','http://cachecloud.github.io','文档地址',1,12); +insert into system_config(config_key,config_value,info,status,order_id) values('cachecloud.owner.email','xx@xx.com,yy@qq.com','邮件报警(逗号隔开)',1,13); +insert into system_config(config_key,config_value,info,status,order_id) values('cachecloud.owner.phone','13812345678,13787654321','手机号报警(逗号隔开)',1,14); +insert into system_config(config_key,config_value,info,status,order_id) values('cachecloud.mavenWareHouse','http://your_maven_house','maven仓库地址(客户端)',1,15); +insert into system_config(config_key,config_value,info,status,order_id) values('cachecloud.contact','user1:(xx@zz.com, user1:135xxxxxxxx)
user2: (user2@zz.com, user2:138xxxxxxxx)','值班联系人信息',1,16); +insert into system_config(config_key,config_value,info,status,order_id) values('cachecloud.good.client','1.0-SNAPSHOT','可用客户端版本(用逗号隔开)',1,17); +insert into system_config(config_key,config_value,info,status,order_id) values('cachecloud.warn.client','0.1','警告客户端版本(用逗号隔开)',1,18); +insert into system_config(config_key,config_value,info,status,order_id) values('cachecloud.error.client','0.0','不可用客户端版本(用逗号隔开)',1,19); + +insert into system_config(config_key,config_value,info,status,order_id) values('redis.migrate.tool.home','/opt/cachecloud/redis-migrate-tool/','redis-migrate-tool安装路径',1,20); +insert into system_config(config_key,config_value,info,status,order_id) values('cachecloud.user.login.type','1','用户登录状态保存方式(session或cookie)',1,21); +insert into system_config(config_key,config_value,info,status,order_id) values('cachecloud.cookie.domain','','cookie登录方式所需要的域名',1,22); +insert into system_config(config_key,config_value,info,status,order_id) values('cachecloud.base.dir','/opt','cachecloud根目录,要和cachecloud-init.sh脚本中的目录一致',1,23); +insert into system_config(config_key,config_value,info,status,order_id) values('cachecloud.app.client.conn.threshold','2000','应用连接数报警阀值',1,24); + +insert into system_config(config_key,config_value,info,status,order_id) values('cachecloud.email.alert.interface','','邮件报警接口(说明:http://cachecloud.github.io 邮件和短信报警接口规范)',1,25); +insert into system_config(config_key,config_value,info,status,order_id) values('cachecloud.mobile.alert.interface','','短信报警接口(说明:http://cachecloud.github.io 邮件和短信报警接口规范)',1,26); +insert into system_config(config_key,config_value,info,status,order_id) values('cachecloud.ldap.url','','LDAP接口地址(例如:ldap://ldap.xx.com)',1,27); + +insert into system_config(config_key,config_value,info,status,order_id) values('cachecloud.whether.schedule.clean.data','false','是否定期清理统计数据',1,28); + +insert into system_config(config_key,config_value,info,status,order_id) values('cachecloud.app.secret.base.key','cachecloud-2014','appkey秘钥基准key',1,29); +insert into system_config(config_key,config_value,info,status,order_id) values('cachecloud.machine.stats.cron.minute','1','机器性能统计周期(分钟)',1,30); + +insert into system_config(config_key,config_value,info,status,order_id) values('cachecloud.nmon.dir','/opt/cachecloud','nmon安装目录',1,31); + +DROP TABLE IF EXISTS `app_data_migrate_status`; CREATE TABLE `app_data_migrate_status` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增id', `migrate_machine_ip` varchar(255) NOT NULL COMMENT '迁移工具所在机器ip', @@ -903,9 +911,9 @@ CREATE TABLE `app_data_migrate_status` ( PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='迁移状态'; -insert into app_user(name,ch_name,email,mobile,type) values('admin','admin','admin@sohu-inc.com','13500000000',0); - +insert into app_user(name,ch_name,email,mobile,type) values('admin','admin','admin@xxx.com','13500000000',0); +DROP TABLE IF EXISTS `instance_config`; CREATE TABLE `instance_config` ( `id` int(11) NOT NULL AUTO_INCREMENT, `config_key` varchar(128) NOT NULL COMMENT '配置名', @@ -1064,6 +1072,7 @@ CREATE TABLE `server_stat` ( -- 应用级别 alter table app_desc add column important_level tinyint not null default 2 comment '应用级别,1:最重要,2:一般重要,3:一般'; +DROP TABLE IF EXISTS `instance_alert`; CREATE TABLE `instance_alert` ( `config_key` varchar(255) NOT NULL COMMENT '配置key', `alert_value` varchar(512) NOT NULL COMMENT '报警阀值', @@ -1077,6 +1086,7 @@ CREATE TABLE `instance_alert` ( alter table app_desc add column password varchar(255) default '' comment 'redis密码'; +DROP TABLE IF EXISTS `app_daily`; CREATE TABLE `app_daily` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增id', `app_id` bigint(20) NOT NULL COMMENT '应用id',

AltStyle によって変換されたページ (->オリジナル) /