Consul Windows集群搭建ACL Token验证

摘要:
前言:由于网关将使用负载均衡进行解压,搭建多个服务器站点,所有学习了Consul服务发现,分享下自己在搭建中所遇到的问题以及过程分享前期准备:由于本人公司电脑硬件硬盘比较差,只准备了两台机器机器Ip及端口端口号客户端类型节点/服务名称192.168.1.788500Severc1(Leader)192.168.1.788520Serverc2192.168.1.218500Serverc3192.

前言:

由于网关将使用负载均衡进行解压,搭建多个服务器站点,所有学习了Consul服务发现,分享下自己在搭建中所遇到的问题 以及过程分享

前期准备:

  • 由于本人公司电脑硬件硬盘比较差 ,只准备了两台机器
机器Ip 及端口端口号客户端类型节点/服务名称
192.168.1.788500Severc1(Leader)
192.168.1.788520Serverc2
192.168.1.218500Serverc3
192.168.1.788510Clientcc1(节点客户端)
  • Consul 官网文件下载:https://www.consul.io/downloads
  • 新建4个文件夹{ Consul_First_Server,Consul_second_Server,Consul_Third_Client,Consul_21_Server } ,用来存放每个服务端的配置文件以及数据data文件(也可设置环境变量Consul,避免Consul.exe复制到多个文件夹)

示例文件夹

  • 在Conf文件夹下新建 server.json 用于存放配置文件,根目录下新建c_sbuild.bat 命令执行文件
{
    "datacenter":"dc1",
    "primary_datacenter":"dc1",
    "bootstrap_expect":1,
    "start_join":[
        "192.168.1.21",
        "192.168.1.78:8321"],
    "retry_join":[
        "192.168.1.21",
        "192.168.1.78:8321"],
    "advertise_addr": "192.168.1.78",
    "bind_addr": "192.168.1.78",
    "client_addr":"192.168.1.78",
    "server":true,
    "connect":{
        "enabled":true},
    "node_name":"c1",
    "ui": false,
    "data_dir":"./data/",
    "enable_script_checks":false,
    "enable_local_script_checks":true,
    "log_file":"./log/",
    "encrypt":"krCysDJnrQ8dtA7AbJav8g==",
    "acl":{
        "enabled":true,
        "default_policy":"deny",
        "enable_token_persistence":true,
        "tokens":{
            "master":"ac24b0d7-5535-40cc-8696-073462acc6c7"}
    }
}
{
    "datacenter":"dc1",
    "primary_datacenter":"dc1",
    "advertise_addr": "192.168.1.78",
    "bind_addr": "192.168.1.78",
    "client_addr":"192.168.1.78",
    "server":true,
    "connect":{
        "enabled":true},
    "node_name":"c2",
    "ui": false,
    "data_dir":"./data/",
    "enable_script_checks":false,
    "enable_local_script_checks":true,
    "log_file":"./log/",
    "log_level":"info",
    "log_rotate_bytes":100000000,
    "log_rotate_duration":"24h",
    "encrypt":"krCysDJnrQ8dtA7AbJav8g==",
    "ports":{
    "http": 8520,
    "dns": 8620,
    "server": 8320,
    "serf_lan": 8321,
    "serf_wan": 8322},
    "acl":{
        "enabled":true,
        "default_policy":"deny",
        "enable_token_persistence":true,
        "tokens":{
            "master":"ac24b0d7-5535-40cc-8696-073462acc6c7"}
    }
}
{
    "datacenter":"dc1",
    "primary_datacenter":"dc1",
    "advertise_addr": "192.168.1.21",
    "bind_addr": "192.168.1.21",
    "client_addr":"192.168.1.21",
    "server":true,
    "connect":{
        "enabled":true},
    "node_name":"c2",
    "ui": false,
    "data_dir":"./data/",
    "enable_script_checks":false,
    "enable_local_script_checks":true,
    "log_file":"./log/",
    "log_level":"info",
    "log_rotate_bytes":100000000,
    "log_rotate_duration":"24h",
    "encrypt":"krCysDJnrQ8dtA7AbJav8g==",
    "acl":{
        "enabled":true,
        "default_policy":"deny",
        "enable_token_persistence":true,
        "tokens":{
            "master":"ac24b0d7-5535-40cc-8696-073462acc6c7"}
    }
}
{ 
"datacenter":"dc1", "primary_datacenter":"dc1", "advertise_addr": "192.168.1.78", "start_join":[ "192.168.1.21", "192.168.1.78:8321", "192.168.1.78:8301"], "retry_join":[ "192.168.1.21", "192.168.1.78:8321", "192.168.1.78:8301"], "bind_addr":"192.168.1.78", "server":false, "node_name":"cc1", "client_addr":"192.168.1.78", "connect":{ "enabled":true}, "data_dir":"./data/", "log_file":"./log/", "log_level":"info", "log_rotate_bytes":100000000, "log_rotate_duration":"24h", "ui":true, "enable_script_checks":false, "enable_local_script_checks":true, "disable_remote_exec":true, "acl":{ "enabled":true, "default_policy":"deny", "enable_token_persistence":true, "tokens":{ "master":"ac24b0d7-5535-40cc-8696-073462acc6c7"} }, "encrypt":"krCysDJnrQ8dtA7AbJav8g==", "ports":{ "http": 8510, "dns": 8610, "server": 8310, "serf_lan": 8311, "serf_wan": 8312} }

