PVE 使用QDevice作为外部投票节点

新版PVE cluster不支持双机HA,因此cluter ha至少要三个节点以上。不过也可以使用外部投票机制,创建一个2+1的集群,外部设备仅作为投票用,不参与虚拟化其他工作。

  • 外部设备上安装 QDevice-Net
$ sudo apt install corosync-qnetd -y 

因为该设备仅作为投票用,因此找一个行能较低,功耗低的开发板足矣。这里使用一个跑在nextcloud 的rock64,尽量把剩余资源利用上。

  • 在所有PVE节点中安装corosync-qdevice
# apt install corosync-qdevice -y 
  • 在PVE集群中加入投票节点
# pvecm qdevice setup 192.168.0.249

需要注意的是,添加投票节点时,确保所有集群节点都处于在线状态,此处192.168.0.249为上面的rock64。

Ubuntu中使用cockpit管理kvm虚拟机

cockpit

使用cockpit管理kvm需要安装cockpit本身,还有cockpit-machines组件来管理虚拟机

$ sudo apt update
$ sudo apt install -y kpit cockpit-machines
$ sudo systemctl start cockpit

kvm、qemu、libvirt

安装kvm、qemu、libvirt相关工具

$ sudo apt install qemu qemu-kvm libvirt-bin  bridge-utils  virt-manager
$ sudo systemctl start libvirtd
$ sudo systemctl enable libvirtd

创建虚拟机无法启动network相关问题

在安装完成kvm后从cockpit中创建虚拟机时报错:libvirtError: Requested operation is not valid: network ‘default’ is not active,在用virsh 尝试激活default network失败。

$ sudo virsh net-start default

error: Failed to start network default
error: internal error: Failed to initialize a valid firewall backend

从错误信息中可以看到,无法初始化防火墙后端,需要安装firewalld,然后重启libvirtd

$ sudo apt update && sudo apt install firewalld -y
$ sudo systemctl enable --now firewalld
$ sudo systemctl restart libvirtd****

opensuse 安装使用 zerotier

opensuse安装编译环境

$  sudo zypper install -y gcc clang make

编译安装zerotier

$ git clone https://github.com/zerotier/ZeroTierOne
$ cd ZeroTierOne
$ make
$ sudo make install

启动并加入zerotier网络

$ sudo nohup zerotier-one &
$ zerotier-cli join <zerotier network id>

 

 

nginx反向代理出现阻止载入混合活动内容的错误

最近在访问wordpress后台时,经常出现页面加载不全,甚至是完全空白的情况。在打开浏览器调试后发现错误信息:************ was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint ‘***************‘. This request has been blocked; the content must be served over HTTPS.

了解该错误造成原因是由于新版浏览器默认禁止混合内容的载入,通过浏览器站点设置可以解决。

另外考虑近期用了给wordpress做了反向代理后才出现这种情况,所以想着是否nginx反向代理是否有设置可以解决改问题,解决方法是在nginx配置文件server或location域中添加:

add_header Content-Security-Policy upgrade-insecure-requests;

然后重启nginx即可,这样在不同的电脑上就不用调整每个浏览器的设置

OpenSuse 编译 deepin-screen-recorder

安装依赖库

 sudo zypper install -y libqt5-qtbase-devel libqt5-linguist-devel xcb-util-devel libdframeworkdbus-devel dtkgui-devel dtkwidget-devel libqt5-qtx11extras-devel libqt5-qtmultimedia-devel procps-devel libXcomposite-devel libXtst-devel libXcursor-devel 
sudo ln -s /usr/bin/lupdate-qt5 /usr/bin/lupdate
sudo ln -s /usr/bin/lrelease-qt5 /usr/bin/lrelease
sudo ln -s /usr/bin/qmake-qt5 /usr/bin/qmake

拉取deepin-screen-recorder

$ git clone https://github.com/linuxdeepin/deepin-screen-recorder
$ cd deepin-screen-recorder
$ git checkout master

拉取回来的默认分支为uos,需要切换到master分支

  • 修改istream.tcc在#include后添加 #undef min
vim /usr/include/c++/10/bits/istream.tcc 
#undef min
  • 修改以下文件,引用QPainterPath
  1. src/utils.cpp
  2. src/widgets/shapeswidget.cpp
  3. src/widgets/tooltips.cpp
#include <QPainterPath>

编译

$ mkdir build
$ cd build
$ qmake ..
$ make -j$(nproc)
$ sudo make install