orderer与kafka的offset对应不上问题解析及解决方案:
原因是orderer与kafka的最新的offset不一定一样,而且kafka会清理kafka里的数据,这样导致orderer请求offset对应的数据,kafka里没有,导致orderer会宕机,解决方案如下:
1. 手动修改kafka日志的偏移量,操作如下:
获取orderer启动时所期望的offset
修改kafka数据偏移
- 如果kafka上还保存着orderer所期望的offset的数据则只需要修改replication-offset-checkpoint文件,如下图中00000000000000000000.log可知道起始偏移是从0开始的,说明还保存着orderer所期望的offset数据,所以只需要将replication-offset-checkpoint的147198改为61958,然后重新启动kafka和orderer正常
- 如果kafka上已经丢失了orderer所期望的数据,例如文件命名已变为00000000000000061988.log,则将所有的kafka-logs删除,重新启动生成以00000000000000000000.log的文件,让后将3个文件命名为00000000000000061958.log,然后修改recovery-point-offset-checkpoint和replication-offset-checkpoint配置文件,然后重新启动kakfa和orderer正常。
2. 修改kafka存放消息配置,改成永久性存放消息,修改kafka目录下的config目录下的server.property的log.retention.hours=-1