MessageChannel API允许我们创建一个新的消息通道,并通过它的两个MessagePort属性发送数据。

但是在拷贝包含function的对象时候会报错,提示无法copy

示例代码:

function copy(e) {
    const { port1, port2 } = new MessageChannel()
    port1.postMessage(e)
    return new Promise((resolve, reject) => {
        port2.onmessage = (event) => {
            resolve(event.data)
        }
    })
}

const test =  async function (params) {
    const a = {
        a: 1,
        b: 2,
    }
    const b = await copy(a)
    a.a = 5
    console.log(a, b);
}
test()

服务器资源

数量:3
CPU:2
内存:4

具体信息如下表:
| 系统类型 | IP地址 | 节点角色 | CPU | Memory | Hostname |
| :------: | :--------: | :-------: | :-----: | :---------: | :-----: |
| centos-7.5 | 192.168.31.92 | master | 2h | 4G | node-1 |
| centos-7.5 | 192.168.31.93 | master | 2h | 4G | node-2 |
| centos-7.5 | 192.168.31.94 | worker | 2h | 4G | node-3 |

- 阅读剩余部分 -

系统:Ubuntu 20.04.4 LTS

软件:dnsmasq

安装dnsmasq

apt install dnsmasq -y

操作dnsmasq的常用命令


service dnsmasq status # 查看状态
service dnsmasq stop # 停止
service dnsmasq restart # 重启
service dnsmasq start # 启动

关闭systemd-resolve

因为systemd-resolve服务会占用53端口,如果我们的DNS服务要绑定到0.0.0.0上,就会有冲突。

systemctl stop systemd-resolved # 关闭systemd-resolve

systemctl disable systemd-resolved  # 也可以用mask完全屏蔽

修改配置

安装好dnsmasq之后,默认的配置在/etc/dnsmasq.conf

创建一个目录,用来放自定义的dnsmasq配置文件

mkdir /data/dnsmasq

创建上级DNS配置文件

touch /data/dnsmasq/resolv.conf

内容如下

nameserver 119.29.29.29
nameserver 114.114.114.114
nameserver 8.8.8.8

创建dnsmasq.d目录,用来存放自定义的配置

mkdir /data/dnsmasq/dnsmasq.d

创建自定义hosts文件

touch /data/dnsmasq/dnsmasq.hosts

之后修改配置文件

# 端口,默认53
port=53


# 上级DNS配置
resolv-file=/data/dnsmasq/resolv.conf

# 开启严格顺序,这样查询上级DNS会从上到下依次查询
strict-order

# 修改监听配置,0.0.0.0允许任何IP访问
listen-address=0.0.0.0

# 自定义host
addn-hosts=/data/dnsmasq/dnsmasq.hosts

# 指向自定义配置目录
conf-dir=/data/dnsmasq/dnsmasq.d,*.conf

创建解析

解析说明:

# SRV 记录
#srv-host=<_service>.<_prot>.[<domain>],[<target>[,<port>[,<priority>[,<weight>]]]]
# A, AAAA 和 PTR 记录 
#host-record=<name>[,<name>....],[<IPv4-address>],[<IPv6-address>][,<TTL>]
# TXT 记录
#txt-record=<name>[[,<text>],<text>]
# PTR 记录 
#ptr-record=<name>[,<target>]
#naptr-record=<name>,<order>,<preference>,<flags>,<service>,<regexp>[,<replacement>]
# CNAME 别名记录
#cname=<cname>,<target>[,<TTL>]

比如说我现在需要把test.ibfpig.com通过A记录解析到本地的127.0.0.1

创建一个conf文件,比如ibfpig_com.conf

内容如下:

host-record=test.ibfpig.com,127.0.0.1

比如说我现在需要把*.ibfpig.top这样的泛域名解析到192.168.1.1

就可以追加内容如下:


address=/.ibfpig.top/192.168.1.1


修改配置文件后需要重启服务

步骤

  1. 将云服务挂载为本地磁盘
  2. 创建备份磁盘
  3. 指定时间机器的磁盘为备份磁盘

将云服务挂载为本地磁盘

将云服务挂载为本地磁盘的方案有很多,目前有很多的第三方工具都支持,比如Mountain Duck、S3fs、Goofys,这里选择juicefs,uicefs为对象存储的元数据提供了缓存,能极大的优化对挂载磁盘的list,get等操作。

  1. 注册并登陆juicefs

  2. 创建文件系统,因为我有很多其他的云服务都使用的腾讯云,所以我这里选择的是腾讯云的COS,小伙伴们可以根据自己的需求选择对应的服务

