Skip to main content
开放网络的先行者与推动者—星融元
加入我们技术支持(Support)  TEL:(+86)4000989811

配置指导:Ceph存储集群部署

Ceph存储集群部署方案

1 目标

本文档将简要介绍分布式存储Ceph的基本概念,以及选用Asterfusion CX-N系列超低时延交换机进行组网,部署一个3节点存储集群的具体方法。

2 概要介绍

2.1 关于Ceph

Ceph是一个目前非常流行且应用广泛的SDS(Software Defined Storage)解决方案。Ceph官网上用这句话简明扼要地对其进行定义:“Ceph is a unified, distributed storage system designed for excellent performance, reliability and scalability.” 翻译为中文:“Ceph是一种为优秀的性能、可靠性和可扩展性而设计的统一的、分布式的存储系统。”这句话可以作为理解Ceph系统设计思想和实现机制的基本出发点。在这个定义中,应当特别注意“存储系统”这个概念的两个修饰词,即“统一的”和“分布式的”。

具体而言,“统一的”意味着Ceph可以使用一套存储系统来同时提供对象存储、块存储和文件系统存储三种功能,以便在满足不同应用需求的前提下简化部署和运维。而“分布式的”在Ceph系统中则意味着真正的无中心结构和没有理论上限的系统规模可扩展性。在实践当中,Ceph可以被部署于上千台服务器上。

2.2 关于Asterfusion CX-N系列超低时延交换机

星融元Asterfusion自主开发的面向数据中心网络的CX-N系列超低时延交换机,可为云数据中心中的高性能计算集群、存储集群、大数据分析、高频交易、Cloud OS全面融合等多业务场景提供高性能的网络服务。

本次验证部署的存储集群,选用了两台CX-N系列CX308P-48Y-N进行组网,这款1U交换机拥有48个25G/10G SFP28光口,8个100GE/40GE QSFP28光口,交换容量高达4.0Tbps。

3 存储集群组件介绍

Ceph集群最初有MON、OSD、MDS、RGW共四个服务组件,从Luminous版开始引入了MGR组件,用于采集和统计集群的各种指标。L版之后开始必须部署MGR组件,不过即使MGR服务停止运行,整个集群的IO还是可以进行的,只是各种指标不会继续更新,并且与其相关的命令行无法响应(例如:ceph status)。

本次部署的Ceph版本为N版,各组件功能说明如下。

  • MON:控制器服务,主要维护集群中的各种MAP,同时也提供安全认证服务,是必要组件;
  • OSD:对象存储服务,负责处理数据的复制、恢复、回填与再均衡,是必要组件;
  • MGR:集群监控服务,负责监控整个集群的各种指标,并对外提供接口,是必要组件;
  • MDS:元数据服务,为CFS存储、维护元数据,只在使用CFS时部署,是非必要组件;
  • RGW:对象存储网关,对外提供RESTful访问接口,兼容S3与Swift,是非必要组件。

部署一个最小规模的Ceph集群,必须包含1个MON、1个MGR和2个OSD,否则整个集群是不健康的。因为,Monitor的Leader Elect机制要求集群中的MON最好为奇数,在生产环境中官方推荐使用3个MON来提供高可用性。而2个OSD则是为了满足双副本机制,以确保数据的安全性。

4 环境声明与部署前的准备

4.1 服务器系统与集群版本

  • CEPH:Nautilus 14.2.9(鹦鹉螺)稳定版;
  • 操作系统:Red Hat Enterprise Linux Server 7.6 (Maipo)。

4.2 节点配置与网络架构

主机名IP地址处理器内存硬盘节点角色
node-01192.168.2.81 管理网
192.168.20.81 存储网
32C64G100G 系统盘
200G*5 OSD
MON/OSD/MGR/RGW
node-02192.168.2.82 管理网
192.168.20.82 存储网
32C64G100G 系统盘
200G*5 OSD
MON/OSD/MGR/RGW
node-03192.168.2.83 管理网
192.168.20.83 存储网
32C64G100G 系统盘
200G*5 OSD
MON/OSD/MGR/RGW

集群中3个节点的配置信息如上所示。网络方面按官方推荐,使用管理网(前端)和存储网(后端)两个独立的网络,可以显著提高Ceph集群的性能表现。因此,每台节点上必须配备多块物理网卡(最低两块物理网卡)。

图4.1:官方文档推荐的存储集群网络方案
图4.2:实际部署方案的网络拓扑

4.3 部署前的网络环境准备

使用25G光纤模块将服务器与管理网、存储网交换机按照图4.2的拓扑连线。对于此次的验证方案,需要两个二层网络,在交换机上电开机后无需其他配置操作,只需要在完成连线后确认各个端口状态为UP且速率协商正常即可。

4.4 部署前的系统环境准备

需要在各个节点上都进行操作,下面的所有配置步骤均以节点node-01为例。

  • 禁用SELinux
