这是从零学习开源项目的第四篇,上一篇是《从零学习开源项目系列(三) CSBattleMgr服务源码研究》,这篇文章我们一起来学习LogServer,中文意思可能是“日志服务器”。 我们在Visual Studio中将LogServer设置为启动项,然后按F5将LogServer启动起来,启动成功后显示如下图: ? 从上图中,我们可以到大致做了三件事: 1. 通过分析,我们知道LogServer大致的技术框架,业务细节和技术细节,我们在后面的文章中会接着介绍。我们当前的目的是快速把所有的服务的技术框架给熟悉一遍。
这里的应用层,指的是CenterServer、LogonServer、LogServer、RoomServer等几个服务器,另外还包括游戏模块的设计。不过游戏模块和前4个服务器的设计很不相同。 3 LogServer详细设计 LogServer的实现比较简单,下面是其结构图 ? 图4 LogServer结构图 LogServer从IController继承下来,它接收玩家核查游戏过程的请求,并将其转发给LogFetcher处理,处理完成后,将结果返回给玩家。
这里的应用层,指的是CenterServer、LogonServer、LogServer、RoomServer等几个服务器,另外还包括游戏模块的设计。不过游戏模块和前4个服务器的设计很不相同。 3 LogServer详细设计 LogServer的实现比较简单,下面是其结构图 ? 图4 LogServer结构图 LogServer从IController继承下来,它接收玩家核查游戏过程的请求,并将其转发给LogFetcher处理,处理完成后,将结果返回给玩家。
LoginServer.exe taskkill /f /t /im GSKernel.exe taskkill /f /t /im RobotConsole.exe taskkill /f /t /im LogServer.exe "start LoginServer.exe" start /min "LoginServer" "LoginServer.exe" ping -n 1 127.0>nul echo "start LogServer.exe " start /min "LogServer" "LogServer.exe" 通过这个脚本,我们得到了这个服务器项目的一些信息,这个服务器由以下一些服务组成: redis-server(启动两个) CSBattleMgr SSBattleMgr GSKernel BalanceServer LoginServer LogServer 这些服务器具体是做啥的,我现在也不知道,后面我们会教大家如何阅读
这里的应用层,指的是CenterServer、LogonServer、LogServer、RoomServer等几个服务器,另外还包括游戏模块的设计。不过游戏模块和前4个服务器的设计很不相同。 3 LogServer详细设计 LogServer的实现比较简单,下面是其结构图 ? 图4 LogServer结构图 LogServer从IController继承下来,它接收玩家核查游戏过程的请求,并将其转发给LogFetcher处理,处理完成后,将结果返回给玩家。
针对这样的问题,我们应该如何应对,下面才是我们今天的重点,通过修改bash源码,让history记录通过syslog发送到远程logserver中,大大增加了攻击者对history记录完整性破坏的难度。 如果要写到远程logserver,需要配置syslog服务,具体配置这里不做详细讲解,大家自己研究,发送到远端logserver效果如下图所示。
其交互流程如下: 正常运行时,集群中某个 LogServer 充当 Sequencer 所有 DelosRuntime 发出的 Append 请求都要通过 Sequencer 定序后,追加到各个 LogServer 当 Sequencer 所在 LogServer 宕机后,DelosRuntime 直接向所有 LogServer 发送 CheckTail 请求,以 quorum 协议确定 tail 所有 DelosRuntime 都可以发起 seal 请求,对 NativeLoglet 进行 seal 注意,NativeLoget 中所有 LogServer 可以和 DelosRuntime 部署在一块(称作 Converged
3.3 LogServer ? 图4 LogServer与外界的交互图 有时候,玩家可能会对游戏的过程产生怀疑,或者想回顾整个游戏的过程。 LogServer的就是用来响应玩家的核查的请求,然后从GameLogDB中将整个游戏过程返回给客户端,客户端以视频地方式显示给玩家。 玩家在请求检查的时候,客户端会将这局游戏的以及玩家的信息id发送到LogServer, LogServer根据游戏id的信息从GameLogDB取出日志信息返回给玩家。 LogServer在从数据库中读出日志后不用反序列化直接返回给客户端反序列化。
3.3 LogServer ? 图4 LogServer与外界的交互图 有时候,玩家可能会对游戏的过程产生怀疑,或者想回顾整个游戏的过程。 LogServer的就是用来响应玩家的核查的请求,然后从GameLogDB中将整个游戏过程返回给客户端,客户端以视频地方式显示给玩家。 玩家在请求检查的时候,客户端会将这局游戏的以及玩家的信息id发送到LogServer, LogServer根据游戏id的信息从GameLogDB取出日志信息返回给玩家。 LogServer在从数据库中读出日志后不用反序列化直接返回给客户端反序列化。
3.3 LogServer ? 图4 LogServer与外界的交互图 有时候,玩家可能会对游戏的过程产生怀疑,或者想回顾整个游戏的过程。 LogServer的就是用来响应玩家的核查的请求,然后从GameLogDB中将整个游戏过程返回给客户端,客户端以视频地方式显示给玩家。 玩家在请求检查的时候,客户端会将这局游戏的以及玩家的信息id发送到LogServer, LogServer根据游戏id的信息从GameLogDB取出日志信息返回给玩家。 LogServer在从数据库中读出日志后不用反序列化直接返回给客户端反序列化。
操作完成之后,我们就会得到下列日志文件: server.logserver1.logserver2.logserver3.log 依此类推… C> makednslog –net 10,172 这行命令指定了日志生成过程中所要用到的两个网络
vim /etc/my.cnf在[mysqld]下增加以下两项配置log-bin=bin_logserver-id=1修改完成并保存。然后退出容器,并使用 docker 指令重启容器。 log-bin=bin_logserver-id=2修改完成并保存。然后退出容器,并使用 docker 指令重启容器。
com" mail_pass = "lecpuedugk" #163邮箱smtp生成的密码 def send_mail(to_list, sub, content): me = "LogServer
Http服务:Server1与Server2Grpc服务:GrpcService1与GrpcService2Grpc客户端:GrpcClientIdentityServer4服务:Idstest日志服务:LogServer1 =utf-8" --data config.cache_ttl=30 --data config.strategy=memory多次调用X-Cache-Status=Hit则命中缓存成功日志插件启动LogServer http://192.168.43.94:5555/Log" --data "config.method=POST" 请求http://192.168.43.94:8000/http1/Name,查看LogServer
# pwd /soft/redis-2.8.17/src [root@logserver src]# . ######### [100%] 1:logstash ########################################### [100%] [root@logserver ##########[100%] 1:logstash ########################################### [100%] [root@logserver
:Server1与Server2 Grpc服务:GrpcService1与GrpcService2 Grpc客户端:GrpcClient IdentityServer4服务:Idstest 日志服务:LogServer -8" --data config.cache_ttl=30 --data config.strategy=memory 多次调用X-Cache-Status=Hit则命中缓存成功 日志插件 启动LogServer http://192.168.43.94:5555/Log" --data "config.method=POST" 请求http://192.168.43.94:8000/http1/Name,查看LogServer
upstream logserver{ server hadoop1:8080 weight=1; server hadoop2:8080 weight=1; server hadoop3:8080 weight=1; } server { listen 80; server_name logserver / { root html; index index.html index.htm; proxy_pass http://logserver
deploy_dir: /tidb-deploy/monitor-9100 data_dir: /tidb-data/monitor-9100 log_dir: /tidb-deploy/monitor-9100/logserver_configs
com" mail_pass = "********" #163邮箱smtp生成的密码 def send_mail(to_list, sub, content): me = "LogServer
--创建logserver容器 $ podman run -d --name logserver -v /home/wallah/container_logfile:/var/log/journal:Z registry.domain250.example.com/rhel8/rsyslog --停止容器 podman stop logserver --检查systemd的状态 $ loginctl mkdir -p ~/.config/systemd/user/ $ cd ~/.config/systemd/user/ --生成一个进程 $ podman generate systemd -n logserver -f --设置容器开机自启 $ systemctl --user enable --now container-logserver $ systemctl --user status container-logserver # 如果有题目要求需要在容器里执行语句,方法如下: --先进入容器 $ podman exec -it logserver /bin/bash 然后去执行语句 第三题:sudo免密操作 # 编辑/