init
This commit is contained in:
		
							parent
							
								
									dfe3b6b16f
								
							
						
					
					
						commit
						0062d0d3eb
					
				@ -1 +1,6 @@
 | 
			
		||||
# NASP Wikipedia
 | 
			
		||||
NASP(Network Architecture & System Protocol research group)百科全书,开放编辑,欢迎纠错与补充!
 | 
			
		||||
 | 
			
		||||
- [集群注册登录说明](docs/registry.md)
 | 
			
		||||
- [实验机使用说明](docs/testbed.md)
 | 
			
		||||
- [网络配置说明](docs/networking.md)
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								docs/attachments/6386bc2c5a9d3dc7dc0c9ee5a4b67ed.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								docs/attachments/6386bc2c5a9d3dc7dc0c9ee5a4b67ed.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 135 KiB  | 
							
								
								
									
										39
									
								
								docs/networking.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								docs/networking.md
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,39 @@
 | 
			
		||||
# 网络配置说明
 | 
			
		||||
现集群共有20台服务器、3个网络。
 | 
			
		||||
 | 
			
		||||
## 低速互联网络
 | 
			
		||||
通过标准以太网交换机互联的网络,用于管理、访问外网。
 | 
			
		||||
 | 
			
		||||
- 网段:`192.168.16.0/24`
 | 
			
		||||
- 网段:`2001:da8:bf:300::/64`
 | 
			
		||||
	- IPv6网段全球可路由,但出于安全考虑,目前仅开放`12022`端口
 | 
			
		||||
- 带宽:1Gbps(外网带宽<100Mbps)
 | 
			
		||||
- 固定IP:
 | 
			
		||||
	- `192.168.16.1` HiWiFi路由器,提供DHCP服务
 | 
			
		||||
	- `192.168.16.101-114`  g1-g14实验机
 | 
			
		||||
	- `192.168.16.115-116` lm1、lm2实验机
 | 
			
		||||
	- `192.168.16.117-120` g17-g20实验机
 | 
			
		||||
		- 其中,g18提供诸多集群服务,如**跳板机**、上网代理、git、dns服务器、镜像源等。
 | 
			
		||||
 | 
			
		||||
## 高速互联网络
 | 
			
		||||
通过RoCEv2互联的网络,用于RDMA实验、分布式机器学习训练等。
 | 
			
		||||
 | 
			
		||||
- 网段:`12.12.12.0/24`
 | 
			
		||||
- 带宽:100Gbps
 | 
			
		||||
- 支持RDMA
 | 
			
		||||
- 固定IP:
 | 
			
		||||
	- `12.12.12.101-114`  g1-g14实验机。
 | 
			
		||||
 | 
			
		||||
## 校园网
 | 
			
		||||
通过以太网交换机连接的校园网,用于访问外网。
 | 
			
		||||
 | 
			
		||||
- 网段:`166.111.130.1/24`
 | 
			
		||||
- 带宽:100Mbps
 | 
			
		||||
- 使用前需要准入代认证
 | 
			
		||||
 | 
			
		||||
### 准入代认证流程
 | 
			
		||||
- 登录<https://usereg.tsinghua.edu.cn>
 | 
			
		||||
