合服修改

jieling
grimm 2024-04-26 14:04:52 +08:00
parent 7386e1e671
commit 33759072fa
3 changed files with 16 additions and 8 deletions

View File

@ -7,6 +7,7 @@ proccessname=$3 # 进程名称
mongourl=$4 # MongoDB地址 mongourl=$4 # MongoDB地址
redisIp=$5 # Redis IP redisIp=$5 # Redis IP
redisPwd=$6 # Redis 密码 redisPwd=$6 # Redis 密码
mongoadmin=%7 # mongo后缀
# 停止游戏进程 # 停止游戏进程
ansible "$gameip" -m shell -a "supervisorctl stop $proccessname" ansible "$gameip" -m shell -a "supervisorctl stop $proccessname"
@ -18,7 +19,7 @@ fi
# 清除MongoDB数据 # 清除MongoDB数据
tempFile="/data/jieling/gm/config/script/clearMongo.js" tempFile="/data/jieling/gm/config/script/clearMongo.js"
mongo "mongodb://${mongourl}/jieling_${serverid}?authSource=admin" "$tempFile" mongo "mongodb://${mongourl}/jieling_${serverid}?${mongoadmin}" "$tempFile"
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
echo "清除MongoDB数据失败退出脚本。" echo "清除MongoDB数据失败退出脚本。"
exit 1 exit 1

View File

@ -101,8 +101,8 @@ public class HeFuManager {
dealIpPort(masterId, salveList); dealIpPort(masterId, salveList);
// 合服记录入库 // 合服记录入库
addHeFuInfo(masterId, salveList); addHeFuInfo(masterId, salveList);
// 重启服务器 // 不用重启服务器
AutoServerManager.rebootServer(String.valueOf(masterId)); // AutoServerManager.rebootServer(String.valueOf(masterId));
// 更新合服缓存 // 更新合服缓存
setHefuMap(); setHefuMap();
}catch (Exception e){ }catch (Exception e){
@ -131,6 +131,7 @@ public class HeFuManager {
// 预防二次合服,删除之前得合服记录 // 预防二次合服,删除之前得合服记录
CHefuInfo hefu = hefuDao.findHefuByServerID(masterId); CHefuInfo hefu = hefuDao.findHefuByServerID(masterId);
if (hefu != null){ if (hefu != null){
cloneSet.addAll(hefu.getSlaveServerIds());
hefuDao.removeHefuInfo(hefu); hefuDao.removeHefuInfo(hefu);
} }
for (Integer id : salveList) { for (Integer id : salveList) {
@ -243,20 +244,22 @@ public class HeFuManager {
* @throws Exception * @throws Exception
*/ */
private static void dealIpPort(int masterSID, Set<Integer> slaveId) throws Exception { private static void dealIpPort(int masterSID, Set<Integer> slaveId) throws Exception {
ServerInfo masterServer = serverInfoDao.getServerInfo(String.valueOf(masterSID));
for (Integer slave : slaveId) { for (Integer slave : slaveId) {
CHefuInfo hefuInfo = hefuDao.findHefuByServerID(slave); CHefuInfo hefuInfo = hefuDao.findHefuByServerID(slave);
if (hefuInfo != null){ if (hefuInfo != null){
// 旧主服也需要改ip端口
upsertServerIpAndPort(masterServer, hefuInfo.getMasterServerId());
for (Integer serverId : hefuInfo.getSlaveServerIds()) { for (Integer serverId : hefuInfo.getSlaveServerIds()) {
upsertServerIpAndPort(masterSID, serverId); upsertServerIpAndPort(masterServer, serverId);
} }
}else { }else {
upsertServerIpAndPort(masterSID, slave); upsertServerIpAndPort(masterServer, slave);
} }
} }
} }
public static void upsertServerIpAndPort(int masterSID, int slaveSID) throws Exception { public static void upsertServerIpAndPort(ServerInfo masterServer, int slaveSID) throws Exception {
ServerInfo masterServer = serverInfoDao.getServerInfo(String.valueOf(masterSID));
ServerInfo slaveServer = serverInfoDao.getServerInfo(String.valueOf(slaveSID)); ServerInfo slaveServer = serverInfoDao.getServerInfo(String.valueOf(slaveSID));
slaveServer.setIp(masterServer.getIp()); slaveServer.setIp(masterServer.getIp());
slaveServer.setPort(masterServer.getPort()); slaveServer.setPort(masterServer.getPort());

View File

@ -40,6 +40,10 @@ public class AutoServerManager {
String[] split = gameMongodb.split("/"); String[] split = gameMongodb.split("/");
return split[2]; return split[2];
} }
public static String getGameMongoAdmin() {
String[] split = gameMongodb.split("\\?");
return split[1];
}
@Value("${spring.data.gameMongodb.uri}") @Value("${spring.data.gameMongodb.uri}")
public void setGameMongodb(String gameMongodb) { public void setGameMongodb(String gameMongodb) {
AutoServerManager.gameMongodb = gameMongodb; AutoServerManager.gameMongodb = gameMongodb;
@ -326,7 +330,7 @@ public class AutoServerManager {
String space = " "; String space = " ";
String command = "bash" + space + path + space + serverInfo.getIp() + space + serverInfo.getServer_id() + space + serverInfo.getCoreName() String command = "bash" + space + path + space + serverInfo.getIp() + space + serverInfo.getServer_id() + space + serverInfo.getCoreName()
+ space + getGameMongodb() + space + getRedisHost() + space + getRedisPwd(); + space + getGameMongodb() + space + getRedisHost() + space + getRedisPwd() + space + getGameMongoAdmin();
LOGGER.info("清库命令:{}", command); LOGGER.info("清库命令:{}", command);
Process exec = null; Process exec = null;