zoukankan      html  css  js  c++  java
  • 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注册

      

     

  • 相关阅读:
    webpack
    react 原理
    jest
    input 自动获取焦点
    taro
    html5标签
    webpack
    每日日报
    每日日报
    每日日报
  • 原文地址:https://www.cnblogs.com/lazydragon/p/13204623.html
Copyright © 2011-2022 走看看