和x86网络任务类似建议使用原版armbian运行多开网络,官方计算任务镜像由于关了swap,可开数量会大大减少,并且会增加网络任务死掉的几率
原版armbian镜像在论坛就有下载地址
第一步流程全览:
安装原版armbian------启动N1或你的其他设备------ssh登录设备---执行命令-----输入对应的信息---后台查看状态
安装armbian,这里以n1为例子,下载armbian的镜像,版本要求:内核大于4.0
烧录镜像到u盘,注意,绝大多数n1安装armbian都需要修改设备驱动,
u盘插到n1启动,在路由器查看到ip后通过ssh登录设备
登录成功后执行./install.sh安装到emmc,
这里解释一下,我知道系统可以跑在u盘里,但是呢,多开时,内存占用是很大的,这时候就需要swap(虚拟内存)支持了,虚拟内存数据是存在硬盘上或者emmc里的,但emmc读写速度通常远高于硬盘和u盘,这样系统更不容易变慢
安装到emmc后重启n1,这时候用你刚才设置的root密码登录root用户
第二步
现在开始多开了
复制命令运行后会先安装一些依赖,如果中途出现错误,请截图并回复这个帖子
二合一, 注:debian 默认未安装sudo ,请去掉命令里的sudo
代码: 全选
wget https://raw.githubusercontent.com/qinghon/BonusCloud-Node/master/aarch64/install.sh -O install.sh&&sudo bash install.sh -g
安装代码: 全选
bash install.sh -g
6/20更新 记得重跑一遍下载脚本
- 可指定并自动记住mac前缀
- -H参数指定Ip
- -gt查看多开的网络的容器
- 三平台的脚本合并了,有问题集中解决显示创建的多开容器代码: 全选
bash install.sh -gt
指定IP代码: 全选
bash install.sh -g -H
choose plan:
1) run as base progress,only one(只运行基础进程,兼容性差,内存低,单开)
2) run openwrt as docker,more(运行在docker里,兼容性好,内存占用高,可多开)
CHOOSE [1|2]:2
amd64: Pulling from qinghon/bxc-net
Digest: sha256:c0ceee60f2f6c1f524352ebcaf1ae62e92ae49b0fc03f2a57631e0d9b9268b33
Status: Image is up to date for qinghon/bxc-net:amd64
Input bcode:2
Input email:wusheng123@gmail.com
bcode: 0614-dd658122-5bd7-4b04-8607-3a570c2d9c1a
Set mac address:
71:21:16:09:c2:41
Set ip address:
192.168.1.250
和x86相同,支持批量创建,bcode处可直接输入创建数量
查看当前开了多少如果你有很多个类似的设备,我建议用portainer来管理,运行以下命令并访问这台设备的ip地址加9000端口代码: 全选
docker ps --filter="ancestor=qinghon/bxc-net:arm64" --format "{{.ID}}"|grep -c ''
例如http://192.168.1.2:9000/ 首次使用时设置密码后并选择local选项代码: 全选
docker volume create portainer_data docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
注意理论支持100左右,但实际上要想绝对稳定运行,建议不超过50,和一台流量跑的贼欢的x86收益不相上下虽然支持多开并且能开很多并正常运行,但是重启的时候这些容器是同时启动的,很容易爆内存而导致很多启动失败,解决办法是手动拉起来,每次10个正确做法是没事别瞎重启代码: 全选
docker container start `docker ps -a -f "status=exited" -f "ancestor=qinghon/bxc-net:arm64" --format "{{.ID}}"|head -n 10`
第一次安装时需要设定网络ip范围
在arm64的各种盒子中,多开采用的是macvlan(你可以理解为像vmware那种桥接模式):
和主机在同一网段例如盒子在192.168.0.0/24网段,开出来的网络任务虚拟机也在192.168.0.0/24这个网段,但不遵循路由器的dhcp设置所以你在路由器里不能直接分配ip或者直接固定ip到容器,
如果不设置会与其他路由器下的设备ip地址冲突,结果就是无法绑定
所以需要手动设置ip地址范围,这个范围采用的是CIDR格式这里可以用在线计算器https://tool.chinaz.com/Tools/subnetmask例如:192.168.0.128/25 代表的是192.168.0.128-192.168.0.254共127个ip地址 (通常情况下一台N1啥的也够用了)
注意,这个设定了过后就不便修改,请提前确定好网络范围,建议使用软路由用户单独设置网段
我的栗子:
我的内网DHCP范围设置在192.168.1.50-192.168.1.100
那么N1多开设置ip范围时,我设置的是192.168.1.128/25 ,代表的是192.168.1.128-192.168.1.254这个范围去给N1折腾,注意这里请尽量和DHCP服务器设置分开
如果你要设置范围为192.168.1.128-192.168.1.192 共64个IP,那么就设置为192.168.1.128/26
如此类推/27为32个,/28为16个
注意:如果你真的设定错了,以下命令删除,前提是没有还没有开始创建容器代码: 全选
docker network rm bxc-macvlan
虽然能显示网络任务是否正常,但对批量显示暂时支持不太好,后续我会改进代码: 全选
bash install.sh -t
已知问题:注意:
每创建一个容器都会自动绑定,无需手动绑定,并且为了节约内存,在APP中或者其他绑定器中扫描不到这个容器IP
在创建是因为指定了mac地址,偶尔会遇上不知道为啥并且让我莫名奇妙而且头疼的错误
错误看起来像这样 出现几率约为50% PS:x86也会遇到但这个错误不会使用你的bcode,并且在遇到这个错误后,我会将它删掉,你需要做的就是用相同的码再运行一次Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused "process_linux.go:402: container init caused \"process_linux.go:385: running prestart hook 0 caused \\\"error running hook: exit status 1, stdout: , stderr: time=\\\\\\\"2019-06-14T15:38:07+08:00\\\\\\\" level=fatal msg=\\\\\\\"failed to add interface veth1b84c11 to sandbox: error setting interface \\\\\\\\\\\\\\\"veth1b84c11\\\\\\\\\\\\\\\" MAC to \\\\\\\\\\\\\\\"35:ba:e6:a6:66:e2\\\\\\\\\\\\\\\": cannot assign requested address\\\\\\\"\\\\n\\\"\"": unknown
Error: failed to start containers: cb737449f18b