- 左侧菜单栏准入功能-[准入代认证](http://usereg.tsinghua.edu.cn/ip_login_import.php)
 | 
			
		||||
- 输入**目标机器的IP地址**与**你的INFO密码**,勾选校外,点击登录
 | 
			
		||||
	- 在目标机器上,运行`ifconfig`或者`ip a s`,找到`166.111`打头的IP,即为目标IP地址
 | 
			
		||||
- 在机器上修改默认网关:`ip route add default via 166.111.130.1`;如果报错已存在,检查并删除已有的默认网关项
 | 
			
		||||
							
								
								
									
										79
									
								
								docs/registry.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										79
									
								
								docs/registry.md
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,79 @@
 | 
			
		||||
# 集群注册登录说明
 | 
			
		||||
集群登录账户通过[NASP Registry](https://git.nasp.ob.ac.cn/NASP/registry)仓库管理。
 | 
			
		||||
 | 
			
		||||
## 使用方法
 | 
			
		||||
 | 
			
		||||
集群的跳板机(`nasp.ob.ac.cn:36022`)、重装后的实验机(`g1`-`g16`),均强制使用秘钥对的方法登录,不能通过密码登录。如果你没有现成的秘钥对,需要先创建一个。
 | 
			
		||||
 | 
			
		||||
你需要把**公钥**上传到仓库的`/authorized_keys/<your_user_name>/`目录下。路径中的用户名将成为你在实验机上的用户名,需要满足unix用户名标准,即:以小写字母开头,只能包含小写字母、数字、连字符和下划线。你可以用下面的命令测试你的用户名:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
check_username() {
 | 
			
		||||
    if ( echo $1 | grep -qxE "^[a-z][-a-z0-9_]*\$" ); then
 | 
			
		||||
        echo "GOOD"
 | 
			
		||||
	else
 | 
			
		||||
        echo "BAD"
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
check_username "111"
 | 
			
		||||
# BAD
 | 
			
		||||
check_username "a111"
 | 
			
		||||
# GOOD
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
**注意:使用非法的用户名可能导致集群配置崩溃!**
 | 
			
		||||
 | 
			
		||||
`/authorized_keys/<your_user_name>/`目录下可以包含一个或多个文件,每个文件中可以包含一个或多个(由换行符分隔开的)公钥,可以按照你的喜好安置文件。
 | 
			
		||||
 | 
			
		||||
[NASP Registry](https://git.nasp.ob.ac.cn/NASP/registry)仓库的主分支(main)受到保护,用户无法直接向其推送更新。所以你需要:
 | 
			
		||||
- 如果你是新用户,联系管理员,把你加入NASP组织;
 | 
			
		||||
- 克隆仓库到本地,创建一个新的分支:`git clone https://git.nasp.ob.ac.cn/NASP/registry && cd registry && git checkout -c <your_branch_name> `
 | 
			
		||||
- 根据上面的指导,添加你的公钥;
 | 
			
		||||
- 在修改完成之后,提交修改,推送新分支到远端:`git add -A && git commit -m "add my key" && git push -u origin <your_branch_name>`
 | 
			
		||||
- 在网站上创建[合并请求(mr)](https://git.nasp.ob.ac.cn/NASP/registry/compare/main...main),拉取从你的分支合并到主分支;可参考:[#41](https://git.nasp.ob.ac.cn/NASP/registry/pulls/41)
 | 
			
		||||
- 找到另一位在NASP组织内的同学,让其批准你的合并请求,如图:
 | 
			
		||||
- 随后,你可以进行合并操作(创建压缩提交),并删除你的分支。
 | 
			
		||||
 | 
			
		||||
至多五分钟后,你就可以登录跳板机。跳板机的地址是`nasp.ob.ac.cn`,用户名固定为`ssh`,端口号`36022`:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
ssh -p 36022 ssh@nasp.ob.ac.cn
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
随后,在跳板机上,你可以用你的用户名登录实验机(端口号`12022`):
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
ssh -p 12022 <your_user_name>@g7
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
通过配置ssh的`ProxyJump`选项,你可以将上两步操作合二为一,做到跳板机对用户透明:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
# the same for scp/sftp
 | 
			
		||||
ssh -p 12022 -o ProxyJump=ssh@nasp.ob.ac.cn:36022 <your_user_name>@g7
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
或者在`~/.ssh/config`里面配置:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
Host g7
 | 
			
		||||
  HostName g7
 | 
			
		||||
  User <your_user_name>
 | 
			
		||||
  Port 12022
 | 
			
		||||
  ProxyJump ssh@nasp.ob.ac.cn:36022
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
从而能够在vscode中远程连接。
 | 
			
		||||
 | 
			
		||||
## 目录结构
 | 
			
		||||
 | 
			
		||||
- `authorized_keys` 用户公钥
 | 
			
		||||
	- 若干以用户名命名的文件夹
 | 
			
		||||
		- 若干用户公钥文件
 | 
			
		||||
	- `authorized_keys` 历史遗留的公钥(将被移除)
 | 
			
		||||
- `scripts` 若干配置脚本
 | 
			
		||||
	- `jumpserver_cron.sh` 跳板机上的定时任务脚本
 | 
			
		||||
	- `jumpserver_deploy.sh` 跳板机部署脚本
 | 
			
		||||
	- `testbed_cron.sh` 实验机上的定时任务脚本
 | 
			
		||||
	- `testbed_deploy.sh` 实验机部署脚本
 | 
			
		||||
	- `nasp` nasp用户组的sudo配置
 | 
			
		||||
							
								
								
									
										2
									
								
								docs/services.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								docs/services.md
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,2 @@
 | 
			
		||||
# NASP集群服务
 | 
			
		||||
#todo
 | 
			
		||||
							
								
								
									
										92
									
								
								docs/testbed.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										92
									
								
								docs/testbed.md
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,92 @@
 | 
			
		||||
# 实验机使用说明
 | 
			
		||||
这里描述的是重装后的实验机的使用方法。已重装的机器:
 | 
			
		||||
- g7、g9(2023-11-22)
 | 
			
		||||
- g4(2023-11-24)
 | 
			
		||||
 | 
			
		||||
本文档默认你已经能够登录实验机,参考:[registry](registry.md)。
 | 
			
		||||
 | 
			
		||||
## sudo权限
 | 
			
		||||
只有部分命令能够通过sudo免密运行,定义在文件[nasp](https://git.nasp.ob.ac.cn/NASP/registry/src/branch/main/scripts/nasp)中,列出如下:
 | 
			
		||||
- `docker`
 | 
			
		||||
- `reboot`
 | 
			
		||||
- `whoami`
 | 
			
		||||
- `nvidia-smi`
 | 
			
		||||
- `shutdown`
 | 
			
		||||
- `ufw`
 | 
			
		||||
- `ip`
 | 
			
		||||
 | 
			
		||||
如果你需要以root权限运行其它命令,请联系管理员。
 | 
			
		||||
 | 
			
		||||
## 启动docker容器
 | 
			
		||||
实验机使用容器化管理。所有实验环境均在docker环境中,裸机环境仅用于启动容器、配置防火墙等。
 | 
			
		||||
 | 
			
		||||
裸机环境均配置了`dnew`命令([源码](https://git.nasp.ob.ac.cn/NASP/configurations/src/branch/dev/testbed/scripts/dnew)),方便用户交互式地启动容器。
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
================== dnew ===================
 | 
			
		||||
=== contact: xd21@mails.tsinghua.edu.cn ===
 | 
			
		||||
Use GPU? [yN]: y  # 按需选择,默认否
 | 
			
		||||
Use RDMA? [yN]: y  # 按需选择,默认否
 | 
			
		||||
Image name (default: git.nasp.ob.ac.cn/nasp/nasp-ubuntu):  # 如果没有特殊要求,直接回车
 | 
			
		||||
Start up command (default: /etc/startup.sh):  # 如果没有特殊要求,直接回车
 | 
			
		||||
Will run:
 | 
			
		||||
=====
 | 
			
		||||
sudo docker run -d --net=host -v /home2:/home2 \
 | 
			
		||||
    --cap-add=SYS_NICE --cap-add=IPC_LOCK \
 | 
			
		||||
    --security-opt seccomp=unconfined --ulimit memlock=-1:-1 \
 | 
			
		||||
    --restart=unless-stopped \
 | 
			
		||||
    --name dictxiong_231124-165705 \
 | 
			
		||||
    --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=all \
 | 
			
		||||
    --device=/dev/infiniband/rdma_cm --device=/dev/infiniband/issm0 \
 | 
			
		||||
    --device=/dev/infiniband/umad0 --device=/dev/infiniband/uverbs0 \
 | 
			
		||||
    -it git.nasp.ob.ac.cn/nasp/nasp-ubuntu /etc/startup.sh
 | 
			
		||||
=====
 | 
			
		||||
Start the container? [yN]:  # 检查上面的命令,选择是否执行
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
启动后,`dnew`会给出进入容器的方法,可以保存备用。
 | 
			
		||||
 | 
			
		||||
常用docker命令:
 | 
			
		||||
- `sudo docker ps -a` 显示所有容器
 | 
			
		||||
- `sudo docker start <container>` 启动指定的容器
 | 
			
		||||
- `sudo docker exec -it <container> bash` 启动指定容器中的`bash`
 | 
			
		||||
- `sudo docker stop <container>` 停止指定的容器
 | 
			
		||||
- `sudo docker rm <container>` 删除指定的容器
 | 
			
		||||
 | 
			
		||||
## 使用docker容器
 | 
			
		||||
在容器内部,用户拥有root权限,可以做任何想做的事情。如果搞坏了docker内部环境,直接删除,重新创建一个容器即可。
 | 
			
		||||
 | 
			
		||||
容器默认配置为开机自动启动(`--restart=unless-stopped`),除非手动将其停止。容器在启动时会自动执行启动脚本(默认`/etc/startup.sh`),你可以在这里面添加你自己的服务。
 | 
			
		||||
 | 
			
		||||
### 安装软件
 | 
			
		||||
默认的`git.nasp.ob.ac.cn/nasp/nasp-ubuntu`镜像是一个基于Ubuntu 20的、包含cuda和rdma支持的镜像。要安装软件,使用`apt`,用法与物理机上无异。
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
sudo apt update
 | 
			
		||||
sudo apt install zsh
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### 容器网络
 | 
			
		||||
容器在运行时默认指定了`--net=host`,这意味着容器内外的网络是完全共享的。在容器内监听一个端口,等价于在物理机上监听一个端口。`ifconfig`、`ip`、`netstat`等命令有与物理机上一致的效果。
 | 
			
		||||
 | 
			
		||||
用户可以很容易把容器内的服务暴露给机器外,包括web、ssh等。
 | 
			
		||||
 | 
			
		||||
### 容器内启动ssh server
 | 
			
		||||
你可以在容器内启动一个独立的ssh服务端,从而能够自跳板机直接访问到容器内,方便vscode等应用远程连接。
 | 
			
		||||
 | 
			
		||||
- 配置`/etc/ssh/sshd_config`,取消掉`#Port 22`的注释,并把它改成一个未被占用的端口;
 | 
			
		||||
- 如果你使用公钥登录(推荐),把你的公钥放到`~/.ssh/authorized_keys`文件中;如果你使用密码登录(务必使用强密码),使用`passwd`命令设置密码,修改`/etc/ssh/sshd_config`,允许root用户使用密码登录`PermitRootLogin yes`(不推荐)。
 | 
			
		||||
- 启动ssh服务端:`/etc/init.d/ssh start`
 | 
			
		||||
- 检查容器的启动脚本,确保里面包含了ssh:`vim /etc/startup.sh`
 | 
			
		||||
- 在**物理机**上,开放你的ssh端口:`sudo ufw allow <your_port>`
 | 
			
		||||
 | 
			
		||||
随后,你就能从跳板机直接访问容器内部了。如:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
ssh -p <your_port> -o ProxyJump=ssh@nasp.ob.ac.cn:36022 <your_user_name>@g7
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## 自动开关机
 | 
			
		||||
按照FIT楼的消防要求,放置在4-103的服务器应当每晚关机。自动关机的流程是:每晚的22:59,启动一个[关机脚本](https://git.nasp.ob.ac.cn/NASP/configurations/src/branch/dev/testbed/scripts/schedule-poweroff.sh),该关机脚本的逻辑是:检查是否存在文件`/tmp/skip-poweroff`;若存在,则将其删除,然后脚本直接退出;若不存在,则启动时长为一小时的自动关机。机器将在23:59自动关闭。
 | 
			
		||||
 | 
			
		||||
自动开机是通过Wake-on-lan实现的,每天早上,由g18分批向实验机发送唤醒包。相关配置文件可以在[这里](https://git.nasp.ob.ac.cn/NASP/configurations/src/branch/dev/g18/wakeonlan)找到。
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user