前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >.netcore consul实现服务注册与发现-单节点部署

.netcore consul实现服务注册与发现-单节点部署

作者头像
hailang2zh
发布2019-08-29 17:36:10
8550
发布2019-08-29 17:36:10
举报
文章被收录于专栏:dotNET名人堂dotNET名人堂

一、Consul的基础介绍


    Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置。与其他分布式服务注册与发现的方案,比如 Airbnb的SmartStack等相比,Consul的方案更“一站式”,内置了服务注册与发现框 架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案,不再需要依赖其他工具(比如ZooKeeper等),使用起来也较 为简单。Consul用Golang实现,因此具有天然可移植性(支持Linux、windows和Mac OS X);安装包仅包含一个可执行文件,方便部署,与Docker等轻量级容器可无缝配合。

关于Consul的更多介绍,比如优点,这里就不再赘述了,上网一搜就可以随处找到了。但是,必须贴一个和其他类似软件的对比:

二、Consul安装前的理解


    Consul Agent有两种运行模式:ServerClient。这里的Server和Client只是Consul集群层面的区分,与搭建在Cluster之上的应用服务无关, 以Server模式运行的Consul Agent节点用于维护Consul集群的状态,官方建议每个Consul Cluster至少有3个或以上的运行在Server Mode的Agent,Client节点不限。

    Consul支持多数据中心,每个数据中心的Consul Cluster都会在运行于Server模式下的Agent节点中选出一个Leader节点,这个选举过程通过Consul实现的raft协议保证,多个 Server节点上的Consul数据信息是强一致的。处于Client Mode的Consul Agent节点比较简单,无状态,仅仅负责将请求转发给Server Agent节点。

这里我们会演示两种情况的安装:一种单节点部署,二种集群部署,由简单到复杂的部署会更容易理解。

三、Consul正式安装(单节点)


1、下载Consul

官网地址:https://www.consul.io/downloads.html,下载对应的版本即可

确认好版本好,下载到我们的本机目录命令:  

代码语言:javascript
复制
> wget -P /opt/consul/  https://releases.hashicorp.com/consul/1.2.2/consul_1.2.2_linux_amd64.zip

2、安装Consul

代码语言:javascript
复制
#先解压Consul文件

> unzip consul_1.2.2_linux_amd64.zip

#将Consul文件拷贝到执行目录

> mv consul /usr/local/bin/

注:如果找不到unzip命令请安装,命令如:yum install -y unzip

3、测试Consul是否安装成功

代码语言:javascript
复制
> consul

如下图表示成功:

4、启动与配置Consul服务

代码语言:javascript
复制
consul agent -server -ui -bootstrap-expect=1 -data-dir=/tmp/consul  -node=consul-1 -client=0.0.0.0  -bind=172.16.1.174 -datacenter=dc1

如下图表示启动成功:

输入地址查看服务状态:目前Consul正常运行

进一步查看server的情况与角色状态

代码语言:javascript
复制
查看各个server的情况

> consul members

查看目前全部的consul的角色状态:

> consul operator raft list-peers

5、通过配置文件来注册服务(也可以从consul api 接口添加服务注册,他会自动持久化)

代码语言:javascript
复制
vi /etc/consul/services_config.json

{

    "services":[

        {

            "id": "CLIENT_SERVICE_01",

            "name" : "MVCClientService",

            "tags": [

                "urlprefix-/MVCClientService01"

            ],

            "address": "172.16.1.110",

            "port": 5000,

            "checks": [

                {

                    "name": "clientservice_check",

                    "http": "http://172.16.1.110:5000",

                    "interval": "10s",

                    "timeout": "5s"

                }

            ]

        },

         {

            "id": "CLIENT_SERVICE_02",

            "name" : "APIClientService",

            "tags": [

                "urlprefix-/APIClientService02"

            ],

            "address": "172.16.1.110",

            "port": 5000,

            "checks": [

                {

                    "name": "clientservice_check",

                    "http": "http://172.16.1.110:5001/api/values",

                    "interval": "10s",

                    "timeout": "5s"

                }

            ]

        }

     ]

}

重新运行命令:

代码语言:javascript
复制
consul agent -server -ui -bootstrap-expect=1 -config-dir=/etc/consul -data-dir=/tmp/consul -node=consul-1 -client=0.0.0.0 -bind=172.16.1.174 -datacenter=dc1

注:一定要保证后端服务正常运行:端口5000,5001

运行成功后,如下图:

以上操作都是在Consul Server 端进行操作的,按官方说明:Consul Server与Consul Client要进行区分,后端的服务应该部署在Consul Client上,他们分别处理自己的事情就好。

下一篇文章已更新:.netcore consul实现服务注册与发现-集群

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-08-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档