Centos7部署Consul集群

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] <command> [<args>]

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: '<all>')
            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: '<all>')
            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: '<all>')
            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集群就完成了。

猜你喜欢

转载自blog.csdn.net/qq_43788878/article/details/120583058