附:其中同机器 主要设置了 port参数 以来启动不同端口的服务端

c_sbuild.bat文件内容如下:  

consul agent -config-file ./conf/server.json
pause

启动服务

  1. 在Consul_second_Server 文件夹下执行c_sbuild.bat 启动c2
  2. 在Consul_21_Server文件夹下执行c_sbuild.bat 启动c3
  3. 在Consul_First_Server 文件夹下执行c_sbuild.bat 启动c1
  4. 最后启动Client端

然后启动结果,发现一个错误 经过百度查看官方文档发现是由于没有创建agent-token导致

UpdateLock

此时 我们在192.168.1.78:8520 这台客户端上请求创建agent-token ;

这里使用了postman,因为我们配置该客户端时没有配置ui界面 过程和结果如下

请求Token

得到获取到的agent-token 配置到每个客户端,然后照上述执行顺序依次执行c_sbuild.bat文件重启客户端 (在重启客户端之前,记得要用Ctrl+c 关闭客户端哦 ,否则可能会有进程在后台执行)

请求结果

Token配置

服务启动最终结果

此时可以打开ui界面http://192.168.1.78:8510/发现我们3个Server 端 与1个Client端已经 集群在上面了 此时Leader已经通过自动选举到c3,这里我使用的是谷歌浏览器 安装了 ModHeader 这个请求头插件 小伙伴可以自行安装

集群ui界面图

当然我们也可以在请求   

GET /v1/catalog/nodes HTTP/1.1
Host: 192.168.1.78:8520(任意客户端地址都可)
X-Consul-Token: ac24b0d7-5535-40cc-8696-073462acc6c7

集群结果

同时我们也能通过输入终端指令来查看集群成员状态 如下

consul members

也可查看详细成员信息 如下

集群详细信息

KeyValue集群测试

首先我们在ui KeyValue界面上创建一个Key:WebApplication1Configure,内容可以随便填啦 此时我们访问的是192.168.1.78:8510 的客户端ui 下面请求则换不同端口请求

然后在任意一客户端请求,请求请求结果如下,当然kv也需要附加上token请求头哦,这里value是加过密的所以你可以看不同客户端上加密字符串是否一致

kvhttp结果

至此 集群已成功

分隔线-----------------------------------------------------------------------------------------------------------------------------------------------------

下个随笔 Ocelot 网关搭建、服务发现配置与 客户端Consul注册

免责声明:文章转载自《Consul Windows集群搭建ACL Token验证》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇安卓开发中去除标题栏笔记:Eclipse 安装 m2eclipse 插件下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

KeepAlived双主模式高可用集群

     keepalived是vrrp协议的实现,原生设计目的是为了高可用ipvs服务,keepalived能够配置文件中的定义生成ipvs规则,并能够对各RS的健康状态进行检测;通过共用的虚拟IP地址对外提供服务;每个热备组内同一时刻只有一台主服务器提供服务,其他服务器处于冗余状态,若当前在线的服务器宕机,其虚拟IP地址将会被其他服务器接替(优先级决定...

Resin学习之配置resin.properties

  Resin服务器的配置主要有两个文件:resin.properties for most common properties and resin.xml for full customization。Resin的配置最终都转化为resin.xml,其他配置文件主要为了保持配置的可管理性。一般情况下只需要修改resin.properties即可。   r...

JS反混淆——构造可知DeviceToken、nouce与token

清空所有cookies后打开任意一本书的详情页,打开控制台中的Network。如下图所示,浏览器发出的第一个XHR请求为/bind,其中DeviceToken,nonce,Token均为POST中提交的数据。 找到访问网页的请求,如下图所示,返回头中没有出现set-cookie字段,可以判断DeviceToken,nonce,Token均为js生成的。...

微信公众平台开发——helloworld

威信公众平台有两种模式:编辑模式 和 开发模式。 普通的功能可以通过编辑模式来搞定。开发模式具有更多的功能。让我们来使用开发模式开发helloword吧 步骤如下: 1.先注册一个公众号(https://mp.weixin.qq.com) 2.注册sae(http://sae.sina.com.cn/),作为你的服务器。 3.登录微信公众平台(https:...

Postman高级应用——串行传参和动态传参详解(转发)

目录 串行传参 动态传参 使用的接口是微信公众号开发文档里面的接口,详细请看开发文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1445241432 首先需要获取到接口测试号,开始开发>接口测试号申请>获得appID和appsecret,位置为:https://mp.w...

基于C#实现的单点登录

了解或想探索单点登录的朋友应该对单点登录有一个大致的了解,在这里我不在过多的阐述单点登录的概念。 单点登录说的通俗一点,就是一处登录(统一认证中心--Server),处处通行(Client)。 一、第一步我们先来探讨探讨SSO单点登录的过程    1.当Client第一次登录时,查看自己有没有局部会话,没有的话,则重定向到统一认证中心进行进行登录操作   ...