iShot2021-08-31 17.03.35.png

  1. 根据指引,挂载到Mac上

这里可以参考juicefs官网的提示,使用两行命令来操作

WechatIMG414.png

但是这里有个前提条件,就是Mac必须先安装osxfuse,非m1的电脑的安装过程我印象中下载之后直接安装就可以了,m1的系统里需要安装4.1以上的版本,这里可以直接去官网下载安装。

安装好之后,在系统的偏好设置=》安全性与隐私这里会有提示要安装一个什么扩展,点左下角的小锁之后点击安装扩展,之后会有个弹窗提示进入恢复系统,然后提示你点击关机。

关机之后,非m1的系统是cmd+R 进入恢复系统,m1是长按开机键进入恢复系统。进入恢复系统后,选取实用工具->启动安全性实用工具。具体流程可以参考在M1 Macbook上使用SSHFS挂载SFTP协议文件系统

安装好之后就可以继续操作挂载磁盘了。

两行命令中的第一行是下载juicefs,并给予juicefs权限,这里我选择直接克隆juicefs的github代码来编译,因为go1.17之后的版本支持arm系统了,所以我选择了直接编译。

自己克隆+编译的方式很简单:

git clone https://github.com/juicedata/juicefs.git ~/juicefs

cd ~/juicefs

make

chmod +x ./juicefs

之后就会在目录里发现一个juicefs的可执行文件,我们在接下来就进行挂载

cd ~/juicefs

sudo ./juicefs mount xxxxxxxxxxx /jfs 

这里的第二行的命令和juicefs文档上的第二行命令保持一致就可以了,如果需要把这个磁盘挂载到其他目录,可以修改/jfs为其他目录的路径

之后根据提示,输入云服务的相关凭证即可。

在访达中按下快捷键cmd+shift+c就能看到挂载的所有磁盘了。

进入到刚刚挂载的磁盘中,继续创建备份磁盘。

创建备份磁盘

cd /jfs
hdiutil create -size 1t -type SPARSEBUNDLE -fs "HFS+J" "Time Machine.sparsebundle"

这里的1t就是备份磁盘的大小,Time Machine.sparsebundle是文件的名称。

执行完成之后就能看到这个镜像文件了,之后双击打开即可。

iShot2021-08-31 17.37.39.png

之后右键上图红圈位置,可以给磁盘改名字,我这里就叫time

指定时间机器的磁盘为备份磁盘

我们可以进入/Volumes/Time中看一下,如果上一步挂载好了,这里会也会显示出来。

之后执行命令

sudo tmutil setdestination /Volumes/Time

搞定,然后打开系统偏好设置的世界机器看一下吧~

iShot2021-08-31 17.41.20.png

至此,在云服务上备份Mac就搞定了,但是相比于直接那个硬盘来备份,还是有些缺陷的

优缺点

优点:

  1. 不需要单独购买硬盘,不用担心硬盘损坏
  2. 不需要随身携带一个硬盘,有网就能用

缺点:

  1. 必须有稳定的网络才可以
  2. 在网络差的情况下,如果挂载了磁盘,会导致访达卡顿
  3. 需要持续为云服务付费
  4. 如果我电脑崩了,我需要在我电脑上再挂载一次之后才能恢复……

所以,基于以上的优缺点,我想了想,还是买了一块移动硬盘……然后移动硬盘和云服务备份同时使用。

参考文章:

https://kane.mx/posts/2019/using-s3-as-device-for-mac-time-machine-backup/

https://www.wannaexpresso.com/2021/03/12/m1-macbook-sshfs/

Elasticsearch从6.8开始,就已经允许免费用户使用X-Pack的安全功能,如此,裸奔的ES就有基础的安全认证了

我们基于docker-compose来搭建该环境

先找个目录来存放docker-compose.yaml以及es的数据和日志等文件

我这里存放在~/DockerFile/es

创建docker-compose文件以及数据文件

mkdir work # 数据和日志都会放这里
mkdir work/data # 存放数据
mkdir work/logs # 存放日志
touch work/elasticsearch.yml # es相关配置
touch work/kibana.yml  # kibana相关配置

- 阅读剩余部分 -