当 pve 集群某节点出现问题时,可能导致所有主机均无法连接到 WEB 管理后台,此时可以尝试以下方法将正常节点的集群状态销毁,在需要时重建集群,从而保证仍在线节点可用:
systemctl stop pve-cluster corosync
pmxcfs -l
rm /etc/corosync/*
rm /etc/pve/corosync.conf
killall pmxcfs
systemctl start pve-cluster
当 pve 集群某节点出现问题时,可能导致所有主机均无法连接到 WEB 管理后台,此时可以尝试以下方法将正常节点的集群状态销毁,在需要时重建集群,从而保证仍在线节点可用:
systemctl stop pve-cluster corosync
pmxcfs -l
rm /etc/corosync/*
rm /etc/pve/corosync.conf
killall pmxcfs
systemctl start pve-cluster
最近经常接触各种系统镜像,大部分是 *.iso 格式(如 debian ),少部分是 *.img 继续阅读
最近经常接触各种系统镜像,大部分是 *.iso 格式(如 debian ),少部分是 *.img 格式(如 cirros),这两者究竟有何区别,最终在维基百科找到比较可靠的一段描述:
具体一点说就是:
由于
.ISO只能封存使用ISO9660和UDF这两种文件系统的存储介质,意即.ISO只能拿来封存CD或DVD,因此才发展出了.IMG,它是以.ISO格式为基础另外新增可封存使用其它文件系统的存储介质的能力,.IMG可向后兼容于.ISO。如果是拿来封存CD或DVD,则使用.IMG和.ISO这两种格式所产生出来的内容是一样的。
总结以下几点:
*.iso 是一种光盘的存档文件,被设计用于光盘存档,符合ISO 9660等光盘规范;*.img 是一种文件归档格式,被设计用于数字存储、传输、以及整片 磁盘/光盘 内容的复制;*.img 兼容 *.iso (*.iso 是 *.img 的特例);k3s自动完成 ssl 证书签发和续签方法,并使用 https 协议暴露服务方法介绍。
完成了 k 继续阅读
基于公网完成跨云厂商服务器 k3s 集群部署
Kubernetes 在当下的火热程度不必多言,但由 继续阅读
汇集几乎全部 k8s 配置项注释,方便查阅和学习
# yaml格式的pod定义文件
<a href="https://blog.frytea.com/archives/1142#more-1142" class="more-link">继续阅读 <span class="meta-nav">→</span></a> Kubernetes系列文章概述
接触,了解 k8s 已经有一段时间了,但由于工作内容没有涉及到, 继续阅读
Linux 2.6.13 内核中引入了新的文件系统变化通知机制 inotify ,使用该特性提供的用户态调用 api ,可以方便的完成文件变化监听。
各种语言基本都提供了对该接口的调用方法: C 不必多说, Perl 使用 [Linux::Inotify2](https://metacpan.org/pod/Linux::Inotify2) , Golang 使用 golang.org/x/sys/unix , Python 则使用 [pyinotify](https://github.com/seb-m/pyinotify) 即可完成调用。
这里汇总所有相关监听事件,理论上针对所有语言通用:
* IN_ACCESS 文件被访问
* IN_ATTRIB 文件属性发生变化(文件元数据改变, 如权限, 链接计数, 扩展属性, 用户ID或组ID等)
* IN_CLOSE_WRITE 关闭以write方式打开的文件
* IN_CLOSE_NOWRITE 关闭以非write方式打开的文件
* IN_CREATE 在受监控目录内创建了文件/目录
* IN_DELETE 在受监控目录内删除了文件/目录
* IN_DELETE_SELF 被监测的文件/目录被删除
* IN_MODIFY 文件被修改
* IN_MOVE_SELF 移动受监测的文件或目录
* IN_MOVED_FROM 文件移出被监测的目录
* IN_MOVED_TO 文件移入被监测的目录
* IN_OPEN 文件被打开
* --------- 上述flag的集合
* IN_ALL_EVENTS 以上所有flag的集合
* IN_MOVE IN_MOVED_TO + IN_MOVED_FROM
* IN_CLOSE IN_CLOSE_WRITE + IN_CLOSE_NOWRITE
* --------- 不常用的flag
* IN_DONT_FOLLOW 不对符号链接解引用, 监控符号链接自身
* IN_MASK_ADD 将事件追加到pathname的当前监控掩码
* IN_ONESHOT 只监测一个事件, 事件发生后, 被监控项会从监控列表中消失
* IN_ONLYDIR 只监测目录
* IN_IGNORED 监控项被内核或应用程序移除
* IN_ISDIR 发生事件的是一个目录
* IN_Q_OVERFLOW Event队列溢出
* IN_UNMOUNT 文件系统unmount
最近想在内网搭建一套 Wiki,在调研了各种 wiki 的搭建方式、功能之后,选择了 wiki.js。但是在部署过程中,发现其默认是通过公网拉取语言包等资源,内网安装需要一些特别的方法。
这篇文章就来介绍内网部署 wiki.js 并拉取语言包的方法。
按照 官网安装方法,可以较快的将整个服务启动起来:
# 安装前请确保安装了 node npm
$ apt-get install node npm
# 若内网服务器没有安装,可参考官网二进制离线安装的方法
# 首先获取离线包,可在互联网上下载,拷入内网服务器
$ wget https://github.com/Requarks/wiki/releases/download/2.5.272/wiki-js.tar.gz
# 之后将所有内容解压到一个安装路径,我装在 /opt/wiki 下
$ mkdir wiki
$ tar xzf wiki-js.tar.gz -C ./wiki
$ cd ./wiki
# 下面需要进行配置
$ mv config.sample.yml config.yml
# 按照自己的需求修改配置文件
$ vim config.yml
# 如果使用 sqlite,在这里完成数据库初始化
$ npm rebuild sqlite3
# 服务启动
$ node server
官网提供了 systemd 配置文件,直接创建,配置好之后即可使用
nano /etc/systemd/system/wiki.service
[Unit]
Description=Wiki.js
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/node server
Restart=always
# Consider creating a dedicated user for Wiki.js here:
User=nobody
Environment=NODE_ENV=production
WorkingDirectory=/var/wiki
[Install]
WantedBy=multi-user.target
最后:
$ systemctl daemon-reload
$ systemctl enable wiki
$ systemctl start wiki
# 检查一下是否启动
$ systemctl status wiki
# 查看日志
$ journalctl -xef -u wiki
内网环境无法直接下载语言包,此时需要按照如下步骤手动导入语言包:
首先需要告诉 wiki.js 当前运行在离线环境中,因此在配置文件中进行如下修改:
- offline: false
+ offline: true
之后在安装目录下创建一个文件夹 data/sideload 用来存放离线资源,比如我是安装在 /opt/wiki/ 下,配置文件中配置的数据文件夹为 /opt/wiki/data ,那么我就创建一个新的文件夹 /opt/wiki/data/sideload 即可。
官方提供的语言包资源可以在这里下载:https://github.com/Requarks/wiki-localization
务必下载 locales.json ,之后下载您需要的语言包(如 zh.json )。
将下载好的 locales.json , zh.json , en.json 等资源拷入上面创建好的文件夹中。
最后重启服务即可:
systemctl restart wiki