Dapr + .NET 实战(十四)虚拟机集群部署 mDNS + Consul

前面我们说了在单机模式下和K8S集群下的Dapr实战,这次我们来看看如何在不使用K8S的情况下,在一个传统的虚拟机集群里来部署Dapr。

1.环境准备

我们准备两台centos7虚拟机

Dapr1:192.168.43.131

Dapr2:192.168.43.132

3ee48a582f7cdc026f4508299acf1577.png

2.Dapr CLI安装

分别在Dapr1和Dapr2两台虚机上安装Dapr CLI

方式1 wget命令安装

wget -q https://raw.githubusercontent.com/dapr/cli/master/install/install.sh -O - | /bin/bash

方式2 二进制方式手动安装
从https://github.com/dapr/cli/releases下载Dapr脚手架,并解压后放入/usr/local/bin目录

tar -xzvf dapr_linux_amd64.tar.gzmv dapr /usr/local/bin

3.Dapr初始化

在Dapr1和Dapr2两台虚机上初始化,不依赖Docker的情况下课通过指定--slim选项来启动

dapr init --slim

初始化好之后查看~/.dapr文件夹下的文件夹与文件,其中bin文件夹存放着daprd,dashboard,placement三个可执行文件

[root@localhost ~]# ll ~/.dapr
总用量 4
drwxrwxrwx 3 root root  64 10月 15 10:37 bin
drwxrwxrwx 2 root root  29 10月 15 15:33 components
-rw-r--r-- 1 root root 224 10月 15 18:34 config.yaml
[root@localhost ~]# ll ~/.dapr/bin/
总用量 135632
-rwxrwxrwx 1 root root 94117888 10月 15 11:08 daprd
-rwxrwxrwx 1 root root 30007296 10月 15 11:08 dashboard
-rwxrwxrwx 1 root root 14761984 10月 15 11:07 placement
drwxr-xr-x 3 root root       18 10月 15 11:08 web

4.部署项目

我们仍然采用之前的FrontEnd和BackEnd项目,在Dapr1与Dapr2两台机器上分别部署BackEnd,使其实现负载

89be333a6a67db9a3bd04506763a5cbb.png

 发布FrontEnd和BackEnd,选择完全发布模式,这样我们不需要安装dotnet core运行时即可直接运行FrontEnd与BackeEnd,并选择linux-x64目标运行时

c1c5e63994e9565f9f6c899f0fb93436.png

 发布完成后,将BackEnd上传到Dapr1和Dapr2两台机器动;将FrontEnd上传到Dapr2

5.运行BackEnd和FrontEnd

Dapr1上和Dapr2上启动BackEnd

chmod 777 /usr/local/src/backend/BackEnd
dapr run --dapr-http-port 3511 --app-port 5000 --app-id backend  /usr/local/src/backend/BackEnd

Dapr2上启动FrontEnd

chmod 777 /usr/local/src/frontend/FrontEnd
dapr run --dapr-http-port 3501 --app-port 5001  --app-id frontend  /usr/local/src/frontend/FrontEnd

6.调用FrontEnd接口Dapr/ip验证

发现每次调用获取的ip不一致,已经通过mDNS实现负载

cf65b092913627fcc8948389d2fbc865.png

 ef6bda775f22bf81cabc46b81088a128.png

7.自定义组件

我们在Dapr1和Dapr2两台机器上的~/.dapr/components文件夹中分别新建文件statestore.yaml

apiVersion: dapr.io/v1alpha1
kind: Component
metadata:name: statestore
spec:type: state.redisversion: v1metadata:- name: redisHostvalue: 192.168.43.102:6379- name: redisPasswordvalue: "123456"- name: actorStateStorevalue: "true"

重新启动FrontEnd,调用api/State接口,发现组件设置成功

b5c8b6cd40936457157e8233101f88f0.png

8.Actors使用

因为我们初始化时指定了--slim选项,这种模式下placement需要我们手动启动,我们启动FrontEnd中的~/.dapr/bin/placement

