Crontab @reboot 设置开机启动命令
背景
有时服务器断电后再开机启动需要启动一些服务,除了正常的 rc 命令可以实现外,之前我常用的是 systemctl service, 今天发现 crontab 的 reboot 标签也可以实现
使用
crontab -e
1 | # 启动后 120 秒启动 canal adapter |
保存后即可生效
一般情况下,我会 sleep 一段时间再启动服务,因为要等其他 systemd 服务启动完成,比如数据库服务
有时服务器断电后再开机启动需要启动一些服务,除了正常的 rc 命令可以实现外,之前我常用的是 systemctl service, 今天发现 crontab 的 reboot 标签也可以实现
crontab -e
1 | # 启动后 120 秒启动 canal adapter |
保存后即可生效
一般情况下,我会 sleep 一段时间再启动服务,因为要等其他 systemd 服务启动完成,比如数据库服务
kubeadm alpha certs check-expiration
kubeadm alpha certs renew all
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config chown $(id -u):$(id -g) $HOME/.kube/config
查看 kubectl 命令是否可用
如果不可用的话,使用下面命令重启 kube-apiserver, kube-controller-manager, kube-scheduler、etcd
docker ps | grep -v pause | grep -E "etcd|scheduler|controller|apiserver" | awk '{print $1}' | awk '{print "docker","restart",$1}' | bash
1 | /* |
在该脚本目录下执行npm intsall minio
在脚本中配置 MinIO 服务端的配置项
在 Typora 进行如下配置
该脚本支持
导出主库全部数据
mysqldump -A -F --single-transaction --master-data=1 > /tmp/full.sql
-A: 导出全部数据
-F: 同参数–flush-logs, dump 前生成新的 bin log 日志
–master-data=1:参数会在 sql 中打印出 binlog 的信息
例如:CHANGE MASTER TO MASTER_LOG_FILE='binlog.000248', MASTER_LOG_POS=156;
当指定为 2 时,改行为注释的情况,为 1 时不注释
这时就相当于改变了从主库读取 binlog 的文件和位置信息,
之后将导出的数据导入从库
mysql -p < /tmp/full.sql
耐心的等待
完成后查看从节点的信息:
show slave status;
主要看 Master_Log_File 和 Read_Master_Log_Pos 的数据是否和上面的一致
此时再开启主从同步
start slave ;
完成;
查看信息
使用 choose 标签
1 | <choose> |
或者
1 | <choose> |
按照晚上的教程,配置了
JAVA_TOOL_OPTIONS=”-Dsun.jnu.encoding=UTF-8 -Dfile.encoding=UTF-8”
和 LANG=C.UTF-8
这些都没有解决问题
主要问题是主节点配置连接从节点的账号 jenkins 没有初始化环境变量
查看从节点的系统信息,可以看到 file.encoding 是 ASNI 编码
解决办法就是新建一个用户使用 -d 指定 home 目录,
useradd -d /home/jenkins jenkins
目的是为了生成 .bashrc .bash_logout .bash_profile 三个文件,将这 3 个文件拷贝到 Jenkins 的home 目录下并授权, 就解决了
再去看从节点的 file.encoding 已经变成 UTF-8 了
使用 @ConfigurationProperties(prefix = "xxxx")
注解配置类
在 Nacos 配置中心里修改相应的配置会自动的刷新属性(配置类上不需要注解 @RefreshScope)
还可以通过发送 POST 请求手动刷新 /actuator/refresh 配置
修改保存后会发现日志打印出如下内容:
1 | 2021-09-29 01:02:22.081 INFO [etc-gateway,,] 2664 --- [xxx_6101] c.a.n.client.config.impl.ClientWorker : [fixed-xxxx_6101] [polling-resp] config changed. dataId=etc-gateway.yaml, group=DEFAULT_GROUP |
这里记录我遇到的坑:
控制台打印:
1 | 2021-09-29 01:06:18.896 INFO [etc-gateway,,] 3640 --- [xxx_6101] c.a.nacos.client.config.impl.CacheData : [fixed-xxx_6101] [notify-context] dataId=etc-gateway.yaml, group=DEFAULT_GROUP, md5=4c20b06be83314e17467d3f41d821094 |
这里说明没有正确读到 application.name
在 bootstrap.yml 配置文件里正确配置
1 | spring: |
即可
我这里 bootstrap.yml 配置时多个项目公用的,可以配置环境变量 -Dspring.application.name=etc-gateway
配置 https:
1 | listen 80 ssl; |
正常情况下使用 80 和 443 端口实现 http 自动跳转 https 的话配置:
1 | server { |
如果不是正常的端口的话,注释掉上面的 rewrite 配置,新增如下配置即可
error_page 497 301 https://$http_host$request_uri;