linux安装consul集群

一、集群规划

consul借助agent来运行,类似elk的logstash agent 或 zabbix监控系统的agent ,每个需要被发现的服务上,通过consul agent client 来收集服务本身的信息,然后向consul agent server汇报, consul server 可以集群部署。

规划一下:

序号   节点ip 节点名称   角色
1  192.168.32.134  server1  server
2  192.168.32.135  server2  server
3  192.168.32.136  server3  server
4  192.168.32.138  client1  client & web ui

这是按正式生产环境来规划的,如果本机开发,有一个方便的dev模式(后面再讲)。 上述表格中,我们打算组建3个server节点的consul server cluster,另外有1个client,模拟客户端以及充当consul的web admin ui(管理界面)。

二、下载安装

目前consul的最高版本为1.2.0,只需要把相应的release压缩包 下载到机器上解压即可。

2.1 wget https://releases.hashicorp.com/consul/1.2.0/consul_1.2.0_linux_amd64.zip 

2.2 unzip consul_1.2.0_linux_amd64.zip

假设都解压到~/consul/bin目录下,解压后会得到1个名为consul的可执行文件

2.3 sudo cp ./consul /usr/local/bin

为了方便,可以将其复制到/usr/local/bin下(本步骤可选,需要root权限)

然后检查下是否安装成功:

➜  ~ consul version

Consul v1.2.0

Protocol 2 spoken by default, understands 2 to 3 (agent will automatically use protocol >2 when speaking to compatible agents)

如果出现版本输出,就表示可以了(4个节点上,每台机器上都重复上述操作,全安装好)

三、启动

3.1 启动server端

基本的命令为:

consul agent -server -bind=192.168.32.134 -client=0.0.0.0 -bootstrap-expect=3 -data-dir=/data/application/consul_data/ -node=server1

看着一大堆参数,其实不复杂

-server 表示是以服务端身份启动

-bind 表示绑定到哪个ip(有些服务器会绑定多块网卡,可以通过bind参数强制指定绑定的ip)

-client 指定客户端访问的ip(consul有丰富的api接口,这里的客户端指浏览器或调用方),0.0.0.0表示不限客户端ip

-bootstrap-expect=3 表示server集群最低节点数为3,低于这个值将工作不正常(注:类似zookeeper一样,通常集群数为奇数,方便选举,consul采用的是raft算法)

-data-dir 表示指定数据的存放目录(该目录必须存在)

-node 表示节点在web ui中显示的名称

启动成功后,终端窗口不要关闭,可以在浏览器里,访问下,类似 http://192.168.32.134:8500/,正常的话,应该会看到一行文字:Consul Agent。

为了防止终端关闭后,consul退出,可以在刚才命令上,加点东西,类似:
nohup xxx  > /dev/null 2>&1 & 

即:

nohup consul agent -server -bind=192.168.32.134 -client=0.0.0.0 -bootstrap-expect=3 -data-dir=/data/application/consul_data/ -node=server1 > /dev/null 2>&1 &

将其转入后台运行。

另外2台节点上,也做类似操作:

1

nohup consul agent -server -bind=192.168.32.135 -client=0.0.0.0 -bootstrap-expect=3 -data-dir=/data/application/consul_data/ -node=server2 > /dev/null 2>&1 &

注意更改bind参数的ip,以及node参数里的节点名称。

1

nohup consul agent -server -bind=192.168.32.136 -client=0.0.0.0 -bootstrap-expect=3 -data-dir=/data/application/consul_data/ -node=server3 > /dev/null 2>&1 &

3.2 启动client端

几乎完全一样,只是把-server 去掉,在192.168.32.138上运行:

1

nohup consul agent -bind=192.168.32.138 -client=0.0.0.0 -data-dir=/data/application/consul_data/ -node=client1  -ui  > /dev/null 2>&1 &

四、组建cluster

现在我们有了3个server node + 1个client node,但是这4个节点都是相互独立的,可以在任一节点上运行:

consul members

可以看到,只有自身节点的信息。

要加自己加入集群,可以运行以下命令(假设:其它3个节点,都加入192.168.32.134)

consul join 192.168.32.134

成功后,会输出:

Successfully joined cluster by contacting 1 nodes.

其它2个节点(指:192.168.32.134之外的节点)上类似上述操作,都加入集群中,完成后,可以再次验证

可以看到4台节点的信息都有了。

tips: 如果反过来,要将1个节点从集群中撤掉,可以在该节点上运行consul leave 即可。

五、web ui

192.168.32.138上,可能有同学注意到了,启动consul时,我们加了一个  -ui 的参数,这代表将启动consul自带的web管理界面,访问 http://192.168.32.138:8500/ui

可以看到各节点的信息。

六、dev开发者模式

前面这一阵折腾需要好几台机器,本机调试开发时不太方便,为此consul体贴的提供了dev模式,使用方式极为简单

1

consul agent -dev

开发模式,自带了web ui,直接http://localhost:8500/ 即可,非常方便。  

猜你喜欢

转载自blog.csdn.net/zsj777/article/details/85211377