Consul的安装与配置

1、下载安装包:

wget https://releases.hashicorp.com/consul/1.17.1/consul_1.17.1_linux_amd64.zip

2、解压:

unzip consul_1.17.1_linux_amd64.zip

解压完成之后就只有一个执行文件

使用命令

./consul agent -h

可以查看配置的相关参数有哪些,以下是相关参数的配置

-advertise:通知展现地址用来改变我们给集群中的其他节点展现的地址,一般情况下-bind地址就是展现地址 
-bootstrap:用来控制一个server是否在bootstrap模式,在一个datacenter中只能有一个server处于bootstrap模式,当一个server处于bootstrap模式时,可以自己选举为raft leader。 
-bootstrap-expect:在一个datacenter中期望提供的server节点数目,当该值提供的时候,consul一直等到达到指定sever数目的时候才会引导整个集群,该标记不能和bootstrap公用 
-bind:该地址用来在集群内部的通讯,集群内的所有节点到地址都必须是可达的,默认是0.0.0.0 
-client:consul绑定在哪个client地址上,这个地址提供HTTP、DNS、RPC等服务,默认是127.0.0.1 
-config-file:明确的指定要加载哪个配置文件 
-config-dir:配置文件目录,里面所有以.json结尾的文件都会被加载 
-data-dir:提供一个目录用来存放agent的状态,所有的agent允许都需要该目录,该目录必须是稳定的,系统重启后都继续存在 
-dc:该标记控制agent允许的datacenter的名称,默认是dc1 
-encrypt:指定secret key,使consul在通讯时进行加密,key可以通过consul keygen生成,同一个集群中的节点必须使用相同的key 
-join:加入一个已经启动的agent的ip地址,可以多次指定多个agent的地址。如果consul不能加入任何指定的地址中,则agent会启动失败,默认agent启动时不会加入任何节点。 
-retry-join:和join类似,但是允许你在第一次失败后进行尝试。 
-retry-interval:两次join之间的时间间隔,默认是30s 
-retry-max:尝试重复join的次数,默认是0,也就是无限次尝试 
-log-level:consul agent启动后显示的日志信息级别。默认是info,可选:trace、debug、info、warn、err。 
-node:节点在集群中的名称,在一个集群中必须是唯一的,默认是该节点的主机名 
-protocol:consul使用的协议版本 
-rejoin:使consul忽略先前的离开,在再次启动后仍旧尝试加入集群中。 
-server:定义agent运行在server模式,每个集群至少有一个server,建议每个集群的server不要超过5个 
-syslog:开启系统日志功能,只在linux/osx上生效 
-ui-dir: 提供存放web ui资源的路径,该目录必须是可读的 
-pid-file: 提供一个路径来存放pid文件,可以使用该文件进行SIGINT/SIGHUP(关闭/更新)agent 

 指定secret key,使consul在通讯时进行加密,key可以通过consul keygen生成,同一个集群中的节点必须使用相同的key 

consul keygen

集群配置:

服务器ip             consul类型    node节点   系统

192.168.43.21    server           server-01   centos

192.168.43.20    server           server-02   centos

192.168.43.22    server           server-03   centos

1、通过TLS传输加密,需要生成证书

#初始化内置CA,在consul目录下输入以下命令
./consul tls ca create

这样就生成了一个初始化的CA证书,接着我们要创建服务器证书:

#输入以下命令 -dc  请记住使用适当的标志。dc1/consul
consul tls cert create -server -dc dc1

 输入以上命令之后就会生成四个这样的文件,我们再需要在配置文件中配置一下,在consul目录下创建config/config.json的文件,配置如下

{
  "node_name": "server-01",
  "encrypt": "bny3/IZVs5aNZQb8AvyNnBfFug+L9jlnciPYDL/1ULk=",
  "ui_config": {
    "enabled": true
  },
  "addresses": {
    "https": "192.168.43.21"
  },
  "ports": {
    "https": 8501
  },
  "tls": {
    "defaults": {
      "verify_incoming": true,
      "verify_outgoing": true,
      "ca_file": "/www/server/consul/consul-agent-ca.pem",
      "cert_file": "/www/server/consul/dc1-server-consul-0.pem",
      "key_file": "/www/server/consul/dc1-server-consul-0-key.pem"
    },
    "internal_rpc": {
      "verify_server_hostname": true
    }
  }
}

配置好之后我们启动主节点服务:

./consul agent -server -server-port=8500 -bind=192.168.43.21 -data-dir=data -config-dir=config -pid-file=master.pid -bootstrap-expect=3 -ui

在 192.168.43.20和192.168.43.22这两个节点服务器中,

 分别将这三个生成的证书文件复制到这两个节点对应的consul目录下

同时在这两个节点分别创建config/config.json

{
  "node_name": "server-02",
  "encrypt": "bny3/IZVs5aNZQb8AvyNnBfFug+L9jlnciPYDL/1ULk=",
  "ui_config": {
    "enabled": true
  },
  "ports": {
    "https": 8501
  },
  "tls": {
    "defaults": {
      "verify_incoming": true,
      "verify_outgoing": true,
      "ca_file": "/www/server/consul/CA/consul-agent-ca.pem",
      "cert_file": "/www/server/consul/CA/dc1-server-consul-0.pem",
      "key_file": "/www/server/consul/CA/dc1-server-consul-0-key.pem"
    },
    "internal_rpc": {
      "verify_server_hostname": true
    }
  }
}

 

然后分别执行以下命令:

#在192.168.43.20节点中
./consul agent -bind=192.168.43.20 -client=192.168.43.20 -data-dir=data -node=server-02 -join=192.168.43.21 -config-dir=config
#在192.168.43.22节点中
./consul agent -bind=192.168.43.22 -client=192.168.43.22 -data-dir=data -node=server-03 -join=192.168.43.21 -config-dir=config

分别加入之后,可以通过

./consul members

查看各自的节点加入情况

 

设置consul开机自动启动:

touch /usr/lib/systemd/system/consul.service
vi /usr/lib/systemd/system/consul.service
#粘贴以下代码到文件中

[Unit]
Description=consul
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/www/server/consul/start.sh
KillSignal=SIGTERM
[Install]
WantedBy=multi-user.target

编辑start.sh

#!/bin/bash

nohup /www/server/consul/consul agent -server -server-port=8500 -bind=192.168.43.21 -data-dir=/www/server/consul/data -config-dir=/www/server/consul/config -pid-file=/www/server/consul/master.pid -bootstrap-expect=3 -ui &

echo "consul start"

从节点192.168.43.20:

#!/bin/bash
nohup /www/server/consul/consul agent -bind=192.168.43.20 -client=192.168.43.20 -data-dir=/www/server/consul/data -node=server-02 -join=192.168.43.21 -config-dir=/www/server/consul/config &

echo "consul start"

从节点:192.168.43.22

#!/bin/bash
nohup /www/server/consul/consul agent -bind=192.168.43.22 -client=192.168.43.22 -data-dir=/www/server/consul/data -node=server-03 -join=192.168.43.21 -config-dir=/www/server/consul/config &

echo "consul start"

 

给start.sh添加可执行权限

chmod +x /www/server/consul/start.sh
# 设置自启
systemctl enable consul.service
systemctl daemon
-reload
systemctl is-enabled consul.service #查看是否自启
systemctl disable consul.service #取消自启
systemctl daemon
-reload

 

posted @ 2024-01-14 01:42  来碗酒喝  阅读(223)  评论(0编辑  收藏  举报