CentOS7安装dapr并运行.net5程序
Dapr官网https://docs.dapr.io
首先安装好docker,这里就不说了。
一、安装 Dapr CLI 脚手架工具(我这里装的1.1版)
可以通过wget -q https://raw.githubusercontent.com/dapr/cli/master/install/install.sh -O - | /bin/bash这种方式安装
也可以手动下载安装,下载好dapr_linux_amd64.tar.gz别下载错了
放到centos7的/usr/local/bin目录下
进入目录cd /usr/local/bin
解压文件tar -zvxf dapr_linux_amd64.tar.gz
设置权限chmod 777 dapr
验证脚本架的安装dapr
二、初始化dapr
运行 dapr init会自动下载Dapr的运行时 daprd ,并在Docker中启动3个容器:
dapr_placement:镜像是daprio/dapr,用于Dapr的Actor应用的注册
dapr_zipkin:镜像是openzipkin/zipkin,用于分布式跟踪
dapr_redis:镜像是redis,用于状态存储和发布 消息订阅处理
过一段时间下载完后输入docker images就可看到这三个镜像了
再输入docker ps 可看到这三个镜像的容器
输入dapr --version 可看到CLI version: 1.1.0 Runtime version: 1.1.2
验证组件目录已初始化ls $HOME/.dapr您应该看到bin components config.yaml
三、安装.net5 SDK
官网说明https://docs.microsoft.com/zh-cn/dotnet/core/install/linux-centos
安装准备
将 Microsoft 包签名密钥添加到受信任密钥列表,并添加 Microsoft 包存储库。
Sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
安装 SDKsudo yum install dotnet-sdk-5.0 -y
使用 dotnet --list-sdks 和 dotnet --list-runtimes 命令查看安装了哪些版本
四、dapr运行.net5程序
新建两个.net5 webapi项目,如下图,都安装Dapr.AspNetCore包
两个Startup都要添加AddDapr(),如下
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers().AddDapr();
}
1
2
3
4
UserController和TestController的代码分别如下
namespace Service1.Controllers
{
[ApiController]
[Route("[controller]")]
public class UserController : ControllerBase
{
private readonly ILogger<UserController> _logger;
public UserController(ILogger<UserController> logger)
{
_logger = logger;
}
[HttpGet]
public IEnumerable<string> Get()
{
_logger.LogInformation("查询用户信息");
return new[] { "张三", "李四", "王五" };
}
}
}
namespace Service2.Controllers
{
[ApiController]
[Route("[controller]")]
public class TestController : ControllerBase
{
private readonly ILogger<TestController> _logger;
public TestController(ILogger<TestController> logger)
{
_logger = logger;
}
[Route("info")]
[HttpGet]
public IEnumerable<string> Get()
{
// 1、创建Dapr客户端
var daprClient = new DaprClientBuilder().Build();
// 2、访问service1
var content = daprClient.InvokeMethodAsync<IEnumerable<string>>(HttpMethod.Get, "service1", "User").Result;
return content;
}
}
}
然后编译并发布这两个webapi
将发布后的service1和service2放到虚拟机中的/root/projects目录下
cd /root/projects/service1
dapr run --app-id service1 --app-port 5000 --dapr-http-port 6000 -- dotnet Service1.dll --urls "http://*:5000"
再新开一个终端
cd /root/projects/service2
dapr run --app-id service2 --app-port 7000 --dapr-http-port 8000 -- dotnet Service2.dll --urls "http://*:7000"
输入dapr list可看到service1和service2已启动
在命令行分别输入
curl http://localhost:6000/v1.0/invoke/service1/method/user
curl http://localhost:8000/v1.0/invoke/service2/method/test/info
可打印出两次查询用户信息的log控制台日志
开放端口firewall-cmd --zone=public --add-port=5000/tcp --add-port=7000/tcp --permanent
重启防火墙firewall-cmd --reload
在我的win10里打开浏览器,输入虚拟机中centos的地址访问
http://192.168.3.180:5000/user
http://192.168.3.180:7000/Test/info
都能成功返回信息