.NET与鲲鹏共展翅,昇腾九万里(一)
2019 年 1 月 7 日,华为推出鲲鹏920 处理器,便宣告了构建鲲鹏生态系统的开始。据官方介绍,鲲鹏是一个包含了鲲鹏计算单元、AI 处理单元、智能管理、智能网卡的片上系统 SoC,在此之上加上服务器操作系统,从而形成一个生态的闭环。在 2019 年 9 月 20 号举办的华为全联接大会中,预告了华为服务器操作系统EulerOS(欧拉)将会以开源版本发出,代号为openEuler,其主要目的就是完善鲲鹏生态系统。被华为 Cloud&AI BG 总裁侯金龙称为“鲲鹏灵魂”的就是这个openEuler操作系统,它不仅能让华为云计算为人工智能保驾护航,还能为数据安全提供更全面的保障。在 2020 年 3 月 27 日的华为开发者大会上,正式推出了openEuler 20.03 LTS 版本,任何伙伴都可以免费的获取 LTS 版本,并且可以商业化,同时承诺将对openEuler永久免费、开源。
随着美帝对中国的封锁日趋严峻,国家在大政策方针上也开始了全面国产化的进程,新上线的软硬件服务基本上都要求使用国产,符合安全可控原则。本人所在公司业务也涉及到国企及党政军部门的业务,因此必须在国产化安全可控方面有相应的策略,经过一番对国产服务器及操作系统(多多少少都有一些现有国外开源 Linux 的影子)的调研了解后,个人觉得华为推出的鲲鹏服务器以及 Euler 系统比较符合公司的发展方向:1. 华为有自主知识产权硬件,鲲鹏为 Arm 架构芯片,性能与 Intel 相比不弱;2. 开源的 Euler 使用起来更让人放心;3. 华为同时拥有软硬件开发能力,这使得系统的稳定性和可用性更强; 4. 最重要的一点,我们使用 .NET Core 开发平台,支持 Arm 架构,并且在 Docker 的加持下(使用 Docker 是为了简化运行环境配置,毕竟那些配置还是很繁琐的),基本上无需修改程序,仅仅需要在 Euler 系统上重新编译即可顺利运行。以下,我就介绍如何使用 Euler 系统来编译运行.NET Core 程序。

 

01
首先,作为测试环境,我在华为云上购买了一台鲲鹏云服务器,4C8G, EulerOS 2.8
.NET 与鲲鹏共展翅,昇腾九万里(一)
02

其次,我们要先调整下系统环境,不知为何默认的 yum 包源并不正确,查阅官方文档才获得正确配置。
1. SSH 远程登录后,需要调整一下 yum 包的源地址。转到 /etc/yum.repos.d 目录下,修改 euleros_aarch64.repo 文件内容如下:
[base]name=EulerOS-2.0SP8 basebaseurl=http://mirrors.huaweicloud.com/euler/2.8/os/aarch64/enabled=1gpgcheck=1gpgkey=http://mirrors.huaweicloud.com/euler/2.8/os/RPM-GPG-KEY-EulerOS
2. 添加 Docker 包源
执行如下命令:
yum-config-manager  --add-repo  https://download.docker.com/linux/centos/docker-ce.repo
dnf clean all # 清除所有的缓存文件dnf makecache # 制作元数据缓存
然后再执行
yum repolist all
显示内容大致如下,说明 yum 软件包源设置成功
.NET 与鲲鹏共展翅,昇腾九万里(一)
03
接下来,该是安装 Docker 的时候了。
1. 安装必备组件
yum install policycoreutils-pythonwget http://mirror.centos.org/altarch/7/extras/aarch64/Packages/container-selinux-2.107-3.el7.noarch.rpmrpm -ivh container-selinux-2.107-3.el7.noarch.rpm
2. 安装 Docker
yum list docker-ce --showduplicates | sort -r # 列一下可以安装的 Docker 版本yum install docker-ce # 当然是默认最新版啦
3. 安装完看一下 Docker 版本
docker -vDocker version 19.03.8build afacb8b
4. 既然 Docker 装好了,我们跑一下 .NET Core 官方 Demo 瞧瞧
docker run --rm -it -p 80:80 mcr.microsoft.com/dotnet/core/samples:aspnetapp
.NET 与鲲鹏共展翅,昇腾九万里(一)
嗯,程序顺利运行起来了!请忽略截图里几个”Already exists”, 因为我之前已经拉了一个 dotnet 的包。我们现在用浏览器访问下服务器的 80 端口看看吧!
 
.NET 与鲲鹏共展翅,昇腾九万里(一)
页面正确展示,也显示了服务器的一些信息,只是那个最大可用内存有点问题,感觉应该是 core 的问题,有知道的同学可以留言说说看。
04
至此,我们让 Arm 架构的鲲鹏服务器在 Euler 系统上基于 Docker 跑起 .NET Core 程序了。如果有 Docker 运行 .NET Core 程序的同学们就已经可以自己玩起来了,如果没有做过,那么在下一篇文章中,我将继续介绍如何使用.NET SDK 的 Docker 镜像编译 .NET Core 程序,并使用 Docker 将它跑起来。
“鲲之大,不知千里也,鹏之背,翼若垂云天”
© 版权声明

☆ END ☆
喜欢就点个赞吧
点赞0 分享
图片正在生成中,请稍后...