[root@localhost ~]# ~/.dapr/bin/placement
INFO[0000] starting Dapr Placement Service -- version 1.4.3 -- commit a8ee30180e1183e2a2e4d00c283448af6d73d0d0  instance=localhost.localdomain scope=dapr.placement type=log ver=unknown
INFO[0000] log level set to: info                        instance=localhost.localdomain scope=dapr.placement type=log ver=1.4.3
INFO[0000] metrics server started on :9090/              instance=localhost.localdomain scope=dapr.metrics type=log ver=1.4.3
INFO[0000] Raft server is starting on 127.0.0.1:8201...  instance=localhost.localdomain scope=dapr.placement.raft type=log ver=1.4.3
INFO[0000] placement service started on port 50005       instance=localhost.localdomain scope=dapr.placement type=log ver=1.4.3
INFO[0000] Healthz server is listening on :8080          instance=localhost.localdomain scope=dapr.placement type=log ver=1.4.3
INFO[0001] cluster leadership acquired                   instance=localhost.localdomain scope=dapr.placement type=log ver=1.4.3
INFO[0001] leader is established.                        instance=localhost.localdomain scope=dapr.placement type=log ver=1.4.3
INFO[0004] Start disseminating tables. memberUpdateCount: 1, streams: 1, targets: 1, table generation: 1  instance=localhost.localdomain scope=dapr.placement type=log ver=1.4.3
INFO[0004] Completed dissemination. memberUpdateCount: 1, streams: 1, targets: 1, table generation: 1  instance=localhost.localdomain scope=dapr.placement type=log ver=1.4.3

重新启动FrontEnd与BackEnd,并调用api/ActorsClient/123,Actors环境启动成功

0f06038e553f47b63206a556a4c2f8ff.png

9.Consul名字解析组件

前面的负载我们使用了mDNS,官方还为我们提供了Consul名字解析组件,我们新建一个虚拟机Consul(192.168.43.133)来安装Consul

1.下载
wget https://releases.hashicorp.com/consul/1.3.0/consul_1.3.0_linux_amd64.zip
2.解压
unzip  consul_1.3.0_linux_amd64.zip
3.拷贝到/usr/local/bin
mv consul /usr/local/bin
4.验证
consul
5.启动
consul agent -dev -ui -node=consul-dev -client=192.168.43.133
6.访问192.168.43.133:8500

468d4bddc51966d01bdad04d132d99fe.png

 下面修改Dapr1和Dapr2机器上的~/.dapr/config.yaml配置,让其使用Consul来解析名字

apiVersion: dapr.io/v1alpha1
kind: Configuration
metadata:name: daprConfig
spec:nameResolution:component: "consul"configuration:client:address: "192.168.43.133:8500"selfRegister: true

重启FrontEnd与BackEnd并调用api/Dapr/ip接口,发现只能调用到后启动的BackEnd,无法实现负载

a4cf49698f8ed97ceadf15f57351f0db.png

 针对这个问题我像dapr官方提了issue,静等回复

https://github.com/dapr/components-contrib/issues/1199

相关文章:

  • Dapr实战(一) 基础概念与环境搭建

  • Dapr + .NET Core实战(二) 服务调用

  • Dapr + .NET Core实战(三)状态管理

  • Dapr + .NET 实战(四)发布和订阅

  • Dapr + .NET 实战(五)Actor

  • Dapr + .NET 实战(六)绑定

  • Dapr + .NET 实战(七)Secrets

  • Dapr + .NET 实战(八)服务监测

  • Dapr + .NET 实战(九)本地调试

  • Dapr + .NET 实战(十-终篇)K8S运行Dapr

  • Dapr + .NET实战(十一)单机Dapr集群负载均衡

  • Dapr + .NET 实战(十二)服务调用之GRPC

  • Dapr + .NET 实战(十三)跨语言开发

  • 为什么 Dapr 如此令人兴奋

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/296691.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

哪个男孩不想拥有这种牌面?

