Consul Windows集群搭建ACL Token验证

前言:

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

前期准备:

  • 由于本人公司电脑硬件硬盘比较差 ,只准备了两台机器
机器Ip 及端口 端口号 客户端类型 节点/服务名称
192.168.1.78 8500 Sever c1(Leader)
192.168.1.78 8520 Server c2
192.168.1.21 8500 Server c3
192.168.1.78 8510 Client cc1(节点客户端)

 

 

 

 

 

 

 

 

 

 

 

  • 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注册

  

 

 

posted @ 2020-07-02 09:45  嗨呀会发光呀~  阅读(438)  评论(1编辑  收藏  举报