Springcloud Consul部署实战 - 1 - Go语言中文社区

Springcloud Consul部署实战 - 1


本文源自官方部署文档和其他网友的一些资料,有不对之处请帮助改正。

以下是单数据中心的部署架构图

Reference Diagram

 

所有的要部署consul的host都必须包含如下几部(systemd的配置是可选的)

  • 下载 Consul
  • 安装 Consul
  • 配置 systemd(可选)
  • 配置 Consul (Server)和(Client)
  • 启动 Consul

下载Consul

如果是linux主机,可是使用curl工具在官网https://releases.hashicorp.com/consul/下载consul的release zip包,版本先去官网查一下选择最新的即可。

CONSUL_VERSION="1.5.1"
curl --silent --remote-name https://releases.hashicorp.com/consul/${CONSUL_VERSION}/consul_${CONSUL_VERSION}_linux_amd64.zip

安装Consul 

解压缩下载的包。改变consul的拥有者为root组root用户。将consul可执行文件移动到/ usr / local / bin /。 检查consul是否可用。

unzip consul_${CONSUL_VERSION}_linux_amd64.zip
sudo chown root:root consul
sudo mv consul /usr/local/bin/
consul --version

启用consul命令的自动补全功能

consul -autocomplete-install
complete -C /usr/local/bin/consul consul

 创建一个唯一的非特权系统用户来运行Consul并创建其数据目录。(可选)

sudo useradd consul
sudo mkdir --parents /opt/consul
sudo chown --recursive consul:consul /opt/consul

 

配置Systemd (可选)

Systemd使用默认使用documented sane  ,所以只有非默认值需要在配置文件中配置。

在/etc/systemd/system/  路径下创建 consul.service文件

sudo touch /etc/systemd/system/consul.service

将如下配置添加到consul.service文件:

[Unit]
Description="HashiCorp Consul - A service mesh solution"
Documentation=https://www.consul.io/
Requires=network-online.target
After=network-online.target
ConditionFileNotEmpty=/etc/consul.d/consul.hcl

[Service]
User=consul
Group=consul
ExecStart=/usr/local/bin/consul agent -config-dir=/etc/consul.d/
ExecReload=/usr/local/bin/consul reload
KillMode=process
Restart=on-failure
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

 为[Unit]节设置以下参数:

Description - 用于描述consul server

Documentation - 链接到consul文档

Requires - 配置网络服务的需要依赖

After - 在consul server启动之前,配置网络服务启动时的排序依赖性

ConditionFileNotEmpty - 在consul服务启动之前检查配置文件是否为空

为[Service]节设置以下参数:

UserGroup - 使用consul用户运行consul

ExecStart - 使用agent参数和配置文件的路径启动consul

ExecReload -向consul发送重载信号以触发consul配置文件的重新加载

KillMode - 将consul作为一个单独的进程

Restart - 重启consul,除非它返回完整的退出代码

LimitNOFILE - 为文件描述符设置上限

为[Install]节设置以下参数:

WantedBy - 创建对使用多用户运行级别启动consul时的弱依赖

 

 配置Consul(server)

Consul默认documented sane ,所以只有非默认值才需要设置在配置文件中。可以从多个文件中读取配置,并按词汇顺序加载。 

Consul server代理配置通常情况下是client代理配置的超集。 所以我们在consul.hcl中指定所有Consul代理使用的公共配置,并在server.hcl中指定server特定的配置。

生成配置文件

创建consul.d文件夹,在 /etc/consul.d/下创建一个名为consul.hcl的配置文件,将文件夹和文件的拥有者付给consul用户,将文件的权限改为consul用户可读写,consul组可写,其他用户组无权限。

sudo mkdir --parents /etc/consul.d
sudo touch /etc/consul.d/consul.hcl
sudo chown --recursive consul:consul /etc/consul.d
sudo chmod 640 /etc/consul.d/consul.hcl

 在consul.hcl的配置文件添加如下配置

datacenter = "dc1"
data_dir = "/opt/consul"
encrypt = "Luj2FZWwlt8475wD1WtwUQ=="

将datacenter值替换为将用于部署Consul集群的数据中心的标识符。将encrypt参数值替换为运行consul keygen命令的输出(该台机器上必须已经安装了consul可执行文件)。 顺便解释下这几参数的意义:

datacenter  - consul agenct运行所在的数据中心。
data_dir - consul agent 存储状态信息的数据目录。
encrypt -  指定用于加密Consul网络传输的密钥。

自动加入集群

retry_join参数通过使用DNS地址,IP地址或cloud auto-join configuration使所有的consul agent自动形成集群。 

将retry_join参数添加到consul.hcl配置文件中

retry_join = ["172.16.0.11"]

将retry_join的值替换为consul agent启动时要加入的另一个agent的地址。

 

Performance 节

performance节允许调整Consul中不同子系统的性能。

将Performance配置添加到consul.hcl配置文件中

performance {
  raft_multiplier = 1
}

raft_multiplier - 该参数是整型的倍数,用于缩放Raft timing 参数。设置为1时将会使Raft达到最优的性能。Raft和raft_multiplier设置的更多信息,请参server performance文档。

 

Telemetry

telemetry 节为Consul指定了各种配置,以便将指标发布到上游系统。

如果您决定为Consul配置各种观测数据,可参阅Monitoring and Metrics guide

 

配置Server

在/etc/consul.d/ 路径下的创建一个server.hcl 文件。

sudo mkdir --parents /etc/consul.d
sudo touch /etc/consul.d/server.hcl
sudo chown --recursive consul:consul /etc/consul.d
sudo chmod 640 /etc/consul.d/server.hcl

