1、环境准备
我们需要先准备三台虚拟机:
consul-master consul-slave1 consul-slave2
开启虚拟机并使用虚拟机连接工具连接虚拟机(Xshell、electerm)
2、下载并安装(三台虚拟机同样操作)
consul的下载地址:consul download
进入到官方下载的时候,点击Linux -> Centos/RHEL这个选项的时候,会发现可以使用配置yum源,使用yum进行安装的方式,这里就不会采用那种方式了(可以尝试那种方式安装)
下载zip安装包
选择你对应的版本,对应的系统类型,我选的是Linux consul1.9.9版本
Linux consul1.9.9
下载完成后,把安装包上传到linux服务器上
创建分类文件夹(也可以不创建,为了区分我比较喜欢创建)
mkdir -p /opt/modules/software
上传下载好的安装包文件
解压上传好的安装包
unzip -o /opt/modules/software/consul_1.9.9_linux_amd64.zip -d /opt/modules/consul
如果报如下的错误则表示你没有安装unzip
使用yum进行下载unzip
yum install -y unzip
安装完成进行解压
unzip -o /opt/modules/software/consul_1.9.9_linux_amd64.zip -d /opt/modules/consul
解压完成
3、配置consul(三台虚拟机同样操作)
创建consul配置文件保存目录
mkdir -p /opt/modules/consul/conf
创建consul数据文件保存目录
mkdir -p /opt/modules/consul/data
把consul服务添加到环境变量中
vim /etc/profile.d/mydev.sh
添加的内容
#Consul
export CONSUL_HOME=/opt/modules/consul
#export
export PATH=$PATH:$CONSUL_HOME
重新加载环境变量
source /etc/profile
输入consul进行测试
Usage: consul [--version] [--help] []
Available commands are:
acl Interact with Consul's ACLs
agent Runs a Consul agent
catalog Interact with the catalog
config Interact with Consul's Centralized Configurations
connect Interact with Consul Connect
debug Records a debugging archive for operators
event Fire a new event
exec Executes a command on Consul nodes
force-leave Forces a member of the cluster to enter the "left" state
info Provides debugging information for operators.
intention Interact with Connect service intentions
join Tell Consul agent to join cluster
keygen Generates a new encryption key
keyring Manages gossip layer encryption keys
kv Interact with the key-value store
leave Gracefully leaves the Consul cluster and shuts down
lock Execute a command holding a lock
login Login to Consul using an auth method
logout Destroy a Consul token created with login
maint Controls node or service maintenance mode
members Lists the members of a Consul cluster
monitor Stream logs from a Consul agent
operator Provides cluster-level tools for Consul operators
reload Triggers the agent to reload configuration files
rtt Estimates network round trip time between nodes
services Interact with services
snapshot Saves, restores and inspects snapshots of Consul server state
tls Builtin helpers for creating CAs and certificates
validate Validate config files/directories
version Prints the Consul version
watch Watch for changes in Consul
参数说明
server: 以server身份启动。默认是client
bootstrap-expect:集群要求的最少server数量,当低于这个数量,集群即失效。
data-dir:data存放的目录,更多信息请参阅consul数据同步机制
node:节点id,集群中的每个node必须有一个唯一的名称。默认情况下,Consul使用机器的hostname
bind:监听的ip地址。默认绑定0.0.0.0,可以不指定。表示Consul监听的地址,而且它必须能够被集群中的其他节点访问。Consul默认会监听第一个private IP,但最好还是提供一个。生产设备上的服务器通常有好几个网卡,所以指定一个不会出错
client: 客户端的ip地址,0.0.0.0是指谁都可以访问(不加这个,下面的ui :8500无法访问)
ui: 可以访问UI界面
-config-dir指定配置文件夹,Consul会加载其中的所有文件
-datacenter 指定数据中心名称,默认是dc1
4、启动consul
启动master节点
consul agent -server -bootstrap-expect=3 -data-dir=/opt/modules/consul/data -node=consul-master -bind=192.168.64.128 -client=0.0.0.0 -datacenter=beijing -ui
==> Starting Consul agent...
Version: '1.9.9'
Node ID: 'e023dba6-c795-7e14-738e-34924bf367bf'
Node name: 'consul-master'
Datacenter: 'beijing' (Segment: '')
Server: true (Bootstrap: false)
Client Addr: [0.0.0.0] (HTTP: 8500, HTTPS: -1, gRPC: -1, DNS: 8600)
Cluster Addr: 192.168.64.128 (LAN: 8301, WAN: 8302)
Encrypt: Gossip: false, TLS-Outgoing: false, TLS-Incoming: false, Auto-Encrypt-TLS: false
==> Log data will now stream in as it occurs:
2021-10-02T09:26:41.871+0800 [WARN] agent: bootstrap_expect > 0: expecting 3 servers
2021-10-02T09:26:41.875+0800 [WARN] agent.auto_config: bootstrap_expect > 0: expecting 3 servers
2021-10-02T09:26:41.881+0800 [INFO] agent.server.raft: initial configuration: index=0 servers=[]
2021-10-02T09:26:41.882+0800 [INFO] agent.server.serf.wan: serf: EventMemberJoin: consul-master.beijing 192.168.64.128
2021-10-02T09:26:41.882+0800 [INFO] agent.server.serf.lan: serf: EventMemberJoin: consul-master 192.168.64.128
2021-10-02T09:26:41.882+0800 [INFO] agent.router: Initializing LAN area manager
2021-10-02T09:26:41.883+0800 [INFO] agent: Started DNS server: address=0.0.0.0:8600 network=udp
2021-10-02T09:26:41.883+0800 [INFO] agent.server.raft: entering follower state: follower="Node at 192.168.64.128:8300 [Follower]" leader=
2021-10-02T09:26:41.883+0800 [INFO] agent.server: Adding LAN server: server="consul-master (Addr: tcp/192.168.64.128:8300) (DC: beijing)"
2021-10-02T09:26:41.883+0800 [INFO] agent.server: Handled event for server in area: event=member-join server=consul-master.beijing area=wan
2021-10-02T09:26:41.883+0800 [INFO] agent: Started DNS server: address=0.0.0.0:8600 network=tcp
2021-10-02T09:26:41.886+0800 [INFO] agent: Starting server: address=[::]:8500 network=tcp protocol=http
2021-10-02T09:26:41.886+0800 [WARN] agent: DEPRECATED Backwards compatibility with pre-1.9 metrics enabled. These metrics will be removed in a future version of Consul. Set `telemetry { disable_compat_1.9 = true }` to disable them.
2021-10-02T09:26:41.887+0800 [INFO] agent: started state syncer
2021-10-02T09:26:41.887+0800 [INFO] agent: Consul agent running!
2021-10-02T09:26:48.957+0800 [ERROR] agent.anti_entropy: failed to sync remote state: error="No cluster leader"
2021-10-02T09:26:51.053+0800 [WARN] agent.server.raft: no known peers, aborting election
2021-10-02T09:27:06.540+0800 [INFO] agent: Newer Consul version available: new_version=1.10.3 current_version=1.9.9
2021-10-02T09:27:10.719+0800 [ERROR] agent: Coordinate update error: error="No cluster leader"
2021-10-02T09:27:15.719+0800 [ERROR] agent.anti_entropy: failed to sync remote state: error="No cluster leader"
2021-10-02T09:27:33.730+0800 [ERROR] agent: Coordinate update error: error="No cluster leader"
启动salve1节点
consul agent -server -bootstrap-expect 3 -data-dir /tmp/consul -node consul-salve1 -bind=192.168.64.134 -client=0.0.0.0 -datacenter beijing -ui
==> Starting Consul agent...
Version: '1.9.9'
Node ID: '14c9d31b-47de-856b-fdf6-c520ece0cf6b'
Node name: 'consul-salve1'
Datacenter: 'beijing' (Segment: '')
Server: true (Bootstrap: false)
Client Addr: [0.0.0.0] (HTTP: 8500, HTTPS: -1, gRPC: -1, DNS: 8600)
Cluster Addr: 192.168.64.134 (LAN: 8301, WAN: 8302)
Encrypt: Gossip: false, TLS-Outgoing: false, TLS-Incoming: false, Auto-Encrypt-TLS: false
==> Log data will now stream in as it occurs:
2021-10-02T09:36:41.681+0800 [WARN] agent: bootstrap_expect > 0: expecting 3 servers
2021-10-02T09:36:41.687+0800 [WARN] agent.auto_config: bootstrap_expect > 0: expecting 3 servers
2021-10-02T09:36:41.692+0800 [INFO] agent.server.raft: initial configuration: index=0 servers=[]
2021-10-02T09:36:41.694+0800 [INFO] agent.server.serf.wan: serf: EventMemberJoin: consul-salve1.beijing 192.168.64.134
2021-10-02T09:36:41.694+0800 [INFO] agent.server.serf.lan: serf: EventMemberJoin: consul-salve1 192.168.64.134
2021-10-02T09:36:41.694+0800 [INFO] agent.router: Initializing LAN area manager
2021-10-02T09:36:41.696+0800 [INFO] agent: Started DNS server: address=0.0.0.0:8600 network=udp
2021-10-02T09:36:41.696+0800 [INFO] agent.server.raft: entering follower state: follower="Node at 192.168.64.134:8300 [Follower]" leader=
2021-10-02T09:36:41.697+0800 [INFO] agent.server: Adding LAN server: server="consul-salve1 (Addr: tcp/192.168.64.134:8300) (DC: beijing)"
2021-10-02T09:36:41.697+0800 [INFO] agent.server: Handled event for server in area: event=member-join server=consul-salve1.beijing area=wan
2021-10-02T09:36:41.698+0800 [INFO] agent: Started DNS server: address=0.0.0.0:8600 network=tcp
2021-10-02T09:36:41.703+0800 [INFO] agent: Starting server: address=[::]:8500 network=tcp protocol=http
2021-10-02T09:36:41.703+0800 [WARN] agent: DEPRECATED Backwards compatibility with pre-1.9 metrics enabled. These metrics will be removed in a future version of Consul. Set `telemetry { disable_compat_1.9 = true }` to disable them.
2021-10-02T09:36:41.703+0800 [INFO] agent: started state syncer
2021-10-02T09:36:41.703+0800 [INFO] agent: Consul agent running!
2021-10-02T09:36:48.784+0800 [ERROR] agent.anti_entropy: failed to sync remote state: error="No cluster leader"
2021-10-02T09:36:50.884+0800 [WARN] agent.server.raft: no known peers, aborting election
启动salve2节点
consul agent -server -bootstrap-expect 3 -data-dir /tmp/consul -node consul-salve2 -bind=192.168.64.133 -client=0.0.0.0 -datacenter beijing -ui
==> Starting Consul agent...
Version: '1.9.9'
Node ID: '969bfeac-1d54-393e-9284-fa1c9247071d'
Node name: 'consul-salve2'
Datacenter: 'beijing' (Segment: '')
Server: true (Bootstrap: false)
Client Addr: [0.0.0.0] (HTTP: 8500, HTTPS: -1, gRPC: -1, DNS: 8600)
Cluster Addr: 192.168.64.133 (LAN: 8301, WAN: 8302)
Encrypt: Gossip: false, TLS-Outgoing: false, TLS-Incoming: false, Auto-Encrypt-TLS: false
==> Log data will now stream in as it occurs:
2021-10-02T09:39:17.163+0800 [WARN] agent: bootstrap_expect > 0: expecting 3 servers
2021-10-02T09:39:17.171+0800 [WARN] agent.auto_config: bootstrap_expect > 0: expecting 3 servers
2021-10-02T09:39:17.177+0800 [INFO] agent.server.raft: initial configuration: index=0 servers=[]
2021-10-02T09:39:17.178+0800 [INFO] agent.server.serf.wan: serf: EventMemberJoin: consul-salve2.beijing 192.168.64.133
2021-10-02T09:39:17.178+0800 [INFO] agent.server.serf.lan: serf: EventMemberJoin: consul-salve2 192.168.64.133
2021-10-02T09:39:17.178+0800 [INFO] agent.router: Initializing LAN area manager
2021-10-02T09:39:17.178+0800 [INFO] agent: Started DNS server: address=0.0.0.0:8600 network=udp
2021-10-02T09:39:17.178+0800 [INFO] agent.server.raft: entering follower state: follower="Node at 192.168.64.133:8300 [Follower]" leader=
2021-10-02T09:39:17.179+0800 [INFO] agent.server: Adding LAN server: server="consul-salve2 (Addr: tcp/192.168.64.133:8300) (DC: beijing)"
2021-10-02T09:39:17.179+0800 [INFO] agent.server: Handled event for server in area: event=member-join server=consul-salve2.beijing area=wan
2021-10-02T09:39:17.179+0800 [INFO] agent: Started DNS server: address=0.0.0.0:8600 network=tcp
2021-10-02T09:39:17.181+0800 [INFO] agent: Starting server: address=[::]:8500 network=tcp protocol=http
2021-10-02T09:39:17.181+0800 [WARN] agent: DEPRECATED Backwards compatibility with pre-1.9 metrics enabled. These metrics will be removed in a future version of Consul. Set `telemetry { disable_compat_1.9 = true }` to disable them.
2021-10-02T09:39:17.182+0800 [INFO] agent: started state syncer
2021-10-02T09:39:17.182+0800 [INFO] agent: Consul agent running!
2021-10-02T09:39:22.275+0800 [WARN] agent.server.raft: no known peers, aborting election
2021-10-02T09:39:24.560+0800 [ERROR] agent.anti_entropy: failed to sync remote state: error="No cluster leader"
把salve1、salve2加载到master集群节点中
consul集群:当一个consul agent启动后,它不知道任何其他节点,要学习到集群中的其他节点,agent必须加入一个已经存在的集群(cluster)。要加入这样的集群,它只需要知道这个集群中的一个节点即可。它加入后,将会和这个member gossip(交谈)并迅速发现集群中的其他节点。一个consul agent可以加入任何类型的其他agent,而不只是那些运行于server mode的agent。
另起一个连接操作salve1
consul join 192.168.64.128
另起一个连接操作salve2
consul join 192.168.64.128
5、测试consul
在状态栏输入
http://192.168.64.128:8500/ui/beijing/nodes
至此,Centos7搭建consul集群就完成了。