[root@node-01 ~]# setenforce 0
[root@node-01 ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
  • 禁用防火墙
[root@node-01 ~]# systemctl stop firewalld
[root@node-01 ~]# systemctl disable firewalld
  • 配置IP地址

修改两块网卡的配置文件,如下所示:

[root@node-01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens192 
TYPE=Ethernet
BOOTPROTO=none
NAME=ens192
DEVICE=ens192
ONBOOT=yes
IPADDR=192.168.2.81
GATEWAY=192.168.2.1
DNS1=223.5.5.5
DNS1=223.6.6.6

[root@node-01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens224 
TYPE=Ethernet
BOOTPROTO=none
NAME=ens224
DEVICE=ens224
ONBOOT=yes
IPADDR=192.168.20.81
GATEWAY=192.168.20.1

[root@node-01 ~]# systemctl stop NetworkManager
[root@node-01 ~]# systemctl disable NetworkManager

[root@node-01 ~]# systemctl restart network
  • 配置主机名
[root@node-01 ~]# hostnamectl set-hostname node-01.open-source.cc
[root@node-01 ~]# cat /etc/hosts
......
# Cluster Node Resolve
192.168.2.81 node-01.open-source.cc node-01
192.168.2.82 node-02.open-source.cc node-02
192.168.2.83 node-03.open-source.cc node-03
......

配置国内YUM源

国内YUM源可选择的非常多,如:阿里、163、中科大、清华等,配置YUM源的具体方法此处不赘述,此处仅列出文档中的所有安装包操作依赖的源,如下所示:

[root@node-01 ~]# ll /etc/yum.repos.d/
total 28
-rw-r--r-- 1 root root 1441 May 19 09:00 CentOS7-Base-163.repo
-rw-r--r-- 1 root root  575 May 20 21:26 ceph.repo
-rw-r--r-- 1 root root  951 Oct  3  2017 epel.repo
-rw-r--r-- 1 root root 1050 Oct  3  2017 epel-testing.repo

5 安装步骤

首先,需要在集群中的所有节点上,安装Ceph软件包及其依赖。

[root@node-01 ~]# yum makecache fast
[root@node-01 ~]# yum install -y ceph ceph-radosgw

5.1 单节点部署

在节点node-01上进行以下操作,以完成单节点部署,后续再进一步介绍集群的扩容操作。

  • 生成集群ID
[root@node-01 ~]# uuidgen 
dd3807d6-0850-4080-8638-a47e946986ed
  • 创建配置文件
[root@node-01 ~]# touch /etc/ceph/ceph.conf
[root@node-01 ~]# cat /etc/ceph/ceph.conf 
[global]
fsid = dd3807d6-0850-4080-8638-a47e946986ed
mon host = 192.168.2.81
public network = 192.168.2.0/24
cluster network = 192.168.20.0/24
auth cluster required = none
auth service required = none
auth client required = none
osd journal size = 1024
osd pool default size = 2
osd pool default min size = 2
osd pool default pg num = 128
osd pool default pgp num = 128
osd crush chooseleaf type = 1
osd_mkfs_type = xfs
max mds = 5
mds max file size = 100000000000000
mds cache size = 1000000
mon osd down out interval = 900

[mon]
mon clock drift allowed = .50
  • 生成monmap文件
[root@node-01 ~]# monmaptool --create --add node-01 192.168.2.81 --fsid <ClusterID> /tmp/monmap
  • 准备mon的数据目录
[root@node-01 ~]# sudo -u ceph mkdir /var/lib/ceph/mon/ceph-node-01
  • 初始化mon服务
[root@node-01 ~]# sudo -u ceph ceph-mon --mkfs -i node-01 --monmap /tmp/monmap
[root@node-01 ~]# sudo -u ceph touch /var/lib/ceph/mon/ceph-node-01/done
  • 启用msgr2协议支持
[root@node-01 ~]# ceph mon enable-msgr2
  • 设置mon开机自启
[root@node-01 ~]# systemctl restart ceph-mon@node-01
[root@node-01 ~]# systemctl enable ceph-mon@node-01
  • 检查集群健康状态
[root@node-01 ~]# ceph status
  • 初始化OSD目录树
[root@node-01 ~]# ceph osd tree

[root@node-01 ~]# ceph osd crush add-bucket node-01 host
[root@node-01 ~]# ceph osd crush add-bucket node-02 host
[root@node-01 ~]# ceph osd crush add-bucket node-03 host

[root@node-01 ~]# ceph osd crush move node-01 root=default
[root@node-01 ~]# ceph osd crush move node-02 root=default
[root@node-01 ~]# ceph osd crush move node-03 root=default
  • 添加OSD
[root@node-01 ~]# ceph-volume lvm create --data /dev/sdb
[root@node-01 ~]# ceph-volume lvm create --data /dev/sdc
[root@node-01 ~]# ceph-volume lvm create --data /dev/sdd
[root@node-01 ~]# ceph-volume lvm create --data /dev/sde
[root@node-01 ~]# ceph-volume lvm create --data /dev/sdf
  • 设置OSD守护进程自启
[root@node-01 ~]# systemctl restart ceph-osd@0.service
[root@node-01 ~]# systemctl enable ceph-osd@0.service

[root@node-01 ~]# systemctl restart ceph-osd@1.service
[root@node-01 ~]# systemctl enable ceph-osd@1.service

[root@node-01 ~]# systemctl restart ceph-osd@2.service
[root@node-01 ~]# systemctl enable ceph-osd@2.service

[root@node-01 ~]# systemctl restart ceph-osd@3.service
[root@node-01 ~]# systemctl enable ceph-osd@3.service

[root@node-01 ~]# systemctl restart ceph-osd@4.service
[root@node-01 ~]# systemctl enable ceph-osd@4.service

5.2 扩容OSD节点

  • 在Node-02上添加OSD
[root@node-02 ~]# ceph-volume lvm create --data /dev/sdb
[root@node-02 ~]# ceph-volume lvm create --data /dev/sdc
[root@node-02 ~]# ceph-volume lvm create --data /dev/sdd
[root@node-02 ~]# ceph-volume lvm create --data /dev/sde
[root@node-02 ~]# ceph-volume lvm create --data /dev/sdf

[root@node-02 ~]# ceph-volume lvm list

[root@node-02 ~]# systemctl restart ceph-osd@5.service
[root@node-02 ~]# systemctl enable ceph-osd@5.service

[root@node-02 ~]# systemctl restart ceph-osd@6.service
[root@node-02 ~]# systemctl enable ceph-osd@6.service

[root@node-02 ~]# systemctl restart ceph-osd@7.service
[root@node-02 ~]# systemctl enable ceph-osd@7.service

[root@node-02 ~]# systemctl restart ceph-osd@8.service
[root@node-02 ~]# systemctl enable ceph-osd@8.service

[root@node-02 ~]# systemctl restart ceph-osd@9.service
[root@node-02 ~]# systemctl enable ceph-osd@9.service
  • 在Node-03上添加OSD
[root@node-03 ~]# ceph-volume lvm create --data /dev/sdb
[root@node-03 ~]# ceph-volume lvm create --data /dev/sdc
[root@node-03 ~]# ceph-volume lvm create --data /dev/sdd
[root@node-03 ~]# ceph-volume lvm create --data /dev/sde
[root@node-03 ~]# ceph-volume lvm create --data /dev/sdf

[root@node-03 ~]# ceph-volume lvm list

[root@node-03 ~]# systemctl restart ceph-osd@10.service
[root@node-03 ~]# systemctl enable ceph-osd@10.service

[root@node-03 ~]# systemctl restart ceph-osd@11.service
[root@node-03 ~]# systemctl enable ceph-osd@11.service

[root@node-03 ~]# systemctl restart ceph-osd@12.service
[root@node-03 ~]# systemctl enable ceph-osd@12.service

[root@node-03 ~]# systemctl restart ceph-osd@13.service
[root@node-03 ~]# systemctl enable ceph-osd@13.service

[root@node-03 ~]# systemctl restart ceph-osd@14.service
[root@node-03 ~]# systemctl enable ceph-osd@14.service

5.3 扩容MON节点

  • 同步配置文件

在Node-01:

[root@node-01 ~]# scp /etc/ceph/ceph.conf node-02:/etc/ceph
[root@node-01 ~]# scp /etc/ceph/ceph.conf node-03:/etc/ceph
  • 创建mon数据目录

在Node-02:

[root@node-02 ~]# sudo -u ceph mkdir /var/lib/ceph/mon/ceph-node-02

在Node-03:

[root@node-03 ~]# sudo -u ceph mkdir /var/lib/ceph/mon/ceph-node-03
  • 同步monmap文件

在Node-01:

[root@node-01 ~]# ceph mon getmap -o /tmp/ceph.mon.map
[root@node-01 ~]# scp /tmp/ceph.mon.map node-02:/tmp/
[root@node-01 ~]# scp /tmp/ceph.mon.map node-03:/tmp/
  • 初始化mon服务

在Node-02:

[root@node-02 ~]# sudo -u ceph ceph-mon --mkfs -i node-02 --monmap /tmp/monmap
[root@node-02 ~]# sudo -u ceph touch /var/lib/ceph/mon/ceph-node-02/done

在Node-03:

[root@node-03 ~]# sudo -u ceph ceph-mon --mkfs -i node-03 --monmap /tmp/monmap
[root@node-03 ~]# sudo -u ceph touch /var/lib/ceph/mon/ceph-node-03/done
  • 将新mon加入集群

在Node-01:

[root@node-01 ~]# ceph mon add node-02 192.168.2.82
[root@node-01 ~]# ceph mon add node-03 192.168.2.83
  • 设置mon守护进程自启

在Node-02:

[root@node-02 ~]# systemctl restart ceph-mon@node-02
[root@node-02 ~]# systemctl enable ceph-mon@node-02

在Node-03:

[root@node-03 ~]# systemctl restart ceph-mon@node-03
[root@node-03 ~]# systemctl enable ceph-mon@node-03
  • 检查集群状态:
[root@node-01 ~]# ceph status

5.4 配置MGR服务

  • 准备MGR服务目录

在Node-01:

[root@node-01 ~]# sudo -u ceph mkdir /var/lib/ceph/mgr/ceph-node-01

在Node-02:

[root@node-02 ~]# sudo -u ceph mkdir /var/lib/ceph/mgr/ceph-node-02

在Node-03:

[root@node-03 ~]# sudo -u ceph mkdir /var/lib/ceph/mgr/ceph-node-03
  • 启动MGR服务,设置开机自启

在Node-01:

[root@node-01 ~]# systemctl restart ceph-mgr@node-01.service
[root@node-01 ~]# systemctl enable ceph-mgr@node-01.service

在Node-02:

[root@node-02 ~]# systemctl restart ceph-mgr@node-02.service
[root@node-02 ~]# systemctl enable ceph-mgr@node-02.service

在Node-03:

[root@node-03 ~]# systemctl restart ceph-mgr@node-03.service
[root@node-03 ~]# systemctl enable ceph-mgr@node-03.service

5.5 配置MDS服务

  • 准备MDS服务目录

在Node-01:

[root@node-01 ~]# sudo -u ceph mkdir /var/lib/ceph/mds/ceph-node-01

在Node-02:

[root@node-02 ~]# sudo -u ceph mkdir /var/lib/ceph/mds/ceph-node-02

在Node-03:

[root@node-03 ~]# sudo -u ceph mkdir /var/lib/ceph/mds/ceph-node-03
  • 修改配置文件,追加配置项

在Node-01:

[root@node-01 ~]# cat /etc/ceph/ceph.conf
……
[mds.node-01]
host = 192.168.2.81

[mds.node-02]
host = 192.168.2.82

[mds.node-03]
host = 192.168.2.83
  • 同步配置文件到各个存储集群节点

在Node-01:

[root@node-01 ~]# scp /etc/ceph/ceph.conf node-02:/etc/ceph
[root@node-01 ~]# scp /etc/ceph/ceph.conf node-03:/etc/ceph
  • 启动MDS服务,设置开机自启

在Node-01:

[root@node-01 ~]# systemctl restart ceph-mds@node-01
[root@node-01 ~]# systemctl enable ceph-mds@node-01

在Node-02:

[root@node-02 ~]# systemctl restart ceph-mds@node-02
[root@node-02 ~]# systemctl enable ceph-mds@node-02

在Node-03:

[root@node-03 ~]# systemctl restart ceph-mds@node-03
[root@node-03 ~]# systemctl enable ceph-mds@node-03
  • 创建文件系统的存储池

在Node-01:

[root@node-01 ~]# ceph osd pool create CFS_Data 128
[root@node-01 ~]# ceph osd pool create CFS_Metadata 128
[root@node-01 ~]# ceph fs new CFS CFS_Metadata CFS_Data

[root@node-01 ~]# ceph fs ls
name: CFS, metadata pool: CFS_Metadata, data pools: [CFS_Data ]

[root@node-01 ~]# ceph mds stat
CFS:1 {0=node-02=up:active} 2 up:standby
  • 文件系统的挂载与使用

在客户端(Node-00)测试:

[root@node-00 ~]# yum install -y ceph-fuse
[root@node-00 ~]# mkdir /mnt/ceph_fs
[root@node-00 ~]# ceph-fuse -m 192.168.2.81:6789 /mnt/ceph_fs/
[root@node-00 ~]# df -h
Filesystem             Size  Used Avail Use% Mounted on
/dev/mapper/rhel-root   50G   11G   40G  21% /
devtmpfs               7.8G     0  7.8G   0% /dev
tmpfs                  7.8G     0  7.8G   0% /dev/shm
tmpfs                  7.8G   18M  7.8G   1% /run
tmpfs                  7.8G     0  7.8G   0% /sys/fs/cgroup
/dev/sda1             1014M  146M  869M  15% /boot
/dev/mapper/rhel-home  146G   33M  146G   1% /home
tmpfs                  1.6G     0  1.6G   0% /run/user/0
ceph-fuse              1.4T     0  1.4T   0% /mnt/ceph_fs
[root@node-00 ~]# cd /mnt/ceph_fs
[root@node-00 ceph_fs]# touch ce.file 
[root@node-00 ceph_fs]# ll
total 0
-rw-r--r--  1 root root   0 Feb 22 10:57 ce.file

5.6 配置RGW服务

  • 对象存储服务简介

RGW是Ceph集群的对象存储网关,也称Rados网关,它使客户端能够利用标准对象存储API来访问存储集群,它支持S3和Swift API。

通过对象存储,将数据存储为对象,每个对象除了包含数据,还包含数据自身的元数据。对象通过Object ID来检索,无法通过普通文件系统操作来直接访问对象,只能通过API来访问,或者第三方客户端(实际上也是对API的封装)。对象存储中的一个个对象不是整理到目录树中,而是存储在扁平的命名空间中,Amazon S3将这个扁平命名空间称为Bucket,而Swift则将其称为容器。无论是Bucket还是容器都不能嵌套,且Bucket需要被授权才能访问到。一个帐户可以获取多个Bucket的授权,而且不同Bucket的权限是互不干扰、分别制定的。

  • 内置网关前端CivetWEB的配置

在所有节点的配置文件中,追加以下配置信息:

[root@node-01 ~]# cat /etc/ceph/ceph.conf
……
[client.rgw.node-01]
host = node-01
log file = /var/log/radosgw/client.radosgw.gateway.log
rgw_s3_auth_use_keystone = False
rgw_frontends = civetweb port = 8080

[client.rgw.node-02]
host = node-02
log file = /var/log/radosgw/client.radosgw.gateway.log
rgw_s3_auth_use_keystone = False
rgw_frontends = civetweb port = 8080

[client.rgw.node-03]
host = node-03
log file = /var/log/radosgw/client.radosgw.gateway.log
rgw_s3_auth_use_keystone = False
rgw_frontends = civetweb port = 8080
  • 创建对象存储服务的存储资源池

编写脚本,在Node-01上创建对象存储服务所需的存储资源池:

[root@node-01 ~]# cat rgwPools.txt 
.rgw
.rgw.root
.rgw.control
.rgw.gc
.rgw.buckets
.rgw.buckets.index
.rgw.buckets.extra
.log
.intent-log
.usage
.users
.users.email
.users.swift
.users.uid

[root@node-01 ~]# cat createPool.sh 
#!/bin/bash
PG_NUM=32
PGP_NUM=32
SIZE=2
for i in `cat /root/rgwPools.txt`
do
  ceph osd pool create $i $PG_NUM $PGP_NUM 
done

[root@node-01 ~]# bash createPool.sh
  • 创建日志文件目录

在Node-01:

[root@node-01 ~]# mkdir /var/log/radosgw/
[root@node-01 ~]# chown ceph:ceph /var/log/radosgw/

在Node-02:

[root@node-02 ~]# mkdir /var/log/radosgw/
[root@node-02 ~]# chown ceph:ceph /var/log/radosgw/

在Node-03:

[root@node-03 ~]# mkdir /var/log/radosgw/
[root@node-03 ~]# chown ceph:ceph /var/log/radosgw/
  • 启动并设置RGW守护进程自启

在Node-01:

[root@node-01 ~]# systemctl restart ceph-radosgw@rgw.node-01
[root@node-01 ~]# systemctl enable ceph-radosgw@rgw.node-01

在Node-02:

[root@node-02 ~]# systemctl restart ceph-radosgw@rgw.node-02
[root@node-02 ~]# systemctl enable ceph-radosgw@rgw.node-02

在Node-03:

[root@node-03 ~]# systemctl restart ceph-radosgw@rgw.node-03
[root@node-03 ~]# systemctl enable ceph-radosgw@rgw.node-03
  • 测试RGW服务状态

确认所有节点上的RGW服务状态正常,端口监听状态正常(以Node-01为例):

[root@node-01 ~]# systemctl status ceph-radosgw@rgw.node-01
[root@node-01 ~]# netstat -ntlp | grep 8080
tcp    0    0 0.0.0.0:8080         0.0.0.0:*               LISTEN      7889/radosgw
  • 使用S3CMD连接验证对象存储服务

创建用户:

[root@node-01 ~]# radosgw-admin user create --uid="admin" --display-name="admin"

获取Access Key ID和Secret Access Key:

[root@node-01 ~]# radosgw-admin user info --uid="admin"

配置S3CMD:

[root@node-01 ~]# s3cmd –configure #进入交互配置模式

查看所有Bucket:

[root@node-01 ~]# s3cmd ls

创建Bucket:

[root@node-01 ~]# s3cmd mb s3://nextcloud-bucket

删除Bucket:

[root@node-01 ~]# s3cmd rb s3://nextcloud-bucket

查看Bucket中的文件:

[root@node-01 ~]# s3cmd ls s3://nextcloud-bucket/

上传文件到Bucket中:

[root@node-01 ~]# s3cmd put ./Bigfile s3://nextcloud-bucket/Bigfile

从Bucket中下载文件:

[root@node-01 ~]# s3cmd get s3://nextcloud-bucket/Bigfile

5.7 常用的监控解决方案

  • Ceph-Dash

此监控解决方案是一个开源项目,使用Python Flask框架开发,界面干净、简单、整洁,风格让人感到非常舒服。虽然呈现的内容不多,只是将ceph status命令的输出进行了可视化,但是简单的开发框架和界面结构,使得它有二次开发的余地,且便于上手学习。

选择一个 MON 节点部署,或者在所有 MON 节点部署均可:

[root@node-01 ~]# git clone https://github.com/Crapworks/ceph-dash.git
[root@node-01 ~]# pip2 install --upgrade pip
[root@node-01 ~]# pip2 install flask
[root@node-01 ~]# pip2 install rados
[root@node-01 ~]# mv ceph-dash/ /opt/
[root@node-01 ~]# nohup python /opt/ceph-dash/ceph-dash.py > /var/log/ceph/dashboard.log &

启动成功后,监控界面如下图所示:

图5.1:Ceph Dashboard 01
图5.2:Ceph Dashboard 02
  • MGR Dashboard

在集群中的所有MGR节点上安装相应的软件包:

[root@node-01 ~]# yum install -y ceph-mgr-dashboard

在集群中的任意MON节点上,开启Dashboard模块:

[root@node-01 ~]# ceph mgr module enable dashboard

Web端配置自签名证书、设置用户名密码:

[root@node-01 ~]# ceph dashboard create-self-signed-cert
Self-signed certificate created

[root@node-01 ~]# ceph dashboard set-login-credentials admin admin
Username and password updated

[root@node-01 ~]# ceph mgr services
{
    "dashboard": "https://node-02.open-source.cc:8443/"
}

按照提示的地址,使用设置的用户名密码进行登录,界面如下:

图5.3:Ceph Dashboard 03

6 参考资料

【1】 Ceph 浅析系列文章(开源技术专家章宇著)
【2】 Ceph 国内社区中文文档
【3】 Ceph 官网的Document
【4】 Ceph 读写性能估算方法

如有其它问题,请填写右侧需求表单联系我们。www.asterfusion.com

配置指导:Ceph存储对接OpenStack开源云平台

Ceph存储对接OpenStack开源云平台

1 目标

       本文档使用Stein版OpenStack开源云平台与Nautilus版Ceph存储集群,实现OpenStack与Ceph的集成。

2 Ceph简介

Ceph是当前非常流行的开源分布式存储系统,具有高扩展性、高性能、高可靠性等优点,同时提供块存储服务(RDB)、对象存储服务(RGW)以及文件系统存储服务(CephFS)。目前也是OpenStack的主流后端存储,为OpenStack提供统一共享的存储服务。

Ceph的整体架构如下图所示:

图2-1:Ceph的整体架构

3 OpenStack简介

OpenStack是一个开源的云计算管理平台项目,是一系列软件开源项目的组合,而不是一个软件。由NASA(美国国家航空航天局)和Rackspace合作研发,以Apache许可证(Apache软件基金会发布的一个自由软件许可证)进行开源授权。我们可以使用OpenStack来管理一个数据中心的大量硬件资源,起初它主要有计算、存储、网络三大子项目,面向IaaS服务。发展至今,整个生态已经涉及到PaaS服务、SaaS服务和FaaS服务等层面。

OpenStack项目的整体框架如下图所示:

图3-1:OpenStack项目的整体框架

4 OpenStack集成Ceph做存储后端的优势

使用Ceph作为OpenStack后端存储,具有如下优点:

  1. 计算节点共享存储,可以保证实例运行时的健壮性,也可以实现各节点间实例的快速迁移;
  2. 统一平台提供多种类型存储,减轻部署复杂度与工作量,可在运行时灵活扩展;
  3. 利用COW特性,从而可以实现云平台秒级创建实例;

5 实验环境

5.1 系统与软件版本

  • CEPH:Nautilus 14.2.9(鹦鹉螺)稳定版;
  • OpenStack:Stein (April 2019);
  • 操作系统:Red Hat Enterprise Linux Server 7.6 (Maipo);

5.2 节点配置与部署架构

本次实验共使用了4台节点,OpenStack与Ceph已经提前部署完成,为节省资源进行了角色融合。其中,node-01、node-02、node-03为3个节点的N版Ceph存储集群,同时也是OpenStack的计算节点。在部署OpenStack时,考虑到现有3个节点的承载能力,新加入一台节点node-00作为OpenStack的云控节点。

各节点的配置与角色设置如下表所示:

主机名IP地址处理器内存硬盘节点角色
node-00192.168.2.80 管理网8C16G200G 系统盘云控节点
node-01192.168.2.81 管理网
192.168.20.81 存储网
8C32G100G 系统盘
200G*5 OSD
计算节点/存储节点
node-02192.168.2.82 管理网
192.168.20.82 存储网
8C32G100G 系统盘
200G*5 OSD
计算节点/存储节点
node-03192.168.2.83 管理网
192.168.20.83 存储网
8C32G100G 系统盘
200G*5 OSD
计算节点/存储节点

表5-1:节点配置与角色

部署架构如下图所示:

图5-1:部署架构

6 集成步骤

6.1 创建所需存储池

  • 为OpenStack创建所需的RBD存储池:
[root@node-01 ~]# ceph osd pool create volumes
[root@node-01 ~]# ceph osd pool create images
[root@node-01 ~]# ceph osd pool create vms
  • 初始化RBD存储池:
[root@node-01 ~]# rbd pool init volumes
[root@node-01 ~]# rbd pool init images
[root@node-01 ~]# rbd pool init vms
  • 设置存储池类型:
[root@node-01 ~]# ceph osd pool application enable volumes rbd
[root@node-01 ~]# ceph osd pool application enable images rbd
[root@node-01 ~]# ceph osd pool application enable vms rbd
  • 检查存储池创建结果:
[root@node-01 ~]# ceph osd pool ls
.rgw
.rgw.root
.rgw.control
.rgw.gc
.rgw.buckets
.rgw.buckets.index
.rgw.buckets.extra
.log
.intent-log
.usage
.users
.users.email
.users.swift
.users.uid
default.rgw.control
default.rgw.meta
default.rgw.log
default.rgw.buckets.index
default.rgw.buckets.data
default.rgw.buckets.non-ec
volumes
images
vms
CFS_Data
CFS_Metadata

6.2 配置Ceph客户端

  • 导出Ceph配置文件到OpenStack中的所有节点,对于本文档,仅需导出至云控节点(node-00):
[root@node-00 ~]# mkdir /etc/ceph/
[root@node-00 ~]# scp node-01:/etc/ceph/ceph.conf /etc/ceph/
  • 在云控节点上(node-00):
[root@node-00 ~]# yum install python-rbd
[root@node-00 ~]# yum install ceph-common

6.3 配置Glance使用Ceph RBD

  • 在Glance的控制节点中(node-00),修改 /etc/glance/glance-api.conf 配置文件:
[DEFAULT]
……
show_image_direct_url = True
show_multiple_locations = True
......
[glance_store]
stores = rbd,file
filesystem_store_datadir = /var/lib/glance/images
default_store = rbd
rbd_store_pool = images
rbd_store_user = admin
rbd_store_ceph_conf = /etc/ceph/ceph.conf
rbd_store_chunk_size = 8

6.4 配置Cinder使用Ceph RBD

  • 在所有存储节点中(node-00、node-01、node-02、node-03),修改 /etc/cinder/cinder.conf 配置文件:
[DEFAULT]
……
enabled_backends = ceph
glance_api_version = 2
……
[ceph]
volume_driver = cinder.volume.drivers.rbd.RBDDriver
volume_backend_name = ceph
rbd_pool = volumes
rbd_ceph_conf = /etc/ceph/ceph.conf
rbd_flatten_volume_from_snapshot = false
rbd_max_clone_depth = 5
rbd_store_chunk_size = 4

6.5 配置Nova使用Ceph RBD

  • 在所有计算节点中,向配置文件/etc/nova/nova.conf中增加如下部分:
[libvirt]
images_type = rbd
images_rbd_pool = vms
images_rbd_ceph_conf = /etc/ceph/ceph.conf
disk_cachemodes="network=writeback"
inject_password = false
inject_key = false
inject_partition = -2

6.6 重启OpenStack服务使生效

  • 在云控节点中(node-00):
[root@node-00 ~]# systemctl restart openstack-glance-api.service
  • 在各个计算/存储节点中(node-01/node-02/node-03):
[root@node-01 ~]# systemctl restart openstack-nova-compute.service
[root@node-01 ~]# systemctl restart openstack-cinder-volume.service
[root@node-02 ~]# systemctl restart openstack-nova-compute.service
[root@node-02 ~]# systemctl restart openstack-cinder-volume.service
[root@node-03 ~]# systemctl restart openstack-nova-compute.service
[root@node-03 ~]# systemctl restart openstack-cinder-volume.service

7 结果验证

  • Glance:
图7-1:Glance服务集成Ceph效果验证
[root@node-00 ~]# rbd ls images
……
75978fcd-1f18-477b-8ce4-9ce7ac47b353
  • Cinder:
图7-2:Cinder服务集成Ceph效果验证
[root@node-00 ~]# rbd ls volumes
……
volume-62bc9247-8f4a-4604-990c-10c42c9ee48e
  • Nova:
图7-3:Nova服务集成Ceph效果验证
[root@node-00 ~]# rbd ls volumes
……
volume-c0387940-3bd9-47c5-942f-38e287722bfb

8 参考资料

【1】 官方文档:BLOCK DEVICES AND OPENSTACK
【2】 Glance&Cinder集成Ceph
【3】 Nova集成Ceph

如有其它问题,请填写右侧需求表单联系我们。www.asterfusion.com

配置指导:OpenStack Magnum 部署

OpenStack Magnum 部署方案

1 目标与物理网络拓扑

本文主要描述在现有OpenStack(stein版)平台上如何扩展安装Magnum功能组件,实现容器管理服务。
涉及物理拓扑,如图1所示:

图1:物理网络拓扑

部署过程中所涉及到的设备、接口及管理网口的IP地址如下表所示:

设备名称接口IP地址备注
Switch-A管理口192.168.0.254三层交换机
Switch-B管理口192.168.4.1二层交换机
Switch-C管理口192.168.5.1二层交换机
Server-1管理口192.168.4.144/
Server-2管理口192.168.5.145/

表1:设备管理口列表

2 硬件与软件环境

部署环境中涉及到的硬件和软件如表2和表3所示:

名称型号硬件指标数量备注
服务器1.至少8G内存
2.磁盘不少于500G
2Server-1计算节点+存储节点
Server-2 控制节点+网络节点

表2:硬件环境

软件版本备注
服务器Centos7.6安装时选择Compute Node 模式,根目录/至少500G
OpenStackstein

表3:软件环境

3 Magnum简介

Magnum项目是OpenStack中的容器编排服务引擎,向上提供统一API,向下异构兼容K8S,Mesos,Swarm等容器管理平台,是OpenStack与容器结合的官方正式项目

Magnum使用Heat部署一个包含Docker和Kubernetes的操作系统镜像,让容器集群运行在虚拟机(Virtual Machine)或者裸机(Bare Metal)中。

Magnum 由三个代码库组成:

  • Magnum: http://git.openstack.org/cgit/openstack/magnum
  • Python-magnumclient: http://git.openstack.org/cgit/openstack/python-magnumclient
  • Magnum-ui: http://git.openstack.org/cgit/openstack/magnum-ui

Magnum主要提供两个服务:

  • Magnum API 和 Magnum Conductor。
  • Magnum API是提供资源的Rest接口。

Magnum Conductor是整个项目的核心,首先通过Heat部署虚拟机实例或者裸机实例上,然后通过Cloud init在虚拟机实例或者裸机实例上,调用Kubernetes、Swarm或者Mesos部署容器集群。

Python-magnumclient封装Magnum Rest API向外提供Magnum的接口调用,同时提供CLI功能。

Magnum-ui提供一个Horizon的插件,使用Django和AngularJS实现Magnum的界面操作。

下面是Magnum的整体架构:

图2: Magnum架构图

主要概念:

  • Bay:Bay在magnum主要表示一个集群,新版改为Cluster,现在通过Magnum可以创建K8s和Swarm的Bay,也就是K8s和Swarm的集群。
  • Baymodel:Baymodel是Flavor的一个扩展,新版改为Cluster Template,Flavor主要是定义虚拟机或者物理机的规格,Baymodel主要是定义一个Docker集群的一些规格,例如这个集群的管理节点的Flavor,计算节点的Flavor,集群使用的Image等等,都可以通过Baymodel去定义。
  • Node:主要是指Bay中的某个节点。
  • Container:就是具体的某个Docker容器。

Pod、Replication Controller和Service的意思和在K8s的意思是一样的。

  • Pod:是Kubernetes最基本的部署调度单元,可以包含多个Container,逻辑上表示某种应用的一个实例。比如一个Web站点应用由前端、后端及数据库构建而成,这三个组件将运行在各自的容器中,那么我们可以创建包含三Pod,每个Pod运行一个服务。或者也可以将三个服务创建在一个Pod,这个取决于用户的应用需求。一个Pod会包含N个Container,多出来的那一个Container是Net Container,专门做路由的。
  • Service:可以理解为是Pod的一个路由,因为Pod在运行中可能被删除或者IP发生变化,Service可以保证Pod的动态变化对访问端是透明的。
  • Replication Controller:是Pod的复制抽象,用于解决Pod的扩容缩容问题。通常,分布式应用为了性能或高可用性的考虑,需要复制多份资源,并且根据负载情况动态伸缩。通过Replication Controller,我们可以指定一个应用需要几份复制,Kubernetes将为每份复制创建一个Pod,并且保证实际运行Pod数量总是与预先定义的数量是一致的(例如,当前某个Pod宕机时,自动创建新的Pod来替换)。

简单总结:Magnum自身作为一套 API 框架,本身调用其它的容器管理平台的 API 来实现功能。目前支持的后端包括 Kubernetes、Swarm和Mesos。

如果说 Nova 是一套支持不同 Hypervisor 虚拟机平台的API 框架,那么 Magnum 则是支持不同容器机制的 API 框架。

4 安装步骤

[root@controller ~] 表示在控制节点上执行

[root@compute ~] 表示在计算节点上执行

4.1 创建数据库

  • 创建数据库并授权:
[root@controller ~]# mysql -uroot -p
MariaDB [(none)]> CREATE DATABASE magnum;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON magnum.* TO magnum@'localhost' \
  IDENTIFIED BY 'magnum';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON magnum.* TO magnum@'%' \
  IDENTIFIED BY 'magnum';

注:帐号密码根据自己的情况修改

4.2 创建openstack用户、服务凭据、API端点

  • 在安装和配置Magnum之前,必须创建用户、服务凭据和API端点:
[root@controller ~]# . admin-openrc
[root@controller ~]# openstack user create --domain default --password-prompt magnum
[root@controller ~]# openstack role add --project service --user magnum admin
[root@controller ~]#openstack service create --name magnum \
  --description "OpenStack Container Infrastructure Management Service" \
  container-infra
[root@controller ~]#openstack endpoint create --region RegionOne \
  container-infra public http://controller:9511/v1
[root@controller ~]#openstack endpoint create --region RegionOne \
  container-infra internal http://controller:9511/v1
[root@controller ~]#openstack endpoint create --region RegionOne \
  container-infra admin http://controller:9511/v1
  • Magnum需要身份服务中的其他信息来管理COE群集

创建 magnum域

[root@controller ~]# openstack domain create --description "Owns users and projects \
  created by magnum" magnum

在magnum域中创建magnum_domain_admin用户

[root@controller ~]# openstack user create --domain magnum --password-prompt \
  magnum_domain_admin

添加admin角色到 magnum域 中的magnum_domain_admin用户

[root@controller ~]# openstack role add --domain magnum --user-domain magnum --user \
  magnum_domain_admin admin

4.3 在controller节点上安装magnum服务

  • 创建用户、组:
[root@controller ~]#groupadd --system magnum
[root@controller ~]#useradd --home-dir "/var/lib/magnum" \
      --create-home \
      --system \
      --shell /bin/false \
      -g magnum \
      magnum
  • 创建目录:
[root@controller ~]#mkdir -p /var/log/magnum
[root@controller ~]#mkdir -p /etc/magnum
[root@controller ~]#chown magnum:magnum /var/log/magnum
[root@controller ~]#chown magnum:magnum /var/lib/magnum
[root@controller ~]#chown magnum:magnum /etc/magnum
  • 安装软件包:
[root@controller ~]#yum install openstack-magnum-api openstack-magnum-conductor  \
python-magnumclient
  • 编辑配置文件:
[root@controller ~]#vi /etc/magnum/magnum.conf
[DEFAULT]
transport_url = rabbit://openstack:tera123@controller
log_dir = /var/log/magnum
[api]
host = 192.168.4.144
port = 9511
[certificates]
#生产环境建议用barbican,如果没有安装barbican则使用x509keypair
#cert_manager_type = barbican
cert_manager_type = x509keypair
[cinder_client]
region_name = RegionOne
[database]
connection = mysql+pymysql:://magnum:magnum@controller/magnum
[keystone_authtoken]
memcached_servers = controller:11211
auth_version = v3
www_authenticate_uri = http://controller:5000/v3
project_domain_id = default
project_name = service
user_domain_id = default
password = magnum
username = magnum
auth_url = http://controller:5000
auth_type = password
admin_user = magnum
admin_password = magnum
admin_tenant_name = service
[trust]
trustee_domain_name = magnum
trustee_domain_admin_name = magnum_domain_admin
trustee_domain_admin_password = magnum_domain_admin
# trustee_keystone_interface with either public or internal 取决于网络配置 默认public
trustee_keystone_interface = public
[oslo_messaging_notifications]
driver = messaging
[oslo_concurrency]
lock_path = /var/lib/magnum/tmp
  • 填充数据库:
[root@controller ~]#su -s /bin/sh -c "magnum-db-manage upgrade" magnum
  • 启动服务:
[root@controller ~]# systemctl enable openstack-magnum-api.service \
  openstack-magnum-conductor.service
[root@controller ~]# systemctl start openstack-magnum-api.service \
  openstack-magnum-conductor.service

4.4 在controller节点上安装magnum-ui服务

  • 安装magnum-ui:
[root@controller ~]#pip install magnum-ui==5.0.1
  • 复制文件:
[root@controller ~]#cd /usr/lib/python2.7/site-packages/magnum_ui
[root@controller ~]#cp enabled/*  \
 /usr/share/openstack-dashboard/openstack_dashboard/local/enabled/
  • 重启服务:
[root@controller ~]#systemctl restart httpd memcached

5 结果验证

在controller节点列出magnum服务

  • 列出服务
[root@controller ~]#source admin-openrc
[root@controller ~]#openstack coe service list
  • 启动实例

(1)创建一个外部网络

[root@controller ~]#openstack network create public --provider-network-type vxlan \
                                  --external \
                                  --project service
[root@controller ~]#openstack subnet create public-subnet --network public \
                                  --subnet-range 192.168.5.0/24 \
                                  --gateway 192.168.5.1 \
                                  --ip-version 4

(2)创建一个密钥对

[root@controller ~]#openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey

(3)创建一个卷类型

[root@controller ~]#openstack volume type create volumnType1

(4)上传集群必须的镜像

VM版本的Kubernetes和Docker Swarm驱动程序需要Fedora Atomic映像。以下是由Atomic团队构建并经过Magnum团队测试的Fedora Atomic原始图像。

a. 先下载镜像

[root@controller ~]#wget https://download.fedoraproject.org/pub/alt/atomic/stable/Fedora-Atomic-27-20180419.0/CloudImages/x86_64/images/Fedora-Atomic-27-20180419.0.x86_64.qcow2

b. 注册镜像到镜像服务并将os_distro 属性设为fedora-atomic

[root@controller ~]#openstack image create \
                      --disk-format=qcow2 \
                      --container-format=bare \
                      --file=Fedora-Atomic-27-20180419.0.x86_64.qcow2\
                      --property os_distro='fedora-atomic' \
                      fedora-atomic-latest

(5)设置Docker Swarm集群并且创建容器

a. 使用fedora-atomic-latest镜像为Docker Swarm集群创建集群模板:

[root@controller ~]#openstack coe cluster template create swarm-cluster-template \
                     --image fedora-atomic-latest \
                     --external-network public \
                     --dns-nameserver 8.8.8.8 \
                     --master-flavor m1.small \
                     --flavor m1.small \
                     --coe swarm

b. 使用一个master和一个node创建一个集群:

[root@controller ~]# openstack coe cluster create swarm-cluster \
                        --cluster-template swarm-cluster-template \
                        --master-count 1 \
                        --node-count 1 \
                        --keypair mykey  \
                        --labels docker_volume_type=volumnType1

c. 检查创建的集群状态

[root@controller ~]# openstack coe cluster list
[root@controller ~]#openstack coe cluster show swarm-cluster

d.将集群验证凭据添加到环境变量里:

[root@controller ~]#mkdir myclusterconfig
[root@controller ~]#$(openstack coe cluster config swarm-cluster --dir myclusterconfig)

上面的命令会将身份验证工件保存在 myclusterconfig目录中,导出环境以下变量:DOCKER_HOST,DOCKER_CERT_PATH和DOCKER_TLS_VERIFY

[root@controller ~]#export DOCKER_HOST=tcp://172.24.4.10:2376
[root@controller ~]#export DOCKER_CERT_PATH=myclusterconfig
[root@controller ~]#export DOCKER_TLS_VERIFY=True

e. 创建一个容器:

[root@controller ~]#docker run busybox echo "Hello from Docker!"

f. 删除集群

[root@controller ~]# openstack coe cluster delete swarm-cluster

(6)设置Kubernetes集群并且创建部署

本示列中,将会使用一个master和一个node创建一个k8s集群,然后用k8s原生命令kubectl来创建一个部署

a. 使用fedora-atomic-latest镜像为kubernetes集群创建集群模板:

[root@controller ~]# openstack coe cluster template create kubernetes-cluster-template \
                     --image fedora-atomic-latest \
                     --external-network public \
                     --dns-nameserver 8.8.8.8 \
--docker-volume-size=5  \
                     --master-flavor m1.small \
                     --flavor m1.small \
                     --coe kubernetes

b. 使用一个master和一个node创建一个集群:

[root@controller ~]# openstack coe cluster create kubernetes-cluster \
                        --cluster-template kubernetes-cluster-template \
                        --master-count 1 \
                        --node-count 1 \
                        --keypair mykey \
                        --labels docker_volume_type=volumnType1

c. 检查创建的集群状态

[root@controller ~]# openstack coe cluster list
[root@controller ~]#openstack coe cluster show kubernetes-cluster

d. 将集群验证凭据添加到环境变量里:

[root@controller ~]# mkdir -p ~/clusters/kubernetes-cluster
[root@controller ~]# $(openstack coe cluster config kubernetes-cluster --dir ~/clusters/kubernetes-cluster)

上面的命令会将身份验证工件保存在~/clusters/kubernetes-clusterg目录中,导出环境以下变量:KUBECONFIG

[root@controller ~]# export KUBECONFIG=/home/user/clusters/kubernetes-cluster/config

e. 检查k8s集群的控制器组件:

[root@controller ~]# kubectl -n kube-system get po

f. 验证部署一个nginx:

[root@controller ~]# kubectl run nginx --image=nginx --replicas=5
deployment "nginx" created
[root@controller ~]#kubectl get po

g. 删除集群:

[root@controller ~]#openstack coe cluster delete kubernetes-cluster

6 参考资料

https://wiki.openstack.org/wiki/Magnum
https://docs.openstack.org/magnum/latest/install/install.html
https://docs.openstack.org/python-magnumclient/latest/
https://docs.openstack.org/magnum-ui/latest/
https://releases.openstack.org/teams/magnum.html
https://docs.openstack.org/magnum/latest/admin/troubleshooting-guide.html

如有其它问题,请填写右侧需求表单联系我们。www.asterfusion.com

配置指导:PXE无人值守自动化安装系统平台

PXE无人值守自动化安装系统平台

1 PXE使用场景

PXE,全名Pre-boot Execution Environment,预启动执行环境,通过网络接口启动计算机,不依赖本地存储设备(如硬盘)或本地已安装的操作系统

  • 批量服务器的部署
  • 信息安全要求高,需要使用无盘系统(系统在特定的服务器上,而不在本地电脑)
  • 远程安装,通过BMC启动远程服务器,然后通过PXE启动本地系统

2 PXE工作流程

  • 客户机从自己的PXE网卡启动,向网络中的DHCP服务器索取IP,并搜寻引导文件的位置
  • DHCP服务器返回给客户机IP以及引导文件的位置
  • 客户机向网络中的TFTP服务器索取引导文件并执行该文件
  • 客户机根据引导文件的执行结果,通过TFTP服务器加载内核和文件系统
  • 进入安装画面,客户机根据自动应答配置文件完成操作系统的自动化部署

3 PXE必要组件

  • DCHP:动态主机配置协议,用于自动分配IP地址,定位引导文件
  • TFTP:简单文件传输协议,用于PXE预引导加载环境,提供pxelinux.0文件
  • FTP:文件传输协议,用于加载pxelinux.0文件执行的结果
  • kickstart:kickstart生成自动应答文件,无需人工干涉自动化装机

4 PXE服务器配置

主机系统IP地址软件
PXECentos7.6192.168.5.222PXE+TFTP+VSFTP+kickstart

服务器具体配置要求如下:

  • 至少2G内存
  • 至少2核CPU

5 环境准备

5.1 关闭SELinux

SELinux不关闭的情况下无法实现,会限制客户机和PXE服务器的通信。

[root@PXE ~]# setenforce 0
[root@PXE ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

5.2 关闭防火墙

防止安装时出现各个组件的端口不能访问的问题。

[root@PXE ~]# systemctl stop firewalld && systemctl disable firewalld                          

6 部署PXE

部署PXE的必要服务,并且修改相关服务的配置文件。

6.1 部署DHCP服务

[root@pxe ~]# yum -y install dhcp
[root@pxe ~]# vi /etc/dhcp/dhcpd.conf
subnet 192.168.5.0 netmask 255.255.255.0 {
        range 192.168.5.180 192.168.5.199;  #地址池
        option routers 192.168.5.1;  #网关
        option domain-name-servers 114.114.114.114; #DNS地址
        next-server 192.168.5.222;  #TFTP地址
        filename "pxelinux.0";   #引导文件
}
[root@pxe ~]# systemctl start dhcpd
[root@pxe ~]# systemctl enable dhcpd

6.2 部署TFTP服务

[root@pxe ~]# yum -y install tftp-server syslinux
[root@pxe ~]# vi /etc/xinetd.d/tftp
service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /var/lib/tftpboot
        disable                 = no
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}
[root@pxe ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
[root@pxe ~]# systemctl start tftp
[root@pxe ~]# systemctl enable tftp

6.3 部署VSFTP服务

[root@pxe ~]# yum -y install vsftpd
[root@pxe ~]# mkdir /var/ftp/centos7
[root@pxe ~]# mount /dev/cdrom /var/ftp/centos7/
[root@pxe ~]# cd /var/ftp/centos7/images/pxeboot/
[root@pxe pxeboot]# cp initrd.img vmlinuz  /var/lib/tftpboot/
[root@pxe ~]# systemctl start vsftpd
[root@pxe ~]# systemctl enable vsftpd

6.4 编辑启动菜单

[root@pxe ~]# cd /var/lib/tftpboot/
[root@pxe tftpboot]# mkdir pxelinux.cfg
[root@pxe tftpboot]# vi pexlinux.cfg/default
default auto
timeout 60
label auto
        kernel vmlinuz
        append initrd=initrd.img method=ftp://192.168.5.222/centos7 ks=ftp://192.168.5.222/ks.cfg

6.5 装机测试

创建未安装系统的裸机:

裸机成功获取IP并且加载文件系统:

PXE批量部署成功:

7 kickstart无人值守

7.1 安装kickstart

安装kickstart并创建ks.cfg文件,这里我们直接给出了完整的ks.cfg配置文件。安装完成之后,可以跳过部署操作系统中的手动配置过程。配置文件中的root密码:tera123。

[root@pxe ~]# yum -y install system-config-kickstart
[root@pxe ~]# vi /var/ftp/ks.cfg
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
keyboard 'us'
# Root password
rootpw --iscrypted $1$7PKyC0GQ$lcdaVO2JUK8wOCnSiMr7S0
# System language
lang en_US
# System authorization information
auth  --useshadow  --passalgo=sha512
# Use graphical install
graphical
firstboot --disable
# SELinux configuration
selinux --disabled

# Firewall configuration
firewall --disabled
# Network information
network  --bootproto=dhcp --device=ens160
# Reboot after installation
reboot
# System timezone
timezone Asia/Shanghai
# Use network installation
url --url="ftp://192.168.5.222/centos7"
# System bootloader configuration
bootloader --location=mbr
# Partition clearing information
clearpart --all
# Disk partitioning information
autopart
ignoredisk --only-use=sda

%packages
@^minimal
@core
chrony
kexec-tools

%end

8 PXE自动化部署注意事项

8.1 安装虚拟机失败

安装虚拟机的时候要注意,非最小化安装,需要给虚拟机分配2G以上内存,否则会报错。

8.2 安装完成之后重启黑屏

虚拟机安装完成之后,重启卡在黑屏是因为通过图形化配置时ks.cfg文件没有生效,导致在安装的过程中引导装载程序失败。我们需要手动修改ks.cfg为文档里推荐的配置。

8.3 服务器无法进入PXE

如果要覆盖安装原有的操作系统,需要手动将启动顺序调整为网络启动,并且在安装完成之后改为本地硬盘启动。

8.4 硬盘分区

利用工具system-config-kickstart进行ks.cfg文件生成时,LVM无法支持。如果需要配置LVM,建议寻找一台通过LVM手动部署的主机,打开该主机root下的anaconda-ks.cfg文件,在此基础上修改并保存为我们需要的ks.cfg文件。

9 参考文献

PXE官网:https://pxe.org/

如有其它问题,请填写右侧需求表单联系我们。www.asterfusion.com

配置指导:AsterNOS-VPP 部署指南

前言

目标读者:本文档主要面向网络工程师、系统管理员以及想在虚拟化环境中构建高性能网络测试平台的开发人员。

前置要求,建议读者具备以下基础知识:

  • Linux 基础:熟练掌握 Linux 命令行操作,包括文件编辑与系统管理。
  • 网络基础:理解 L2/L3 网络概念,如 IP 地址、子网掩码、网关和 VLAN。
  • 虚拟化概念:了解虚拟机与宿主系统的基本原理,并对 QEMU/KVM 有一定认识。

1. 目标

本文档提供了在Ubuntu主机系统上使用QEMU/KVM和PCI直通技术配置AsterNOS-VPP虚拟机的详细指南。最终目标是构建和验证一个支持VLAN间路由和互联网访问NAT的高性能虚拟网关。

2. 适用型号和版本

硬件要求:

  • 宿主机:ThinkCentre-M8600t-N000(仅为示例型号)。
  • 网卡:Intel Corporation I350 千兆网络连接(4 端口)。
  • CPU:宿主机 CPU 必须支持 sse4 指令集。可通过 lscpu 命令验证,确保输出中包含 sse4
配图

软件要求:

  • 主机操作系统:Ubuntu Linux 24.04
  • 虚拟化:QEMU/KVM 8.2.2,libvirt 10.0.0
  • 虚拟机系统:AsterNOS-VPP

3. 功能概述

  • PCI 直通:一种虚拟化技术,允许虚拟机直接、独占地控制物理主机的硬件设备,提供接近原生的性能。
  • VLAN 间路由:路由器的核心功能,通过为不同 VLAN 创建虚拟接口(网关),实现不同子网之间的流量转发。
  • 网络地址转换(NAT):允许私有网络上的设备通过共享路由器的公共 IP 地址来访问互联网。

4. 典型配置示例:双子网路由和 NAT

4.1 需求

  • 部署一台 AsterNOS-VPP 虚拟路由器,该路由器拥有 1 个专用的 WAN 口和多个专用的物理 LAN 口。
  • 将 LAN 口划分为两个不同的 VLAN,每个 VLAN 连接到一台独立的 PC。
  • 确保两个子网中的 PC 都能通过路由器的 NAT 功能访问互联网。
  • 确保两个子网中的 PC 能够相互通信。

4.2 拓扑结构

物理连接:

  • 主机接口 ens3f0 (PCI 地址 01:00.0) -> 上行路由器 (WAN)
  • 主机接口 ens3f1 (PCI 地址 01:00.1) -> PC1 (LAN1)
  • 主机接口 ens3f2 (PCI 地址 01:00.2) -> PC2 (LAN2)
  • 主机接口 ens3f3 (PCI 地址 01:00.3) -> PC3 (LAN3)
配图

4.3 环境和软件获取

设备类型型号/系统角色/描述
主机ThinkCentre-M8600t-N000Ubuntu 系统,作为 QEMU/KVM 和 libvirt 的宿主机
虚拟机AsterNOS-VPP8GB 内存,4核 CPU,64GB 磁盘
PC1Windows PCLAN1 客户端,连接至 ens3f1
PC2Windows PCLAN2 客户端,连接至 ens3f2
PC3Windows PCLAN3 客户端,连接至 ens3f3
网络规划接口 (AsterNOS)IP 地址 / 网段描述
WANEthernet1192.168.200.178/24连接至上游路由器 192.168.200.1
LAN1Vlan10010.0.1.0/24Subnet for PC1 and PC3, Gateway 10.0.1.1
LAN2Vlan20010.0.2.0/24Subnet for PC2, Gateway 10.0.2.1

软件:

必须从星融元官方渠道获取 sonic-vpp.img 虚拟机镜像文件。请参考:https://asterfusion.com/d-asternos-vpp-x86/

4.4 配置步骤:Ubuntu 主机

  1. BIOS/UEFI 设置:
  • 目的:在固件层面启用 IOMMU 功能,使操作系统能够使用此硬件特性。
  • 操作:重启主机并进入 BIOS/UEFI 设置界面。确保同时启用 Intel(R) VT-d 和 Intel(R) Virtualization Technology。
  1. GRUB 参数配置:
  • 目的:指示 Linux 内核启用并使用已在固件中开启的 IOMMU 功能。
# 1. Edit the GRUB configuration file
sudo nano /etc/default/grub
# 2. Find the line starting with GRUB_CMDLINE_LINUX_DEFAULT and add "intel_iommu=on iommu=pt" inside the quotes.
 GRUB_CMDLINE_LINUX_DEFAULT="quiet splash intel_iommu=on iommu=pt"
# 3.  After saving the file, update the GRUB configuration
sudo update-grub
  1. 配置 VFIO 驱动:
  • 目的:使用专用的 vfio-pci 驱动程序来接管准备用于直通的物理网卡。这将阻止主机操作系统加载其默认驱动,从而使网卡可供虚拟机使用。
  • 操作步骤:

A. 查找网卡的设备 ID:

# This command lists all network devices and their IDs
lspci -nn | grep -i ethernet

注意:[8086:1521] 是设备 ID。如果您的网卡型号不同,请将后续命令中的 8086:1521 替换为您查到的实际 ID。

B. 配置驱动绑定与黑名单:

# Tell the system that devices with ID 8086:1521 should be managed by vfio-pci
echo "options vfio-pci ids=8086:1521" | sudo tee /etc/modprobe.d/vfio.conf
# Prevent Ubuntu from loading the default 'igb' driver for this NIC to avoid conflicts
echo "blacklist igb" | sudo tee /etc/modprobe.d/blacklist-igb.conf

C. 强制预加载 VFIO 模块:编辑 /etc/initramfs-tools/modules 文件,在末尾添加以下行:

vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

D. 更新配置并重启:

sudo update-initramfs -u
sudo reboot
  1. 验证主机配置:重启后,在主机终端中运行以下命令:lspci -nnk | grep -iA3 02:00
  • 预期结果:所有四个网卡(从 02:00.002:00.3)的 Kernel driver in use: 字段现在应显示为 vfio-pci
配图

4.5 启动虚拟机

4.5.1 方法 A:使用 QEMU 手动启动(适用于快速测试)

此方法通过单条命令直接启动虚拟机,操作简单便捷,适合临时测试与验证。

  1. 启动虚拟机:在主机上运行以下 QEMU 命令。
sudo qemu-system-x86_64 \
  -enable-kvm \
  -m 8192 \
  -smp 4 \
  -cpu host \
  -drive file=/var/lib/libvirt/images/sonic-vpp.img,if=virtio,format=qcow2 \ # Please replace this with the actual path to your image file
  -device vfio-pci,host=02:00.0,id=wan-nic \
  -device vfio-pci,host=02:00.1,id=lan-nic1 \
  -device vfio-pci,host=02:00.2,id=lan-nic2 \
  -device vfio-pci,host=02:00.3,id=lan-nic3 \
  -nographic \
  -serial mon:stdio
  1. 接口映射:-device 参数的顺序决定了 AsterNOS 虚拟机内部的接口名称。在此示例中:
QEMU -device 参数PCI 地址(主机)接口名称(AsterNOS 虚拟机)规划用途
host=02:00.002:00.0Ethernet1WAN 端口
host=02:00.102:00.1Ethernet2LAN 端口 (PC1)
host=02:00.202:00.2Ethernet3LAN 端口 (PC2)
host=02:00.302:00.3Ethernet4LAN 端口 (PC3)

⚠️ 重要提示:网络端口顺序
AsterNOS-VPP 系统内部识别的接口名称(如 Ethernet1、Ethernet2 等)取决于 QEMU 启动命令中 -device 参数的顺序(即 PCI 地址的排列顺序)。该顺序可能与服务器机箱后面板上网络端口的物理排列顺序(例如从上至下、从左至右)不一致。

强烈建议:在进行后续配置前,请仅连接一根网线(例如 WAN 端口),启动虚拟机后使用 show interface status 命令观察哪个以太网接口状态变为 up。通过此方法可准确映射物理端口与逻辑端口,避免因错误接线导致配置失败。

4.5.2 方法 B:使用 libvirt 实现持久化启动(推荐)

此方法通过 libvirt 管理虚拟机,可实现持久化运行及开机自动启动。

  1. 创建虚拟机:在主机上执行以下命令。该命令执行后,虚拟机将自动完成定义并启动。您可在当前终端中直接观察启动过程及登录提示。
sudo virt-install \
--name AsterNOS \
--virt-type kvm \
--memory 8192 \
--vcpus 4 \
--cpu host-passthrough \
--disk path=/var/lib/libvirt/images/sonic-vpp.img,bus=virtio \ # Please replace this with the actual path to your image file
--import \
--os-variant debian11 \
--network none \
--host-device 02:00.1 \
--host-device 02:00.2 \
--host-device 02:00.3 \
--host-device 02:00.0 \
--nographics
  1. 设置虚拟机开机自启:成功创建虚拟机后,在主机上打开新终端并运行以下命令,将其设置为开机自动启动:
sudo virsh autostart AsterNOS

4.6 访问并配置 AsterNOS-VPP 虚拟机

无论您采用哪种方式启动虚拟机,后续配置步骤完全一致。

  1. 访问虚拟机控制台
  • 若使用方式 A(QEMU),虚拟机控制台已显示在当前终端中
  • 若使用方式 B(libvirt),您可随时通过主机终端执行以下命令连接至虚拟机控制台:
sudo virsh console AsterNOS
  1. 登录系统并进入配置模式

在登录提示符处使用默认凭据访问系统:

  • 用户名:admin
  • 密码:asteros
  1. 分步配置与验证
  • 步骤 A:启动命令行界面并进入配置模式
sonic-cli
configure terminal
  • 步骤B:配置WAN接口
interface ethernet 1
  description WAN_Port
  ip address 192.168.200.178/24
  # Assign this interface to NAT zone 1. By convention, the outside (WAN) interface is a non-zero zone, and inside interfaces are zone 0.
  nat-zone 1
exit
  • 步骤C:配置VLAN及网关接口
vlan 100
exit
vlan 200
exit

interface vlan 100
  description LAN1_Gateway_for_PC1_and_PC3
  ip address 10.0.1.1/24
exit

interface vlan 200
  description LAN2_Gateway_for_PC2
  ip address 10.0.2.1/24
exit
  • 步骤D:将物理LAN端口划分至VLAN
interface ethernet 2 # Connects to PC1
  description Port_for_PC1
  switchport access vlan 100
exit

interface ethernet 3 # Connects to PC2
  description Port_for_PC2
  switchport access vlan 200
exit

interface ethernet 4 # Connects to PC3
  description Port_for_PC3
  switchport access vlan 100
exit
  • 步骤E:配置路由与NAT
# Configure the default route to point to the upstream router
ip route 0.0.0.0/0 192.168.200.1
# Enable NAT globally
nat enable
# Create a NAT pool named 'lan_pool' using the router's public IP
nat pool lan_pool 192.168.200.178
# Bind the pool to a policy named 'lan_binding' to apply NAT to all traffic crossing zones
nat binding lan_binding lan_pool
  • 步骤F:保存配置
write
  • 步骤G:验证配置
show ip interfaces
show ip route
show vlan summary
show nat config

注意:请确保接口的管理/运行状态显示为 up/up。

配图
配图
配图
配图

4.7 客户端PC配置步骤

  • PC1:设置IP地址为10.0.1.10,子网掩码为24位,网关为10.0.1.1,DNS服务器为8.8.8.8
  • PC2:设置IP地址为10.0.2.10,子网掩码为24位,网关为10.0.2.1,DNS服务器为8.8.8.8
  • PC3:设置IP地址为10.0.1.11,子网掩码为24位,网关为10.0.1.1,DNS服务器为8.8.8.8

5. 功能与性能验证

本章将通过一系列测试,全面验证虚拟路由器的核心功能和性能指标是否符合预期。

5.1 整体测试计划

我们将按照以下测试序列进行:

  1. 二层交换性能(VLAN 内):使用 iperf3 测试 PC1 与 PC3 之间的传输速率,以验证同一 VLAN 内的交换性能。
  2. 三层路由性能(VLAN 间):使用 iperf3 测试 PC1 与 PC2 之间的传输速率,以验证不同 VLAN 之间的路由性能,并使用路由器侧命令进行监控。
  3. 外部连通性(NAT 验证):使用 ping 测试内部 PC 能否访问公共互联网,以验证基本的 NAT 连通性。

5.2 二层交换性能测试(PC1 <-> PC3)

  • 目的:验证虚拟路由器在同一 VLAN 内的二层数据转发能力。由于 PC1 和 PC3 同属 VLAN 100,它们之间的通信由二层交换处理。
  • 步骤
  1. 在 PC1 (10.0.1.10) 上,打开命令提示符并确保运行 iperf3 服务器:iperf3 -s
  2. 在 PC3 (10.0.1.11) 上,打开命令提示符并执行客户端测试:iperf3 -c 10.0.1.10 -t 30
  • 结果分析:测试速率应稳定在 950 Mbits/秒 左右,达到千兆线速。
配图

5.3 三层路由性能测试(PC1 <-> PC2)

  • 目的:验证虚拟路由器在不同 VLAN 之间的三层路由性能。PC1(VLAN 100)与 PC2(VLAN 200)之间的通信需要经过三层路由。
  • 步骤:
  1. 在 PC1 (10.0.1.10) 上,打开命令提示符并确保运行 iperf3 服务器:iperf3 -s
  2. 在 PC2 (10.0.2.10) 上,打开命令提示符并执行客户端测试:iperf3 -c 10.0.1.10 -t 30
  • 结果分析:测试速率同样应达到约 950 Mbits/秒 的线速性能。
配图
  • 路由器端验证:在进行 iperf3 测试期间,您可以通过在 AsterNOS 设备上执行 show counters interface 命令,实时监控接口统计信息。

5.4 互联网访问功能测试

  • 目的:验证 NAT 功能对所有内部 VLAN 均生效。
  • Ping 连通性测试:
  1. PC1(VLAN 100)上执行 ping 8.8.8.8。您应当能收到成功的回复。
配图
  1. PC2(VLAN 200)上执行 ping 8.8.8.8。您同样应当能收到成功的回复。
配图

6. 结论

本文档充分证明,AsterNOS-VPP 成功融合了成熟的 SONiC 生态与高性能 VPP 数据平面。

通过基于标准 x86 服务器部署虚拟机并采用 PCI 直通技术,用户能够快速构建支持线速二层/三层转发及 NAT 功能的企业级虚拟网关。对于追求高性能、灵活性及成本效益的网络环境而言,AsterNOS-VPP 无疑是理想解决方案。

配置指导:新一代云化园区方案设计及实施指南

1 准备工作

1.1 方案规划

按照用户的建筑格局、走线、预算、可靠性要求等因素确定整体网络架构。
方案确定后与客户核对,确定。

1.1.1 方案选型

云化园区控制器目前支持3种典型场景:

  • Spine-Leaf:经典云化园区场景。
  • Spine-Aggregation-Leaf:支持单Aggregation、双Aggregation;Spine-Leaf混合场景。
  • 传统二层场景:单核心下挂接入交换机。
  • 开放云联场景:仅Leaf交换机,上游设备不管控。
1.1.1.1 中小型园区

适合一组Spine可以承接所有Leaf的单PoD场景。

中小型园区
1.1.1.2 中大型园区

一组Spine无法承接所有Leaf的多PoD场景。其中单汇聚只需要一台汇聚设备;多汇聚需要2台,更加可靠。

中大型园区
1.1.1.3 混合场景

客户现场可能因为各种原因,多个建筑的组网不尽相同,比如新建楼栋线路富裕、老旧楼栋线路故障且修复困难;混合场景适应性更强。

混合场景部署
1.1.1.4 传统二层场景

二层场景Leaf交换机业务二层透传,VLAN-MAC转发;Leaf通过带内管理。

传统二层场景
1.1.1.5 开放云联场景

适合于上游设备为其他厂商,Leaf部署在二层或者三层的场景。

开放云联场景

1.1.2 与上游设备对接方式

根据上游设备的网络能力或者用户偏好选择合适的对接方式。

  • Spine-Aggregation-Leaf场景支持多种方式与上游设备对接:本地三层接口+静态路由;MC-LAG+静态路由;eBGP;OSPF等。
  • Spine-Leaf场景支持通过三层接口或VLANif与上游对接;静态路由做业务转发,eBGP。
  • 二层场景只需要通过三层接口与上游设备对接;静态路由做业务转发。
  • 开放云联场景支持三层接口与上游设备对接。

依据网络规模、接口形态等因素选择合适的型号。

1.2 设备选型

依据网络规模、接口形态等因素选择合适的型号。

1.2.1 命名规则介绍

CX202P-24Y-M、CX204Y-48GT-HPW2-M

高速接口低速接口可选
Q : 400G
D : 200G
P : 100G
GT : 1GE电
MT : 2.5GE电
S : 10GE光
Y :25GE光
-HPW[1..4] PoE+,HPW2:24口PoE+ HPW3:36口PoE+

1.2.2 产品彩页

产品彩页-星融元CX-M系列云化园区交换机-CN-e-20250710.v2.4.pdf

1.3 设备清单

按照规划拓扑整理设备、模块、光纤等物料清单。

型号用途数量
CX532P-Mspine2/2
CX202P-24Y-MAggregation4/4
CX206P-48S-MAggregation2/2
CX204Y-48GT-MLeaf80/80
CX204Y-48GT-HPW2-MLeaf接AP4/4
CAP6020-Z10/10
ET2500模拟终端,每台出12个电口上联Leaf1/10
42U的机柜放置设备5/5
100G多模光模spine-agg互联(已+2备用)26
25G多模光模块agg-leaf互联(已+10备用)350
10G多模光模块Spine-Router互联4
多模光纤其中30根7-10米,160根3-5米(分别用于跨机柜和较远距离、本机柜链接)(已+10备用)200
网线1-3米,ET2500-Leaf互联(已+10备用)10
总电源功率10%冗余8788瓦
电源插座(已+10备用)108
CCN控制器云端wifi.asterfusion.com1/1
出口跳纤从设备部署位置到苏州办网出口路由器,根据实际情况准备跳纤2/2

1.4 设备License

通过技服或销售获取AP的授权文件,借测项目默认2个月授权,正式销售永久授权。

1.5 设备信息表

信息用于记录设备安装位置、MAC、SN、hostname,并记录连线表等实施中的重要信息。
云化园区-100shades-信息表-i-20250110-v1.0

1.6 业务规划

IP规划

总网段172.22.0.0/16
业务业务子类IP地址段地址池范围VLAN网关所在设备
spine上联10.210.1.252/24100openwrt
互联地址172.22.253.128/25128-255
AP管理地址AP管理地址172.22.254.1/24172.22.254.1-172.22.254.2551000
控制器172.22.254.2/24
Agg带内管理172.22.253.1/27172.22.253.1-172.22.253.311001
peer-link1002
loopback地址172.22.252.1/24172.22.252.1-172.22.252.255
有线终端172.22.251.1/24172.22.251.1-172.22.251.2551003
无线终端172.22.249.1/24172.22.250.1-172.22.249.2551004

2 开始部署

2.1 设备安装

按照规划拓扑安装设备,记录设备序列号和MAC地址,填写设备信息表。

2.2.1 部署位置选择

控制器部署在spine旁、公网服务器、leaf下三种情况的配置方式有所不同,根据用户实际情况选择。
推荐部署在公网服务器随时随地都可访问;部署在spine旁通常比Leaf下有更高的可靠性。
本案为方便从西安访问控制器,部署在云端服务器:wifi.asterfusion.com

注意:控制器部署在一台Spine旁边时,为保证从另外一台Spine过来的流量能够访问控制器,需要通过iBGP发布控制器路由:network 172.22.253.253/30。

2.2.2 安装控制器

将控制器版本的打包文件上传到需要部署的环境,一键安装,-i参数指定控制器IP地址:

./controller_V1.0_R07.bin –i

部署成功后,用户可以通过 https://ip_address 直接访问控制器。
注意:若从R7之前的版本升级到R7之后的版本,且需要保留之前的配置,在安装时不携带-i参数即可.

  • 使用docker-compose一键启动控制器,控制器默认安装目录为 /opt/controller/ 下:
cd /opt/controller/controller_V1.0_R07/wlan-cloud-ucentral-deploy/docker-compose/
docker-compose up -d

参数说明:

  • -d :表示后台执行
  • up :表示启动控制器
  • down :表示关闭控制器
  • 完全清除重新安装

注:无需保留原有数据清除重新安装。以下为清除方法,安装方法同“初次安装”。

docker-compose down
docker image ls
docker rmi 手动列出IMAGE ID
docker volume ls
docker volume rm openwifi_kafka_data openwifi_postgresql_data openwifi_zookeeper_data openwifi_zookeeper_datalog

2.2.3 登录控制器

https://控制器IP或域名
默认用户名/密码: aster@asterfusion.com / Asteria
初次登录系统强制要求修改密码。
本案控制器:https://wifi.asterfusion.com

2.3 创建组织和场所

登录控制器后,点击右上角的【+】添加场所

步骤

完成组织创建后,双击创建的组织,进入该组织下:

步骤

点击【+】按钮创建一个新的场所
所是管理员可以用来监控、管理、配置所有网络设备的集合。

步骤

2.4 设备入库

设备导入至场所

下载导入模板:

导入模版

将设备信息按照模板填写后,导入到所在场所。

上传后先点击“测试上传数据”对数据进行校验,通过点击“上传数据”开始入库。

3 开始配置

3.1 规划拓扑

拓扑规划

采用中大型园区,多汇聚场景。接入交换机分为3组。

手动规划拓扑

3.1.1 自动生成规划拓扑

自动生成拓扑

3.1.2 按照规划设置

注:红色框内为手动必填内容,与规划表核对填写,预留充足时间。规划拓扑50台设备需要至少1.5h。

设置

3.1.3 快速导入规划拓扑

适合设备数量非常多的情况,excel也为项目管理提供材料,这种方式非常快速。
导入方式不需要选择方案和设备,会根据导入信息自动创建设备。

3.1.3.1 下载模板

下载模版

3.1.3.2 填写规划表

填写规划表

3.1.3.3 导入规划表

导入

3.1.3.4 自动校验规划表

WEB会校验用户输入,并做出提示。修复所有错误,确认无误后点击应用配置。

校验

3.1.3.5 自动生成拓扑

完成互联信息后将得到包含互联关系的完整拓扑。

自动生成拓扑

3.2 基础网络配置

3.2.1 Agg带内管理IP设置

Agg工作在二层模式,所以配置并不需要经常变动,但为了监控设备和网络状态需要为他提供带内管理网段。这里只需要设置网段,控制器会自动从中分配IP给所有Agg设备。

配置

3.2.2 Agg组MC-LAG的互联IP和VLAN设置

Agg组都会建立MC-LAG,PeerLink的IP仅用于本地控制器面通信、MAC和ARP表同步,所以所有Agg组的PeerLink和IP都是相同。

配置2

3.2.3 Spine与上游设备互联设置

配置

3.2.4 交换机的统一系统设置

配置

3.3 业务配置

3.3.1 有线业务配置

3.3.1.1 有线终端业务配置

配置

3.3.1.2 AP管理和业务配置

配置

3.3.1.3 高可用DHCP服务器

可选将DHCP服务器设置在Spine上,2台Spine将自动启用DHCP failover高可用服务器;两台服务器协同工作,可靠性更高。

注意:failover必须两台设备时间同步,否则信息无法同步。

配置

创建DHCP配置

配置
配置

支持静态地址绑定,绑定的地址需要在网段内且动态地址池之外。

配置

查看地址池使用情况

配置

3.3.2 无线业务配置

注意:设置无线配置模板的“标签”:该标签必须与AP设备的“标签”一致,控制器会在AP初次上线时自动下发“标签”一致的无线配置。

无线业务配置

AP设备的“标签”:在导入库存时设置“AFtag”,或在系统库存中批量修改。

无线业务配置

4 设备上线

4.1 Spine-1初始配置

上线阶段只需要给其中一台Spine手动配置上线,其他设备自动获取地址上线。
注意:Spine-1上与Spine-2的互联接口也划为downlink,spine2通过该接口获取地址上线。

interface ethernet 130
    ip address 10.210.1.252/24

connect-controller
    uplink ethernet 130 ip address 10.210.1.252/24 gw 10.210.1.1
    controller-server ip address 172.22.253.254
    downlink ethernet 1-125 ip address 172.22.55.1/24

4.2 Agg第一阶段配置

将脚本添加到控制器,类型为sonic-cli,保存。下发给Agg-G3-1。
注意:如果Leaf上行口连了2台Agg,只需将其中一台Agg下行口加到Access Vlan,否则Leaf的两个上行接口将获取到相同的IP地址。另外一台Agg无需下发脚本。
本案只给Agg-G3-1下发该脚本:

configure
vlan 101
exit
port-group ethernet 1-20
switchport access vlan 101
exit
interface ethernet 49(连接dhcp地址池所在spine1的上行口必须放在最后下发)
no router-interface
switchport access vlan 101
exit
interface vlan 101(最后vlan重新获取ip)
ip address dhcp-alloc
exit
end

4.3 所有设备上线

5 下发配置

5.1 下发基础网络配置

配置
配置
配置

5.2 下发有线业务配置

配置

5.3 下发无线业务配置

将配置推送给“标签”匹配的设备。

配置

6 业务验证

6.1 设备在线情况

验证

6.2 有线业务验证

终端可以获取到地址,访问互联网正常。

6.3 无线业务验证

终端可以获取到地址,访问互联网正常。

7 运维

7.1 告警

7.1.1 告警信息

运维-告警展示了当前告警和管理员对当前告警处理/确认后执行清除动作后的历史告警信息。

运维

7.1.2 告警阈值设置

每一个告警监测项都有其阈值,针对不同的环境和场景可自行设置默认值。

告警阈值同样可以一件同步到子场所或子组织,修改后需再次执行同步操作生效。

运维

7.1.3 告警阈值同步

将当前组织或场所的告警配置同步到其子组织或子场所;同步操作只执行一次,修改后需要重新执行同步。

运维

7.1.4 邮件告警

  • 发件人设置

设置内容参见邮件服务商设置页面的“第三方邮箱客户端登录”。
设置完成后,点击“网络连通性”测试按钮验证配置是否正确。

告警
  • 设置告警收件人

在组织或者场所的“配置-邮件通知”页面设置收件人,收件人是控制器已经存在的用户。
可选发送不同的告警类型、告警级别。

告警
  • 收件人设置同步

将当前组织或场所的告警收件人配置同步到其子组织或子场所;同步操作只执行一次,修改后需要重新执行同步。

告警
  • 邮件告警内容

控制器会将一段时间的告警信息合并后发送给收件人。

告警

7.2 巡检

7.2.1 业务巡检

  • 一键巡检

一键巡检将立即对指定场所和巡检内容执行一次巡检,并生成巡检记录。

巡检
  • 周期巡检

开启周期巡检后,控制器将对指定场所和项目执行周期性的巡检,并生成巡检报告。

巡检
  • 巡检记录

查看详细信息

巡检
巡检
  • 巡检报告
巡检

巡检报告内容:

巡检

7.2.2 系统巡检

系统巡检是对控制器服务器系统的状态检查。

巡检

8 扩容

8.1 扩容一个接入交换机组

一个接入交换机组包含了1台或2台Aggregation和若干台Leaf交换机。
扩容时如果已经完成规划拓扑并给spine下发了配置,需要先将spine连接agg的下行口移出LAG,否则下行口无法加到4094、dhcp临时地址池无法生效。

1、临时地址池路由宣告

扩容时spine-1和spine-2都已经下发了正式配置,流量可能从spine-1或spine-2过来,但此时spine-2上没有临时地址池的路由,所以spine-1需要将临时地址池网段宣告出去。

注意:推送配置后,该network会被控制器清除;如需保留,请使用frr对比工具。

router bgp 64513
    address-family ipv4 unicast
    network 172.22.55.0/24(临时地址池网段)

2、Spine-1扩容脚本

将扩容脚本添加到控制器,类型为sonic-cli,保存。下发给Spine-1。
注意:确定好扩容接入交换机组在spine上的接口,将其设置为downlink。

configure
connect-controller
downlink ethernet 1,5,9,13 ip address 172.22.55.1/24
do configure
dhcp pool connect-controller
capwap-ac {{CONTROLLER_SERVER_IP}}
end

3、Agg上线

Agg通过临时地址池自动获取地址、并在控制器上线。

4、Agg第一阶段配置脚本

将扩容脚本添加到控制器,类型为sonic-cli,保存。下发给Agg-1。
注意:如果Leaf上行口连了2台Agg,只需将其中一台Agg下行口加到Access Vlan,否则Leaf的两个上行接口将获取到相同的IP地址。另外一台Agg无需下发脚本。
本案只给Agg1下发该脚本:

configure
vlan 101
exit
port-group ethernet 1-20
switchport access vlan 101
exit
interface ethernet 25(连接dhcp地址池所在spine1的上行口必须放在最后下发)
no router-interface
switchport access vlan 101
exit
interface vlan 101(最后vlan重新获取ip)
ip address dhcp-alloc
exit
end

5、扩容组所有设备上线

观察Spine-1上ARP情况,该接入交换机组的Agg和Leaf都获取到了IP,并在控制器上线。

6、确认版本、升级、重启

7、下发基础网络配置

8、下发有线业务配置
先将新Leaf加入有线业务配置模板或新建模板。下发方法与初次下发相同。

7.2、同Agg的Leaf扩容

临时地址池宣告

扩容时spine-1和spine-2都已经下发了正式配置,流量可能从spine-1或spine-2过来,但此时spine-2上没有临时地址池的路由,所以spine-1需要将临时地址池网段宣告出去。
注意:推送配置后,该network会被控制器清除;如需保留,请使用frr对比工具。

router bgp 64513
    address-family ipv4 unicast
    network 172.22.55.0/24(临时地址池网段)

在spine-1添加回程路由
路由指向扩容的Leaf所在Agg的带内管理地址。
注:控制器下发配置自动清除该配置。

ip route 172.22.55.0/24 172.22.253.7

Agg-1下发扩容脚本
注:控制器下发配置自动清除该配置。

configure
connect-controller
downlink ethernet 21 ip address 172.22.55.1/24
do configure
dhcp pool connect-controller
capwap-ac {{CONTROLLER_SERVER_IP}}
end

确认版本、升级、重启

切换设备场所

扩容
扩容

注:此时一并设置设备“名称”。

修改规划拓扑

新加设备

扩容

链接拓扑

设置设备信息

下发基础网络配置

注意:下发基础网络时,仅需下发相关设备,不涉及的设备无需下发。

下发有线业务配置

先将新Leaf加入有线业务配置模板或新建模板。下发方法与初次下发相同。

7.3 跨Agg组的Leaf扩容

临时地址池宣告

扩容时spine-1和spine-2都已经下发了正式配置,流量可能从spine-1或spine-2过来,但此时spine-2上没有临时地址池的路由,所以spine-1需要将临时地址池网段宣告出去。
注意:推送配置后,该network会被控制器清除;如需保留,请使用frr对比工具。

router bgp 64513
    address-family ipv4 unicast
    network 172.22.55.0/24(临时地址池网段)

Spine-1地址池配置【命令行】

注意:show link-aggregation summary确认Leaf上联的Agg与Spine互联的下行LAG口。
本案需要为G1、G2、G3分别扩容1、1、2台Leaf设备。

vlan 4093

interface link-aggregation 1(到Agg-G1)
    switchport access vlan 4093
interface link-aggregation 2(到Agg-G2)
    switchport access vlan 4093
interface link-aggregation 3(到Agg-G3)
    switchport access vlan 4093
    
dhcp pool connect-controller
 address-pool 172.22.55.1 172.22.55.254
 capwap-ac 120.26.204.254
 network 172.22.55.0 255.255.255.0
 routers 172.22.55.1
 vlan 4093

Agg放行DHCP【命令行】

注意:正式配置中,Agg只有trunk vlan,需要放通acces vlan 4093,Leaf的dhcp请求才能被转发到Spine。双汇聚场景只需要其中一台Agg添加如下配置即可。
将Agg-1连接扩容Leaf的下行接口和Agg-1连接Spine-1的上行口加入vlan 4093 access。

vlan 4094

interface ethernet 25(上行口)
    switchport access vlan 4093
interface ethernet 21(下行口)
    switchport access vlan 4093

注:后续步骤同“扩容一台Leaf交换机”

附:现场照片

现场照片
现场照片
现场照片

配置指导:基于Asterfusion CX-M系列产品的园区网实现- 4. 测试验收及运维

1 Purpose

为了介绍使用Asterfusion CX-M系列产品及控制器产品实现园区网络整网部署的方法,我们编写了园区网规划、安装、实施和测试验收等一系列文档。通过阅读这些文档,用户可以简单快捷的实现园区网络的规划和部署上线,当用户已经规划好整体网络并做好上线前准备工作后,用户可以在30分钟内实现整网部署上线。本文是第四部分:测试验收及运维;主要阐述网络实施完成后的验收测试工作,看是否达到设计标准,并且介绍整网的运维工作。

2 Asterfusion整网情况介绍

根据整体网络规划,我们已经将整张Asterfusion campus network建设完成,下面介绍一下整体网络情况。

2.1 整网示意图

从控制器上可以查看整网示意图,点击右上角map按钮,显示如下:

示意图
示意图

通过map可以很直观的查看当前设备在线情况。

2.2 各office真实拓扑

通过左侧导航栏的组织菜单,可以快速查看各office的真实拓扑,以BJ office为例,如下:

真实拓扑

3 网络验收测试

3.1 同Leaf下WI-FI漫游测试

将手机从AP-1附近接入网络,然后移动到AP-2附近,期间持续ping外部网站。并观察设备切换到AP-2时,是否会断网。
本次测试流量路径如下:

漫游测试

手机终端从AP-1接入,流量如红色所示,当发生AP切换后,手机终端流量到达leaf的路径切换为绿色。
本次测试在BJ office进行,使用cloudcampus app进行测试,测试截图如下:

测试截图

从上面结果可以看到,漫游切换的时间为3ms,并且漫游切换时,0丢包,0掉线。

后续又经过多次测试,发生切换时,均为网络0丢包,0掉线,说明发生漫游时,网络比较稳定。

3.2 不同Leaf之间的WI-FI漫游测试

本次测试拓扑如下图所示:

漫游测试

手机终端从AP1开始接入网络,然后保持移动,分别经过AP2,AP3等所有AP,手机数据流量路径从红色虚线变为绿色虚线,期间从Leaf1设备跨越到Leaf2设备。本次测试在SZ office进行,测试结果如下:

截图

从上面结果可以看到,手机终端在移动过程中,持续在各个AP之间漫游,但始终没有断网,也没有丢失数据包,漫游切换时间在及时毫秒左右,比较稳定。

3.3 同一leaf下的有线终端设备互传文件速率测试

将leaf1上链接一台笔记本电脑,并上传文件到leaf1下的server上,查看传输速率。
本次测试的流量路径如下:

测试拓扑

如上图所示,红色虚线表示流量路径。
本次测试采用Xterm工具进行传输测试,测试截图如下:

xterm

从截图可以看出,传输一个5GB大小的文件,传输速率为946.86Mb/S,基本已经达到千兆网卡的上限速率。

3.4 不同leaf下的有线终端设备互传文件速率测试

将leaf3上链接的一台电脑上的文件上传到leaf1的server上,查看传输速率。
本次测试的流量路径如下:

测试拓扑

如上图所示,红色虚线表示流量路径。
本次测试采用Xterm工具进行传输测试,测试截图如下:

测试截图

从截图可以看出,传输一个1.6GB大小的文件,传输速率为941.32Mb/S,基本已经达到千兆网卡的上限速率。
3.4及3.4章节测试结果说明内网传输速率可达千兆速率,满足设计规划时的需求。同时可以看出,内网速率瓶颈在终端网卡性能,不论是否跨leaf传输数据,整个内网带宽都不存在瓶颈。

3.5 手机下载速率测试

用手机下载文件,查看速率,测试结果如下:

测试结果

测试结果说明网络颜值在11毫秒左右,下载和上传速率都符合预期。

3.6 WI-FI稳定性测试

用手机连接WI-FI,在办公区域内移动查看信号稳定性,结果如下

结果

测试结果表明,无论静止在一个AP区域,还是在整个office区域内移动,WI-FI信号都很稳定,会根据信号强弱自动漫游到合适的AP下面。

4 网络运维

前面已经将Asterfusion campus network建设完成,并且测试结论符合建设预期。接下来介绍一下网络运维工作,整网都通过控制器来运维管理。

4.1 设备状态查看

设备状态查看

此处可以看到所有设备的基本信息,包括内存及cpu使用率等等。同时点击每台设备的mac信息,还可以单独查看每台设备详细信息。

详细信息
详细信息

如果需要链接到设备命令行查看底层信息,可以点击链接按钮进入:

面板信息
命令行

4.2 网络整体信息呈现

此处可以查看整网设备的信息,包括告警、健康状态等。

dashboard
dashboard

4.3 日志信息

此处可以查看设备日志及控制器日志等信息

日志信息

4.4 整网告警信息

此处可以查看告警信息,包括当前信息及历史告警信息。

告警信息

4.5 用户信息

此处可以查看、添加和删除各种用户。

用户信息

角色包括系统管理员,组织管理员,一般管理员及普通用户, 系统管理员拥有最高权限,其余角色还可以选择对应的组织及场所。

用户信息2
用户信息3

4.6 用户信息分析

可以通过控制器直观分析各研发中心的终端设备上线情况,信号状态等信息。以BJ为例,如下:
有线终端信息。

用户信息分析

无线终端信息。

无线终端信息

4.7 流量可视化呈现

各研发中心的网络都可以查看内网的流量情况,通过web客户端访问出口设备CX102S上DPU2的ip地址,可以查看网络流量的具体统计信息。

以WH office为例,总览信息如下:

信息总览

活跃流信息,如下:

活跃流信息

主机信息如下:

主机信息

通过查看流量统计信息,可以及时发现特定主机的访问流量,并可根据这些信息在出口不止ACL规则来限制特定流量。

5 结论

Asterfusion campus netork已经完成部署,总结一下整个部署过程,有以下优点:
1、 整网部署简单快捷。在做好控制器安装及完成综合布线之后,从设备上电到完成部署,单个研发中心仅需30分钟即可完成。
2、 无线网络支持无线漫游,终端设备可以在各AP之间无缝切换,切换过程用户无感知,不丢包,不掉线。
3、 全三层组网,分布式网关,网络内部没有广播报文,有效提高了内部网络带宽利用率。
4、 各地办公室内网带宽高,基本不存在网络传输性能瓶颈。
5、 业务添加方便,如需新增有线业务网段,只需配置业务vlan及网关,下发即可生效。
6、 整网运行状态可直观呈现,能够随时查看设备及控制器的运行状态,CPU及内存使用率,运行时长等信息。
7、 运维方便,能够实时查看设备健康状态,并能够根据日志及告警信息快速定位问题,及时处理。
8、 整个内网流量信息可视化呈现,方便管理员分析各终端上网情况。

6 云化园区交换机

配置指导:基于Asterfusion CX-M系列产品的园区网实现- 3.详细规划及实施

1 Purpose

为了介绍使用Asterfusion CX-M系列产品及控制器产品实现园区网络整网部署的方法,我们编写了园区网规划、安装、实施和测试验收等一系列文档。通过阅读这些文档,用户可以简单快捷的实现园区网络的规划和部署上线,当用户已经规划好整体网络并做好上线前准备工作后,用户可以在30分钟内实现整网部署上线。本文是第三部分:详细规划及实施;主要阐述根据各研发中心的工勘情况规划设计具体网络拓扑,具体上线前的预配置工作以及网络实施上线工作。

2 WH办公网规划

我们先从WH园区网规划做起,下面是WH园区网具体规划、设计和实施过程。

2.1 需求

WH园区目前人员规模约为50人,办公室面积约为400平米,其中包括两个机房,两个会议室,及开放办公区。研发用服务器设备约为70台。
新建园区网络需满足办公人员及研发服务器联网需求,互联网出口采用两路,一路拨号上网,一路专线。同时还需满足WH办公园区与云上研发服务器及其他城市办公网内网的互联互通。
WH园区具体工勘情况见下表:

条件备注
人员数量50人/
办公面积400平米2个机房,2个会议室
研发服务器70台/
有线终端50台/
无线终端50*2=100台/

2.2 WH网络设备规划

根据具体工勘信息,计算得出所需设备数量为10台,2台spine交换机,4台leaf交换机,3台AP,1台智能网关GW。其中leaf-1和leaf-2设备用于研发服务器的接入。Leaf-3和leaf4用于用户有线终端和AP的接入。3台AP,其中1台主要覆盖两个会议室,另外2台覆盖开放办公区及机房。智能网关GW设备负责出口路由、VPN及DHCP Server业务。

2.3 WH网络拓扑

网络拓扑

2.4 WH网络设备及版本

Model:
CX206Y-48GT-M switches
CX204Y-48GT-M switches
CX102S-16GT-D2-HPW-M switches
CAP6020-Z (AP)
Version:
CX206Y-48GT-M : AsterNOSv5.2R009P01
CX204Y-48GT-M : AsterNOSv5.2 R009P01
CX102S-16GT-D2-HPW-M:AsterNOSv5.2 R011
CAP6020-Z : TIP-V3.0R003P1

2.5 GW设备CX102S-16GT-D2-HPW-M使用简介

CX102S智能网关设备具备161GE、210GE接口,并配备2块DPU卡,本次部署使用此设备作为网关,在DPU1上部署Openwrt系统,实现路由网关功能,并使用系统集成的wireguard组件实现VPN功能。在DPU2上部署openclash及ntopng系统,实现网络业务代理及网络流量图形化呈现功能。

产品示意图如下:

产品示意图

想具体了解此产品请点击链接:https://asterfusion.com/product/cx102s-dpu/

2.6 WH网络互联ip地址规划

2.6.1 设备互联地址

地点本端设备本端端口本端IP对端设备对端端口对端互联IP备注
WHspine1482.2.2.1/30spine2482.2.2.2/30peerlink
49172.16.11.33/29GW17172.16.11.36/29 
spine2482.2.2.2/30spine1482.2.2.1/30peerlink
49172.16.11.33/29GW18172.16.11.36/29 
leaf11-48vlanif:10.250.0.1server 10.250.0.0/24自配IP
leaf21-48vlanif:10.250.0.1server 10.250.0.0/24自配IP
leaf31-48Vlanif:192.168.23.1Youxian-user 192.168.23.0/24 
leaf41-4Vlanif:172.16.100.1AP-mgmt 172.16.100.0/24 
5-48Vlanif:192.168.23.1Youxian-user 192.168.23.0/24 
GW17172.16.11.36/29    
18172.16.11.36/29    
19 Openwrt 172.16.11.34/29内部接口
20 Ntopng 172.16.11.35/29内部接口
1VLAN101 pppoe    
2VLAN102 zhuanxian    

2.6.2 设备loopback地址

设备loopback地址
spine1172.16.1.1/32
spine2172.16.1.2/32
leaf1172.16.1.3/32
leaf2172.16.1.4/32
leaf3172.16.1.5/32
leaf4172.16.1.6/32
GW172.16.1.7/32

2.6.3 设备VLAN信息

VLAN ip地址
vlanip备注
200172.16.11.36/29与spine互联
51172.16.100.1/24AP管理网关
52192.168.22.1/24无线用户网关
53192.168.23.1/24有线用户网关
5410.250.0.254/24研发服务器网关

2.6.4 AP及用户终端设备地址

终端设备IP网段分配及DHCP地址池
名称vlan网关地址池DNS 
AP-mgmt51172.16.100.1172.16.100.2-254218.104.111.111218.104.111.114 
AP-user52192.168.22.1192.168.22.2-254218.104.111.111218.104.111.114 
Youxian-user53192.168.23.1192.168.23.2-254218.104.111.111218.104.111.114 
server5410.250.0.254   

2.7 WH网络设备及耗材表

城市编码名称型号描述数量
武汉98210275交换机CX206Y-48GT-HPW4-M 48*1GE,6*10GE2
98210264交换机CX204Y-48GT-HPW2-M-AC 48*1GE,4*10GE,POE4
98210438APCAP6020-Z吸顶AP3
98510039光模块OM-10G-MM850-300-LC10G,多模20
98210468网关CX102S-16GT-D2-HPW-M16*1GE,2*10GE1
 光纤10GE,多模光纤10GE多模10
 网线6类网线6类网线150

3 在控制器上进行网络规划

3.1 建立组织及办公场所

首先建立根组织,如下

建立组织

然后建立公司网络组织,如下:

输入

然后建立办公场所,如下:

建立办公场所

3.2 设备导入到控制器仓库

将设备导入到控制器仓库有两种方式,一种是手动添加导入,另一种是Excel表格导入。

1、 手动添加导入:

在对应场所的设备仓库栏或根目录下的仓库栏都可手动添加设备,如下所示:

手动添加导入

具体信息填写如下:

填写信息

2、 excel表格导入:

将需要上线的设备MAC地址、设备型号信息记录到excel表格中,然后导入到控制器,格式如下:

excel

需要在对应场所的设备仓库栏下导入文件, 如下所示:

导入

3.3 将仓库设备导入到办公场所

如果是在办公场所下通过excel文件导入的设备,则不再需要此步,保证设备在对应的场所下即可。
首先勾选所有要导入到指定场所的设备,然后点击批量导入场所按钮,如下所示:

批量导入
批量导入

导入完成后,即可在控制器上规划拓扑。

3.4 在控制器上规划拓扑

首先在WH-office场所下,选择网络方案,如下

选方案
选方案

按照规划,选择spine及leaf的数量。
然后规划网络拓扑,将仓库中设备拖入右侧空白,并连线,即可完成网络拓扑规划。

规划拓扑

并且点击每台设备的编辑按钮,可以对设备基础信息及互联接口等信息进行配置,如下

规划拓扑
规划拓扑

根据2.6章节的网络规划,依次将所有设备基础配置信息填入。

3.5 基础网络配置

基础网络配置主要是对spine设备的上联信息进行配置,以确保与网关设备的网络配置正确。

网络配置1

此处配置上联设备网关地址

网络配置2

此处配置两台spine设备与出口网关设备做MC-LAG互联

网络配置3
网络配置4

此处配置HA上联端口的ip地址及vlan信息

vlan信息

此处配置时区及NTP信息。

ntp信息

配置好之后保存。

完成上述步骤后,即可进入方案实施环节了。

4 WH办公网实施

4.1 设备上架及综合布线

  1. 将设备安装到机房机柜的正确位置。
  2. 将AP安装到办公区规划的位置。
  3. 对办公区所有有线设备及工位进行综合布线,确保网线正常可用。

4.2 设备上电

  1. 确保设备按照2.3章节拓扑正确连接。
  2. 将所有设备上电。

4.3 设备与控制器链接

4.3.1 配置两台spine设备临时ip,以及GW设备出口路由

配置两台spine设备上行链路的临时ip,以及GW网关的路由信息,确保两台spine设备能够连接互联网。
分别通过串口登录两台spine设备,账号如下:
用户名:admin
密码:asteros
登录后如下:

登录后界面

在两台设备上分别配置如下命令:

Spine-1# configure terminal
Spine-1(config)# interface ethernet 49
Spine-1(config-if-49)# ip address 172.16.11.34/29
Spine-1(config-if-49)# exit
Spine-1(config)# ip route 0.0.0.0/0 172.16.11.36
Spine-1(config)# ucentral-client server 52.76.134.89
Spine-1(config)# ucentral-client enable

此时两台spine设备应该已经在控制器上上线。

4.3.2 配置临时dhcp服务确保leaf设备上线

配置DHCP服务有两种方式
第一种是通过串口配置,以其中一台spine设备作为临时dhcpserver,这里选择spine-2,配置如下:

Spine-2(config)# interface vlan 4094
Spine-2(config)# port-group ethernet 51-54
Spine-2(config- port-group-51-54)# switchport access vlan 4094
Spine-2(config)# interface vlan 4094
Spine-2(config-vlanif-4094)# ip address 172.16.100.1
Spine-2(config-vlanif-4094)# exit
Spine-2(config)# dhcp pool test
Spine-2(config- dhcp-pool-test)# network 172.16.100.0 255.255.255.0
Spine-2(config- dhcp-pool-test)# address-pool 172.16.100.2 172.16.100.254
Spine-2(config- dhcp-pool-test)# lease-time 7000 10000
Spine-2(config- dhcp-pool-test)# routers 172.16.100.1
Spine-2(config- dhcp-pool-test)# capwap 52.76.134.89
Spine-2(config- dhcp-pool-test)# vlan 4094

Note:此处的DHCP 服务只是为leaf设备提供临时地址,以便leaf设备能够访问互联网并发现控制器,当控制器上下发leaf基础配置之后,此DHCP服务就失去作用了,需要手动将此DHCP服务删除。

然后配置GW设备的路由信息,确保spine设备及leaf设备都能够访问控制器。此时spine和leaf设备就都完成初次上线工作了。

第二种是通过控制器上的脚本下发临时dhcp服务到其中一台spine设备
此种方法更简单方便,在控制器页面左侧导航栏找到脚本选项,如下图

导航栏

进入脚本选项,选择Spine DHCP config for Leaf脚本

脚本描述

修改此脚本的相关描述

修改脚本描述

只需要修改spine接口与leaf连接的下行接口即可。Ip地址是临时使用,可以用脚本默认的,也可以自己修改。当leaf设备上线后,此ip地址就失效了。修改好之后点击保存。

在设备导航栏下,选择对应场所及设备,下发脚本,如下:

下发脚本
下发脚本2

选择脚本,并下发运行

下发脚本

Leaf设备获取地址,并在GW设备上配好相关路由后,就可以在控制器上看到leaf设备上线了。
当leaf和spine设备全部上线之后,后续所有部署操作都只需在控制器上完成即可。

4.4 在GW设备上配置DHCP Server

本次部署将DHCP服务部署在GW设备CX102S上面。
根据业务规划,需要部署三个DHCP地址池,具体配置如下:

1、配置AP-mgmt地址池

sonic# configure terminal
sonic(config)# dhcp pool AP-mgmt
sonic(config-dhcp-pool-AP-mgmt)# address-pool 172.16.100.2 172.16.100.254
sonic(config-dhcp-pool-AP-mgmt)# dns 8.8.8.8
sonic(config-dhcp-pool-AP-mgmt)# network 172.16.100.0 172.16.100.254
sonic(config-dhcp-pool-AP-mgmt)# routers 172.16.100.1
sonic(config-dhcp-pool-AP-mgmt)# vlan 51
sonic(config-dhcp-pool-AP-mgmt)# capwap-ac 52.76.134.89

2、配置AP-user 地址池

sonic# configure terminal
sonic(config)# dhcp pool AP-user
sonic(config-dhcp-pool-AP-user)# address-pool 192.168.22.2 192.168.22.254
sonic(config-dhcp-pool-AP-user)# dns 8.8.8.8
sonic(config-dhcp-pool-AP-user)# network 192.168.22.0 192.168.22.254
sonic(config-dhcp-pool-AP-user)# routers 192.168.22.1
sonic(config-dhcp-pool-AP-user)# vlan 52

3、配置有线地址池

sonic# configure terminal
sonic(config)# dhcp pool Youxian-user
sonic(config-dhcp-pool-Youxian-user)# address-pool 192.168.23.2 192.168.23.254
sonic(config-dhcp-pool-Youxian-user)# dns 8.8.8.8
sonic(config-dhcp-pool-Youxian-user)# network 192.168.23.0 192.168.23.254
sonic(config-dhcp-pool-Youxian-user)# routers 192.168.23.1
sonic(config-dhcp-pool-Youxian-user)# vlan 53

在CX102S上对上面网段添加相关路由之后,当终端设备获取到这些网段ip地址,就可以正常访问internet了。

此时应该可以在控制器上看到spine设备及leaf设备都已经上线成功。

4.5 CX102S设备交换模块配置

Internet-GW# show running-config
interface ethernet 1
switchport access vlan 101
!
interface ethernet 2
switchport access vlan 102
!
interface ethernet 3
!
interface ethernet 16
!
interface ethernet 17
description to-spine1-ethernet49
link-aggregation-group 1
!
interface ethernet 18
description to-spine2-ethernet49
link-aggregation-group 1
!
interface ethernet 19
switchport trunk vlan 101
switchport trunk vlan 102
switchport trunk vlan 200
!
interface ethernet 20
switchport access vlan 200
!
interface loopback 0
ip address 172.16.1.7/32
!
vlan 1
!
vlan 51
!
vlan 52
!
vlan 53
!
vlan 101
description pppoe
!
vlan 102
description zhuanxian
!
vlan 200
description lan
!
interface vlan 1
ip address 192.168.1.254/24
!
interface vlan 200
dhcp select server
ip address 172.16.11.36/29
!
interface link-aggregation 1
switchport access vlan 200
!
hostname Internet-GW
!
dhcp pool AP-mgmt
address-pool 172.16.100.2 172.16.100.254
capwap-ac 43.192.22.13
dns 218.104.111.111,218.104.111.114
lease-time 6000 12000
network 172.16.100.0 255.255.255.0
routers 172.16.100.1
vlan 51
!
dhcp pool AP-user
address-pool 192.168.22.2 192.168.22.254
dns 218.104.111.111,218.104.111.114
lease-time 6000 12000
network 192.168.22.0 255.255.255.0
routers 192.168.22.1
vlan 52
!
dhcp pool Youxian-user
address-pool 192.168.23.2 192.168.23.254
dns 218.104.111.111,218.104.111.114
lease-time 6000 12000
network 192.168.23.0 255.255.255.0
routers 192.168.23.1
vlan 53
!
lldp enable
!
mac-address static 00:11:22:33:44:02 vlan 200 ethernet 20
!
mirror session 1 span src-ethernet 19 dst-ethernet 20
!
ucentral-client enable
!
ucentral-client server 43.192.22.13
!
ip route 192.168.22.0/24 172.16.11.33
ip route 192.168.23.0/24 172.16.11.33
ip route 172.16.1.0/28 172.16.11.33
ip route 43.192.22.13/32 172.16.11.34
!
end
Internet-GW#

4.6 CX102S设备DPU1 openwrt配置

下图是在openwrt上建立的接口

openwrt建立接口

其中zhuanxian 和pppoe是外网接口,to_spine是内网接口,wg1是通往PA私有云的vpn专线接口,wg2是通往aws公有云的vpn专线接口。

下图是路由信息

路由信息

4.7 基础网络配置下发

将前面已经保存好的各设备基础配置下发

配置下发

4.8 有线业务配置及下发

按照规划配置有线业务

有线业务

1、配置有线server业务

配置有线server业务
配置有线server业务

2、部署AP业务

部署AP业务
部署AP业务

3、配置leaf-3有线user业务

配置leaf-3有线user业务
配置leaf-3有线user业务

4、配置leaf-4有线user业务

配置leaf-4有线user业务
配置leaf-4有线user业务

5、下发配置

将各业务配置好之后,下发到设备。

下发配置

当配置完有线业务后,AP应该就可以获取自己的管理ip地址了,此时在控制器上应该可以看到三台AP已经上线。当AP上线之后,即可进行无线业务的配置。

4.9 无线业务配置下发

首先建立无线业务配置模板

建立无线业务配置模板

配置WIFI基础信息

配置WIFI基础信息

配置wifi业务信息

配置wifi业务信息

完成业务模板配置并保存后,点击推送业务。

推送业务

当看到推送成功之后,即说明无线业务已经下发成功,无线终端可以连接使用此网络了。

4.10 射频参数配置下发

射频参数可以使用默认配置,也可以手动调整信道及发射功率等参数。如下

4.10 射频参数配置下发

点击每台AP的mac地址可进入此设备修改相应参数。为了有更好的网络体验,建议将信道手动调整,相邻的ap分配为不同的信道,并且根据ap之间距离调整发射攻略,以降低各ap之间的信号干扰。

射频参数配置下发
射频参数配置下发

4.11 WH用户终端上线

4.11.1 将有线user终端接入网络

根据规划,将有线user终端的网线插入leaf3的1-48接口和leaf4的4-48接口,能获取到正确IP地址,并访问互联网。

4.11.2 将无线终端接入网络

将笔记本、手机、无线大屏幕、打印机等无线终端连接wifi,能够获取正确IP地址,并访问互联网。

4.11.3 将有线server接入网络

根据规划,将有线server终端的网线接入leaf1和leaf2的1-48接口,并配置正确IP地址, 能够访问互联网。

4.11.4 内网各网段终端业务互访

1、 用笔记本电脑ssh访问有线PC设备,可以互通。Wireless 终端 to 有线终端。
2、 用笔记本电脑ssh访问有线server设备,可以互通。 Wireless终端to有线server。
3、 用有线PC访问有线server设备,可以互通。有线终端to有线server。
4、 用PC设备访问打印机终端,可以正常打印文件。Wireless终端访问特殊终端。
此时武汉园区网已经部署完成。

5 将SZ办公网纳入控制器管理

本章主要介绍将SZ办公网纳入app.cloudswitch.io控制器管理的操作过程。由于SZ原有网络是采用公司CX-M系列产品部署,并且经过规划调整已经是全三层组网架构,当前由本地控制器管理和运维,现在需要将业务全部迁移到新的控制器上。

5.1 SZ网络基本信息

设备信息

型号角色数量版本备注
cx308p-48y-mSpine2V5.2R009P01 
cx204y-48gt-m-acLeaf5V5.2R009P02 
cx204y-48gt-hpw2-m-acLeaf1V5.2R009P02 
cx204y-24gt-m-swp2Leaf1V5.2R009P02 
CAP6020-ZAP11Tip-devel-cc97016c 
Aster-Fabric-ControllerController1V1.0R005T01 

拓扑信息

拓扑

当前设备版本需要进行升级才能与新的控制器版本兼容。

5.2 交换机设备版本升级

5.2.1 上传版本到控制器

为了更好的与新控制器匹配,我们需要对交换机设备进行升级。首先进行版本上传,在SZ本地控制器上找到固件菜单,然后选择添加新的版本镜像

上传版本到控制器

填写相关信息,并选择镜像文件,之后保存。

上传版本到控制器

上传成功后,可在列表中看到新的版本镜像

上传版本到控制器

5.2.2 设备版本升级

在控制器上找到设备栏,并勾选要升级的设备,然后点击固件升级按钮

设备版本升级

然后选择固件版本,并点击next

设备版本升级

然后点击开始升级即可,升级结束后需要重启才能生效。

设备版本升级

5.3 在新控制器上建立对应办公场所

在控制器对应的组织下面,新建场所,如下

在新控制器上建立对应办公场所
在新控制器上建立对应办公场所

5.4 将设备信息导入新控制器

进入SZ-office场所,将设备信息导入到仓库中。

将设备信息导入新控制器

然后选择设备信息文件,并测试上传,如果格式正确,即可完成上传。

将设备信息导入新控制器

设备信息文件格式如下:

将设备信息导入新控制器

完成导入后,即可在SZ-office的仓库中看到相关设备信息

将设备信息导入新控制器

5.5 按照已有网络拓扑信息规划网络

此处规划的网络拓扑与原拓扑一致,如下所示:

拓扑

5.6 在新控制器上新建业务配置

5.6.1 基础网络配置

此处没有使用HA,上联及路由配置如下:

5.6 在新控制器上新建业务配置
在新控制器上新建业务配置

5.6.2 有线业务配置

具体业务如下

有线业务配置

其中leaf1业务如下

leaf1业务
leaf1业务

由于DHCP relay配置各leaf都一样,因此leaf2-7只展示business vlan信息

Leaf2配置信息如下

Leaf2配置信息

Leaf3配置如下:

Leaf3配置信息

Leaf4配置如下

Leaf4配置信息

Leaf5配置如下

Leaf5配置信息

Leaf6配置如下

Leaf6配置信息

Leaf7配置如下

Leaf7配置信息

5.6.3 无线业务配置

无线业务配置如下

无线业务配置
无线业务配置
无线业务配置

5.7 设备在新控制器上线

通过串口或者SSH方式登录到每台设备,修改每台交换机设备的控制器ip地址,然后即可在新控制器上线。具体修改ip地址命令如下所示:
Leaf-1# configure terminal
Leaf-1(config)# ucentral-client server 52.76.134.89

5.8 设备配置下发

5.8.1 基础网络配置下发

将保存好的基础网络配置下发

设备配置下发

5.8.2 有线业务配置下发

将已经建好的配置下发到设备中。

有线业务配置下发

当配置完有线业务后,AP应该就可以获取自己的管理ip地址了,此时在控制器上应该可以看到三台AP已经上线。当AP上线之后,即可进行无线业务的配置。

5.8.3 无线业务配置下发

参照5.9章节,将已经建好的配置下发到AP中。

无线业务配置下发

下发成功后,无线终端应该可以重新连接并访问互联网。

5.8.4 射频参数修改及下发

根据信号强度及互相干扰情况,可以适当调整射频发射功率,以减少信号干扰。以AP-1为例,修改操作如下图所示:
点击对应mac地址进入设置页面

射频参数修改及下发

修改相关参数

射频参数修改及下发

将每台AP都调整之后,配置如下:

射频参数修改及下发

5.9 验证测试

当所有配置正确下发之后,整个网络配置上线结束,此时有线业务和无线业务应该都可以正常互通,并可以访问internet。

1、 有线PC业务测试
办公位上的有线PC终端可以获取到ip地址,可以正常上网。

2、有线server业务测试
研发区服务器配置正确ip地址后可以正常上网。

3、无线终端业务测试
手机及笔记本终端可以正常连接wifi,并正常上网。

6 BJ办公网实施

6.1 拓扑规划

BJ园区网络出口与其他三地不同,采用5G无线路由方式接入互联网,内网依然采用spine+leaf架构,具体如下:

拓扑

6.2 在控制器上建立办公场所

控制器上建立办公场所

6.3 将设备信息导入控制器

录入

6.4 在控制器上建立拓扑

在控制器上建立拓扑

6.5 设备上线

设备上线及业务配置步骤与wh办公网上线步骤相同,不再一一描述。最终结果呈现如下:

设备上线
设备上线
设备上线
设备上线

此处根据办公室ap点位对信道及ap进行了调优,保证办公室任何角落wifi信号都保持稳定。

设备上线

7 XA办公网实施

7.1 拓扑规划

由于XA园区网有特殊生产需求,所以我们在第一部分规划章节将XA园区网规划为spine+leaf和mc-lag的混合场景组网架构。如下:

拓扑

7.2 在控制器上建立办公场所

控制器上建立办公场所

7.3 设备信息导入

设备导入过程与其他办公场所相同,不在赘述。

7.4 基础网络配置

此处是混合场景组网,与其他三地有所不同,配置如下:

首先选择场景

然后做如下配置:

基础网络配置
基础网络配置

保存之后,进入基础网络配置。

基础网络配置

配置如下:

基础网络配置
基础网络配置
基础网络配置
基础网络配置

7.5 在控制器上建立拓扑

在控制器上建立拓扑

拓扑建立之后,即可准备上线工作。

7.6 设备上线

设备上线及业务配置步骤与WH办公网上线步骤相同,不再一一描述。

7.7 上线后的真实拓扑

在控制器上建立拓扑

7.8 业务下发

有线及无线业务下发方法与其他园区相同。不在一一描述。

7.9 业务验证

当所有配置正确下发之后,整个网络配置上线结束,此时有线业务和无线业务应该都可以正常互通,并可以访问internet。
1、 有线PC业务测试
办公位上的有线PC终端可以获取到ip地址,可以正常上网。
2、有线server业务测试
研发区服务器配置正确ip地址后可以正常上网。
3、无线终端业务测试
手机及笔记本终端可以正常连接wifi,并正常上网

8 云化园区交换机

配置指导:基于Asterfusion CX-M系列产品的园区网实现- 2.初始安装

1 Purpose

为了介绍使用Asterfusion CX-M系列产品及控制器产品实现园区网络整网部署的方法,我们编写了园区网规划、安装、实施和测试验收等一系列文档。通过阅读这些文档,用户可以简单快捷的实现园区网络的规划和部署上线,当用户已经规划好整体网络并做好上线前准备工作后,用户可以在30分钟内实现整网部署上线。本文是第二部分:初始安装,主要说明园区网络控制器安装工作。

2 控制器环境准备

本次实施将控制器安装在AWS云环境中,所需的资源如下:
CPU: 4 core
内存:8GB
硬盘:64GB
系统版本: ubuntu 20.04

3 Docker安装

控制器运行在docker中,所以需要安装docker,本次安装的是docker 27.0.3版本。
安装命令如下:

sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install docker-ce

安装成功后,可以通过docker –version查看版本信息,通过sudo systemctl status docker查看状态信息。
Note :由于系统环境及CPU架构可能存在差异,安装过程中可能会报错,一般按照错误提示解决问题并完成安装即可。

4 控制器安装

4.1 安装

  1. 将控制器软件压缩包上传到云主机home目录下。
  2. 解压控制器版本文件,命令如下:
    tar -xvf controller_V1.0_R005T14.tar
  3. 进入到版本解压目录,一键安装
进入目录cd ~/controller_V1.0_ R005T14/wlan-cloud-ucentral-deploy/docker-compose
sudo sh deploy-init.sh

note:需注意安装环境硬件架构,X86架构和arm架构版本不同,需要安装与之相对应的控制器版本。

4.2 配置域名或ip地址

配置控制器ip或域名

进入目录cd ~/controller_V1.0_ R005T14/wlan-cloud-ucentral-deploy/docker-compose
执行如下命令:
sudo sed -i "s/openwifi.wlan.local/app.cloudswitch.io/g" owsec.env owgw-ui.env owprov.env owsub.env owfms.env owgw.env owanalytics.env owprov-ui.env owrrm.env

note:此处使用已经申请好的域名 app.cloudswitch.io 访问控制器,如果使用ip访问,则直接填写ip地址即可。

4.3 在控制器云管平台打开服务端口

目前控制器需要使用的端口如下表所示:

为了控制器能正常运行,需要开通以上端口授权。

4.4 配置域名认证信息(optional)

Note:如果使用ip登录,则可以忽略此章节。
安装certbot软件,申请域名认证

sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
sudo certbot certonly --manual dns-01 dns -d "*app.cloudswitch.io"

此处获得的证书在/etc/letsencrypt/live/cloudswitch.io/目录下。
通过如下命令将证书拷贝到控制器相对应目录下即可

sudo cp -L cert.pem /home/ubuntu/controller_V1.0_R005/wlan-cloud-ucentral-deploy/docker-compose/certs/restapi-cert.pem
sudo cp -L privkey.pem /home/ubuntu/controller_V1.0_R005/wlan-cloud-ucentral-deploy/docker-compose/certs/restapi-key.pem
sudo cp -L chain.pem /home/ubuntu/controller_V1.0_R005/wlan-cloud-ucentral-deploy/docker-compose/certs/restapi-ca.pem

5 一键启动控制器

进入目录:cd ~/controller_V1.0_ R005T14/wlan-cloud-ucentral-deploy/docker-compose

sudo docker-compose up -dcampus_part_1_ cover

note:如果需要停止控制器可用命令sudo docker-compose down

5.1 安装nginx并配置代理(optional)

NOTE: nginx代理只在需要时安装即可,控制器本身是带有nginx组件的,可以提供web服务。

  1. 安装nginx组件 sudo apt install nginx
  2. 在nginx相关目录下修改配置文件,以保障能够正确解析域名。

5.2 控制器登录

确保控制器已经安装完成并成功启动,可以在本地web客户端输入对应ip地址或域名登录控制器:
如下图所示:

ACC登录

控制器首次安装后,初始登录账户为:tip@ucentral.com / openwifi
注意登录之后及时修改密码。

登录之后界面如下:

ACC界面

此时,已经完成园区网控制器的安装。

6 Asterfusion CX-M 云化园区交换机

云化园区交换机

配置指导:基于Asterfusion CX-M系列产品的园区网实现- 1.总体规划

1 Purpose
2 项目背景
3 总体需求
4 需求分析
5 公司整体网络示意图
6 各研发中心内部网络架构规划
7 各研发中心访问云资源流量示意图
8 各研发中心互访流量示意图
9 Asterfusion CX-M enterprise switches as the links below

1 Purpose

为了介绍使用Asterfusion CX-M系列产品及控制器产品实现园区网络整网部署的方法,我们编写了规划、安装、实施和测试验收等一系列文档。通过阅读这些文档,用户可以简单快捷的实现园区网络的规划和部署上线,当用户已经规划好整体网络并做好上线前准备工作后,用户可以在30分钟内实现整网部署上线。本文是第一部分,总体规划,主要根据我们实际部署的经验阐述如何规划一个拥有4研发中心的公司网络,满足各中心网络互联及资源共享的需求。

2 项目背景

Asterfusion公司目前拥有4个研发中心,分别在不同城市,并且拥有1个公有云资源中心和1个私有云资源中心。随着公司业务扩大,各研发中心对网络带宽及资源共享的需求也在逐步增加,为了满足公司各部门的网络需求,我们决定重新规划建设公司整体网络。

3 总体需求

1、 公司有4大研发中心,分别位于sz、wh、bj和xa四座城市,并且拥有PA私有云和AWS公有云两大云平台资源池。各地研发中心需要随时访问云资源以及其他城市的服务器资源。
2、 各研发中心内部要高速访问服务器资源,需要减少广播报文,并且要保证网络稳定性。
3、 各研发中心要访问其他研发中心的服务器资源,以便资源共享,提高研发效率,降低研发成本。
4、 公司要求整网统一规划建设和管理运维,以便维护网络安全性及稳定性,同时使各部门互访更便捷。
5、 为了更方便维护网络,要求各研发中心的网络流量可视化。

4 需求分析

我们针对总体需求进行认真分析,并给出如下解决方案:

1、 针对需求1,可以采用VPN技术使四地研发中心及云资源互联。因此,在各研发中心出口网关位置选用公司CX102S产品作为路由网关,CX102S除了拥有基本交换模块外,还拥有两块DPU,在DPU1上运行openwrt作为出口路由,并且集成wireguard组件,可以方便的搭建VPN网络。
2、 针对各研发中心内部高速带宽及减少广播报文的需求,可以采用spine+leaf的整网三层架构部署,并采用分布式网关,各网络设备之间采用10G/40G/100G高速接口互联,从而保证内网带宽。
3、 各研发中心互访服务器资源的需求可以通过vpn技术一并解决。
4、 本次网络建设使用控制器统一部署,使各地网络全部呈现在控制器上,方便运维和管理。
5、 各研发中心的网络流量可视化,通过在出口设备CX102S的DPU2上运行ntopng开源软件来实现。

5 公司整体网络示意图

企业园区网部署流程

根据项目总体需求,规划出整体网络如上图所示,其中控制器安装在公有云上,以便管理员随时随地可以查看网络状态。

6 各研发中心内部网络架构规划

其中SZ WH BJ三个研发中心内网统一采用spine+leaf架构进行组网,具体spine、leaf及AP设备的数量根据各地人员数量、研发server数量及办公室面积情况综合确定。内部网络为全三层网络,采用分布式网关Distributed gateway、dhcp-relay、arp-relay、arp-to-host等技术部署。网络出口统一采用CX102S智能网关设备。
网络架构示意图如下:

企业园区网部署流程

其中XA研发中心网络由于特殊需求,采用spine+leaf和mc-lag的混合场景组网架构。如下图所示:

企业园区网部署流程

7 各研发中心访问云资源流量示意图

企业园区网部署流程

以WH office为例,各地研发中心访问云平台如上图所示,在公司园区网出口开启两个vpn客户端,分别连接两个云平台的服务端。

8 各研发中心互访流量示意图

企业园区网部署流程

以WH office与SZ office互访为例,将公有云的vpn服务端作为各地互联节点,只需将各地内网的网段路由添加到vpn服务端即可实现互访。

以上就是公司网络的整体规划,接下来我们将按照此规划逐步实施各地网络的部署。

9 Asterfusion CX-M 云化园区交换机

云化园区交换机

对星融元产品感兴趣?

立即联系!

返回顶部

© 星融元数据技术(苏州)有限公司 苏ICP备17070048号-2