添加如下配置到server.hcl中:

server = true
bootstrap_expect = 3

 将bootstrap_expect的值替换为要使用的consul server的值,一般情况下为3-5个。

server  - 此标志用于控制consul agent是处于server模式还是client模式。
bootstrap-expect  - 此标志提供datacenter中预期的server数。 该值可以不提供,如果提供则必须与集群中其他server设置的数量一致。

 

Consul的管理界面

Consul具有基于Web的用户界面,允许使用图形用户界面查看所有sever,node,intention等等。

注意:应该考虑在特定的Consul host而不是所有的host上运行Consul UI。

(可选)将UI配置添加到server.hcl配置文件以启用Consul UI:

ui = true

配置Consul(client)

Consul client agent通常只是server agenct所需配置的子集。 所有Consul client都可以使用创建Consul server时创建的consul.hcl文件。 如果添加了特定的配置(如host 标识符),则需要单独设置这些配置。

 

启动Consul

使用sudo su - consul 切换到consul用户。

如果系统有systemd工具并且按照上述步骤配置了/etc/systemd/system/consul.service文件,则可以使用如下命令启动consul

sudo systemctl enable consul
sudo systemctl start consul
sudo systemctl status consul

如果系统没有systemd,则使用命令 

consul agent -config-dir=/etc/consul.d/

启动consul 

在部署过程中有几个需要注意:

1 . 所有consul agent配置相同的encrypt,否则启动时会出现无法encrypt错误。

2 . 在某个agent更改了配置,必须删除/opt/consul下面的所有的文件然后重启consul,否则新配置不会生效。

3. 可以在任意部署了consul agent的机器上运行consul members 查看集群中所有节点的状态。

 

上述步骤主要描述了如何搭建一个consul集群,如果是单机运行consul,则可以使用

 

$ consul agent -dev
==> Starting Consul agent...
==> Consul agent running!
           Version: 'v1.5.1'
           Node ID: '18339e2f-2b5e-cfa8-3ebe-a60cba24bb2a'
         Node name: 'Kaitlins-MBP'
        Datacenter: 'dc1' (Segment: '<all>')
            Server: true (Bootstrap: false)
       Client Addr: [127.0.0.1] (HTTP: 8500, HTTPS: -1, gRPC: 8502, DNS: 8600)
      Cluster Addr: 127.0.0.1 (LAN: 8301, WAN: 8302)
           Encrypt: Gossip: false, TLS-Outgoing: false, TLS-Incoming: false

==> Log data will now stream in as it occurs:

    2019/06/12 12:39:11 [DEBUG] agent: Using random ID "18339e2f-2b5e-cfa8-3ebe-a60cba24bb2a" as node ID
    2019/06/12 12:39:11 [DEBUG] tlsutil: Update with version 1
    2019/06/12 12:39:11 [DEBUG] tlsutil: OutgoingRPCWrapper with version 1
    2019/06/12 12:39:11 [DEBUG] tlsutil: IncomingRPCConfig with version 1
    2019/06/12 12:39:11 [DEBUG] tlsutil: OutgoingRPCWrapper with version 1
    2019/06/12 12:39:11 [INFO] raft: Initial configuration (index=1): [{Suffrage:Voter ID:18339e2f-2b5e-cfa8-3ebe-a60cba24bb2a Address:127.0.0.1:8300}]
    2019/06/12 12:39:11 [INFO] raft: Node at 127.0.0.1:8300 [Follower] entering Follower state (Leader: "")
    2019/06/12 12:39:11 [INFO] serf: EventMemberJoin: Kaitlins-MBP.dc1 127.0.0.1
    2019/06/12 12:39:11 [INFO] serf: EventMemberJoin: Kaitlins-MBP 127.0.0.1
    2019/06/12 12:39:11 [INFO] consul: Handled member-join event for server "Kaitlins-MBP.dc1" in area "wan"
    2019/06/12 12:39:11 [INFO] consul: Adding LAN server Kaitlins-MBP (Addr: tcp/127.0.0.1:8300) (DC: dc1)
    2019/06/12 12:39:11 [DEBUG] agent/proxy: managed Connect proxy manager started
    2019/06/12 12:39:11 [INFO] agent: Started DNS server 127.0.0.1:8600 (tcp)
    2019/06/12 12:39:11 [INFO] agent: Started DNS server 127.0.0.1:8600 (udp)
    2019/06/12 12:39:11 [INFO] agent: Started HTTP server on 127.0.0.1:8500 (tcp)
    2019/06/12 12:39:11 [INFO] agent: started state syncer
    2019/06/12 12:39:11 [INFO] agent: Started gRPC server on 127.0.0.1:8502 (tcp)
    2019/06/12 12:39:11 [WARN] raft: Heartbeat timeout from "" reached, starting election
    2019/06/12 12:39:11 [INFO] raft: Node at 127.0.0.1:8300 [Candidate] entering Candidate state in term 2
    2019/06/12 12:39:11 [DEBUG] raft: Votes needed: 1
    2019/06/12 12:39:11 [DEBUG] raft: Vote granted from 18339e2f-2b5e-cfa8-3ebe-a60cba24bb2a in term 2. Tally: 1
    2019/06/12 12:39:11 [INFO] raft: Election won. Tally: 1
    2019/06/12 12:39:11 [INFO] raft: Node at 127.0.0.1:8300 [Leader] entering Leader state
    2019/06/12 12:39:11 [INFO] consul: cluster leadership acquired
    2019/06/12 12:39:11 [INFO] consul: New leader elected: Kaitlins-MBP
版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/wstcilct/article/details/91971829
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-05-17 07:55:23
  • 阅读 ( 2355 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