linux安装consul 您所在的位置:网站首页 linux安装consul未找到命令 linux安装consul

linux安装consul

#linux安装consul| 来源: 网络整理| 查看: 265

准备:4台机器

192.168.40.139

192.168.40.155

192.168.40.156

192.168.40.157

新建目录:

# cd /usr/local/bin

# mkdir admin (存放consul程序)

# mkdir webui (存放UI)

获取ui和zip包

# cd /usr/local/bin/webui

# wget https://releases.hashicorp.com/consul/0.7.5/consul_0.7.5_web_ui.zip

解压web_ui

# unzip consul_0.7.5_web_ui.zip

操作consul程序

进入目录

# cd /usr/local/bin/admin

# wget https://releases.hashicorp.com/consul/0.7.5/

解压

检查consul版本:

# ./consul version

f50ed9b2ac0098cf51c3ba0401cf0530.png

分别打开防火墙端口

# vi /etc/sysconfig/iptables

加入如下(三台机器都要加入):

-A INPUT -p tcp -m state --state NEW -m tcp --dport 8300 -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 8500 -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 8301 -j ACCEPT

60f8150e6571eb9b8362980895d6fe8a.png

保存退出重启防火墙

# service iptables restart

要想利用consul提供的服务实现服务的注册与发现,我们需要建立consul cluster。

在consul方案中,每个提供服务的节点上都要部署和运行consul的agent,所有运行consul agent节点的集合构成consul cluster。

consul agent有两种运行模式:server和client。这里的server和client只是consul集群层面的区分,与搭建在cluster之上的应用服务无关。

以server模式运行的consul agent节点用于维护consul集群的状态,

官方建议每个consul cluster至少有3个或以上的运行在server mode的agent,client节点不限。

我们这里以安装三个节点为例,环境配置如下

192.168.40.139,192.168.40.155,192.168.40.156 以server模式运行

192.168.40.157以client模式运行

启动:

1.在192.168.40.139启动(server 名为web1)

# ./consul agent -server -bootstrap -bind=0.0.0.0 -client=192.168.40.139 -data-dir=data -ui -node=192.168.40.139

#./consul agent -server -bootstrap -data-dir /tmp/consul-node=web1

2.在192.168.40.155上启动(server 名为web2)

# ./consul agent -server -bootstrap -bind=0.0.0.0 -client=192.168.40.155 -data-dir=data -node=192.168.40.155 -join=192.168.40.139

#./consul agent -server -bootstrap -data-dir /tmp/consul-node=web2

3.在192.168.40.156上启动(server名为web3)

# ./consul agent -server -bootstrap -bind=0.0.0.0 -client=192.168.40.156 -data-dir=data -node=192.168.40.156 -join=192.168.40.139

#./consul agent -server -bootstrap -data-dir /tmp/consul-node=web3

一开始学习consul, 我们需要让consul 运行起来。consul server推荐至少在3~5个之间,推荐的方法是一开始启动其中一台server,并且配置到bootstrap的模式,该模式node可以指定自己作为leader,而不用进行选举。然后再依次启动其他server,配置为非bootstrap的模式。最后把第一个serverbootstrap模式停止,重新以非bootstrap模式启动,这样server之间就可以自动选举leader。

web1:

# ./ consul agent -server -bootstrap -data-dir /tmp/consul-node=web1

web2、web3:用以下命令启动consul,不需要带bootstrap 选项:

# ./consul agent -server -data-dir /tmp/consul-node=web2

# ./consul agent -server -data-dir /tmp/consul -node=web3

PS:三台server都启动之后,会发现web1和web2在控制台也会有消息更新,提示NO cluster leader,说明无法选举leader,分别查看各自的集群信息时,也是无法互相查看的。

web2、web3需要加入到web的集群中:

# ./consul join 192.168.40.155

# ./consul join 192.168.40.156

当三台server都加入到集群,我们需要配置这三台机子为同等的server,并且让它们自己选择leader,这时可以停止第一台(web)的consul,然后运行如下命令:

# ./consul agent -server -data-dir /tmp/consul-node=web1

PS:此时,我们在每台机子上输入consul info,我们会发现此时的leader是web2;我们并没有指定,是集群自己选择的:

这时,我们模拟异常或者服务器退出,将web2关闭,这时我们再次输入consul info会发现,web1和web3自动选举了web1作为leader:

4.最后,将client机器连入集群,就是一个小型的完整集群了。

在192.168.40.157上启动( client )

# ./consul agent  -bind=0.0.0.0 -client=192.168.40.157 -data-dir=data -node=192.168.40.157 -join=192.168.40.139 -ui

全部节点启动完之后

访问http://192.168.40.157:8500/  即可查看consul集群的管理页面

查看集群状态:

# ./consul members

022ce23cc5056603d3031ecd74671640.png

关闭节点

consul leave -rpc-addr=192.168.40.139:8400

输入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



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有