痛点:一般微服务依赖于其他中间件,例如,需要先启动数据库,redis,mq等等,这就涉及到了一个服务启动的先后顺序。目前,单个微服务的部署,我没看到有什么好的方案可以解决。除非使用镜像化,docker-compose文件中倒是可以设置服务依赖顺序。
折中的方案
将服务加入到系统自启动,然后延迟两分钟,两分钟时间,这些中间件应该都启动好了,时间自己根据实际情况调节。
-
在
/usr/lib/systemd/system/
目录下新建自启动脚本,后缀是xxx.service
,这里以event服务为例子,你的可能是abc服务,123服务,你想怎么定义都可以vim /usr/lib/systemd/system/event.service
注意:可根据实际情况,调整ExecStartPre的睡眠时间,并且要小于TimeoutStartSec设置的时间,这里设置了睡眠2分钟,重启超时时间为180秒
[Unit] Description=event # 在nacos服务后启动,可以换成 After=network.service [Service] Type=forking ExecStartPre=/bin/sleep 2m # 服务启动脚本,到时候系统开机时,会执行的服务脚本 ExecStart=/start.sh/eventserver.sh ExecReload=/start.sh/eventserver.sh PrivateTmp=true TimeoutStartSec=180 [Install] WantedBy=multi-user.target
-
加入重启即可
systemctl enable event