centos6 安装consul ACL

一、下载安装包

去node官网下载最新的consul版本,地址:
consul官方下载地址

不需要下载到自己的客户机上,直接在服务器里面用wget下载更快

拷贝下载链接

cd /home/download
wget https://releases.hashicorp.com/consul/1.3.1/consul_1.3.1_linux_amd64.zip

二、解压安装包

unzip consul_1.3.1_linux_amd64.zip
mv consul  /usr/local/

四、测试

consul agent -dev

consul agent常用命令解读
-data-dir
作用:指定agent储存状态的数据目录,这是所有agent都必须的,对server尤其重要,因为他们必须持久化集群的状态

-config-dir
作用:指定service的配置文件和检查定义所在的位置。目录必需为consul.d,文件内容都是json格式的数据。配置详解见官方

-config-file
作用:指定一个要装载的配置文件

-dev
作用:开发服务器模式,虽然是server模式,但不用于生产环境,因为不会有任何持久化操作,即不会有任何数据写入到磁盘

-bootstrap-expect
作用: 参数表明该服务运行时最低开始进行选举的节点数,当设置为1时,则意味允许节点为一个时也进行选举;当设置为3时,则等到3台节点同时运行consul并加入到server才能参与选举,选举完集群才能够正常工作。 一般建议服务器结点3-5个。

-node
作用:指定节点在集群中的名称,该名称在集群中必须是唯一的(默认这是机器的主机名),直接采用机器的IP

-bind
作用:指明节点的IP地址,一般是0.0.0.0或者云服务器内网地址,不能写阿里云外网地址。这是Consul侦听的地址,它必须可以被集群中的所有其他节点访问。虽然绑定地址不是绝对必要的,但最好提供一个。

-server
作用:指定节点为server,每个数据中心(DC)的server数推荐3-5个。

-client
作用:指定节点为client,指定客户端接口的绑定地址,包括:HTTP、DNS、RPC
默认是127.0.0.1,只允许回环接口访问

五、生产

以-dev开发者服务器模式运行的,生产环境不是我想要的。下面以server模式运行consul.

consul agent -server -ui -bootstrap-expect=1 -data-dir=/tmp/consul -node=agent-one -advertise=116.62.184.190 -bind=0.0.0.0 -client=0.0.0.0

-server:服务器模式
-ui:能webui展示
-bootstrap-expect:server为1时即选择server集群leader
-data-dir:consul状态存储文件地址
-node:指定结点名
advertise:本地ip地址
-client:指定可访问这个服务结点的ip
注意 Cluster Addr集群地址是我们上面advertise指定的ip地址

六、集群

服务器一:

consul agent -server -ui -bootstrap-expect=1 -data-dir=/tmp/consul -node=agent-one -advertise=116.62.184.190 -bind=0.0.0.0 -client=0.0.0.0

服务器二:

consul agent -server -ui -bootstrap-expect=1 -data-dir=/tmp/consul -node=agent-two -advertise=139.196.123.97 -bind=0.0.0.0 -client=0.0.0.0

将agent-one添加到agent-two:

consul join 139.196.123.97

表示当前consul服务器添加到139.196.123.97上面consul服务器
执行结果为Successfully joined cluster by contacting 1 nodes.表示添加成功,在服务器一或服务器二任意一台机器上执行consul members都会得到如下结果:

Node       Address              Status  Type    Build  Protocol  DC   Segment
agent-one  116.62.184.190:8301  alive   server  1.1.0  2         dc1  <all>
agent-two  139.196.123.97:8301  alive   server  1.1.0  2         dc1  <all>

访问http://139.196.123.97:8500,允许访问8500端口

成功展示2台consul服务器。
在这里插入图片描述

七、consul概念

Agent: Consul集群中长时间运行的守护进程,以consul agent 命令开始启动. 在客户端和服务端模式下都可以运行,可以运行DNS或者HTTP接口, 它的主要作用是运行时检查和保持服务同步。
Client: 客户端, 无状态, 以一个极小的消耗将接口请求转发给局域网内的服务端集群.
Server: 服务端, 保存配置信息, 高可用集群, 在局域网内与本地客户端通讯, 通过广域网与其他数据中心通讯. 每个数据中心的 server 数量推荐为 3 个或是 5 个.
Datacenter: 数据中心,多数据中心联合工作保证数据存储安全快捷
Consensus: 一致性协议使用的是Raft Protocol
RPC: 远程程序通信
Gossip: 基于 Serf 实现的 gossip 协议,负责成员、失败探测、事件广播等。通过 UDP 实现各个节点之间的消息。分为 LAN 上的和 WAN 上的两种情形。

八、ACL

consul安装启动之后-client配置的是0.0.0.0 ,所以任何机器上的服务都可以访问consul获取配置和服务,甚至知道ip和端口号都可以访问consul-ui,所以就需要设置权限,不能让任何人都能访问得到。

  • consul的配置文件启动
    consul不仅可以用命令来启动并配置,还可以实用配置文件方式启动,如下:
uuidgen #生成token
mkdir /etc/consul.d
cd /etc/consul.d
touch acl.json
vi acl.json




{
        "datacenter": "datacenter",
        "acl_datacenter": "datacenter",
        "acl_master_token": "uuidgen 生成的token",
        "acl_default_policy": "deny",
        "server": true,
        "log_level": "DEBUG",
        "bootstrap_expect": 1,
        "client_addr": "0.0.0.0"
}

nohup ./consul agent -server -ui -bootstrap-expect=1 -data-dir=/tmp/consul -config-dir=/etc/consul.d  -node=agent-one -advertise=127.0.0.1 -bind=0.0.0.0 -client=0.0.0.0 >./nohup.log 2>&1 &

填写masterToken
在这里插入图片描述

应该是把token存在浏览器localStorage里的

现在就可以通过ui界面管理token的权限分配了(制订ACL规则)。

下面是一个可以操作读取K\V的规则

agent "" {  policy = "read"  }
agent "" {  policy = "write"  }
node "" {  policy = "write"  }
service "" {  policy = "read"  }
service "" {  policy = "write"  }
event "" {  policy = "write"  }
query "" { policy = "write"  }
key "" {
  policy = "read"
}
key "" { policy = "write" }

在这里插入图片描述

发布了90 篇原创文章 · 获赞 14 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/u014229652/article/details/84074370
今日推荐