1 全国最嗨的烧烤地摊没有之一▼2 为什么我们的雨刷和别人的不一样?▼3 好羡慕有这样的妈妈▼4 猫:你别进来,我这儿不接待小孩儿!孩子:我就进去看看▼5 像极了我考试的样子▼6 今天教大家一个找钻石的好办法▼7 …

html怎么快速打出来的,javascript – 快速打印HTML5画布

我搜索了很多,找到了一个完美的解决方案:)使用onclick事件function printCanvas(){var dataUrl document.getElementById(anycanvas).toDataURL(); //attempt to save base64 string to server using this varvar windowContent ;windowContent windowContent Print canvas…

OutOfMemoryException异常解析

一、概述在国庆休假快结束的最后一天晚上接到了部门老大的电话,某省的服务会出现崩溃问题。需要赶紧修复,没错这次的主角依旧是上次的“远古项目”没有办法同事都在休假没有人能帮忙开电脑远程只能打车去公司。远程链接上服务器之后查看日志发现抛出的堆…

LeetCode:Largest Number - 求整型数组中各元素可拼合成的最大数字

2019独角兽企业重金招聘Python工程师标准>>> 1、题目名称 Largest Number(求整型数组中各元素可拼合成的最大数字) 2、题目地址 https://leetcode.com/problems/largest-number/ 3、题目内容 英文:Given a list of non negative i…

js实现样式切换

2019独角兽企业重金招聘Python工程师标准>>> <ul id"styles"> <li id"default">经典</li> <li id"blue">淡蓝</li> <li id"brown">棕色</li> </ul> $("#styles li&…

CV算法面试题学习

本文记录了CV算法题的学习。 CV算法面试题学习 1 点在多边形内&#xff08;point in polygon&#xff09;2 高斯滤波器3 ViTPatch EmbeddingPosition EmbeddingTransformer Encoder完整的ViT模型 4 SE模块5 Dense Block6 Batch Normalization 1 点在多边形内&#xff08;point …

【推荐软件】wingrep

linux下搜索文本中的字符串时&#xff0c;习惯了find和grep的结合&#xff0c;很强大&#xff0c;但是windows下没有这两个命令&#xff0c;不用IDE编程时搜索略显不便。google一下&#xff0c;原来有wingrep工具可以用&#xff0c;可以实现相同的功能&#xff0c;来推荐一下给…

flash如何转html5,闪客精灵如何将Flash格式转换成HTML5

如何将Flash格式转换成HTML5?闪客精灵就是为Flash格式转换为HTML5而生的&#xff0c;他能够快速的将任何Flash文件&#xff0c;不管是SWF还是EXE格式的Flash格式转换成能被HTML5识别的HTML格式的文件。那么如何用闪客精灵将Flash格式转换为HTML5呢?下面是关于闪客精灵将Flash…

一壶 100℃ 的开水从多高倒进嘴里不会觉得烫?

全世界只有3.14 % 的人关注了爆炸吧知识先说结论&#xff1a;大约50米左右。 水从高空落下&#xff0c;先倒的水快&#xff0c;后倒的水慢&#xff0c;所以必然很快撕裂&#xff0c;成为细小的水滴。因此&#xff0c;这里就只讨论水滴的散热问题&#xff0c;而不考虑一大团水的…

当你的技术债务到期时,LinkedIn的故事 | IDCF

原文&#xff1a;https://www.linkedin.com/pulse/when-your-tech-debt-comes-due-kevin-scott/译者&#xff1a;冬哥那是 2011 年 10 月&#xff0c;就在 LinkedIn 上市后的第二次财报发布之前的几周。LinkedIn的业务做得很好&#xff0c;从任意可见角度来衡量&#xff0c;可以…

再现神人!仅仅只花4天半就解开了史上最难密码,这下整个圈子都炸开了.........

全世界只有3.14 % 的人关注了爆炸吧知识鲁迅先生曾说&#xff0c;记录这东西&#xff0c;就是用来打破的。前阵子程序员圈子一定热呼的不可开交&#xff0c;咋回事&#xff1f;还不是因为有个程序员妹子捅出了一个大篓子。事情是这样的&#xff0c;在德国慕尼黑有一个名叫 Leah…

拥抱开源!除了微软红帽,这些国际大厂你认识几个?

在上世纪 90 年代&#xff0c;开源操作系统 Linux 出现时&#xff0c;有能力自行安装使用的用户并不多。因此&#xff0c;早期开源社区和开源软件厂商的一大工作就是向用户售卖书籍&#xff0c;提供初始的技术支持。比如基于 Linux 的内核&#xff0c;一批开源软件厂商开发出不…

湖南工业职业技术学院计算机协会,计算机网络协会

一、协会简介于2005年成立&#xff0c;系信息工程系直属协会。以学习网络知识理论及技术实践为主&#xff0c;以业余活动为辅的双向协会。由我系专业教研团队亲自授课教学&#xff0c;达到教学合一效果。注重培养高技能、高素质综合能力人才。二、协会宗旨以普及计算机基础知识…

浙大月赛C题(2012/8)Cinema in Akiba(线段树)

http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId4791 &#xff08;1&#xff09;第一次写浙大的题目&#xff0c;这题让我十分意外&#xff0c;基本的线段树类型&#xff08;求第x个空位&#xff09;。 &#xff08;2&#xff09;电影院里&#xff0c;一次…

生病了女朋友说要「陪床」,结果真的是陪床不是陪我......

1 生病住院了女朋友说要来陪床结果真的是陪床不是陪我......▼2 气氛突然微妙......▼3 隔壁的一家人都馋哭了&#xff01;▼4 上街偷拍帅哥的正确方法▼5 WOW!AMAZING!▼6 史上最强小学生出现了&#xff01;▼‍7 养二哈不光挺费家具的还挺废人的▼你点的每个赞&#x…

System.Text.Json 自定义 Conveter

System.Text.Json 自定义 ConveterIntroSystem.Text.Json 作为现在 .NET 默认提供的高性能 JSON 序列化器&#xff0c;对于一些比较特殊类型支持的并不太好&#xff0c;业务需求中总是有各种各样的需要&#xff0c;很多时候就需要用到自定义 Converter &#xff0c;对于微软新出…

50张图,带你认识大学各专业

全世界只有3.14 % 的人关注了爆炸吧知识专业选的好每天像高考掐指一算&#xff0c;开学就近在眼前。当初纠结自己是考清华还是北大的那一幕也还是历历在目。不过&#xff0c;最后还是没有选择他们&#xff0c;一是因为北京离家太远&#xff0c;怕自己想家&#xff0c;二是因为他…

通达学院计算机组成原理试卷及答案,2021全国网络工程专业大学排名(5篇)

2018全国网络工程专业大学排名(5篇)高考填报志愿选择专业的话&#xff0c;考生需要了解你选择的专业在全国排名怎么样以及选择学校开设的专业在全国排名怎么样&#xff1f;高考升学网小编带你一起了解关于网络工程开设专业的大学排名。以及网络工程就业前景排名怎么样&#xff…

第一次去四川的广东人是什么下场?

1 第一次去四川的广东人▼2 酒店&#xff1a;好的&#xff0c;下次把床头柜也粘地上▼3 朋友家楼下有一窝乌鸦重点是乌鸦窝是晾衣架做的那么问题来了......它们从哪里偷的那么多衣架&#xff1f;&#xff1f;▼4 没有妈咪编不出来的毛衣▼5 这简直一毛一样▼6 我今天非要…

在java中写出html代码,在java里写html代码

在java里写html代码[2021-02-09 07:31:38] 简介:php去除nbsp的方法&#xff1a;首先创建一个PHP代码示例文件&#xff1b;然后通过“preg_replace("/(\s|\&nbsp\;| |\xc2\xa0)/", " ", strip_tags($val));”方法去除所有nbsp即可。推荐&#xff1a;《…