本文介绍使用docker方式安装consul和传统方式部署: 一、基于docker安装部署consul: 1、直接docker run运行consul,下载consul1.4.2镜像


#docker run -d --name consul consul:1.4.2


2、将consul镜像内的/consul目录拷贝至本地保存,数据信息持久化


#export CONSULE_CONTANER_ID=docker ps -aq #docker cp ${containerId}:/consul /software/consul #docker rm -f consul


3、启动consul服务


docker run -d --name=consul -v /software/consul:/consul --net=host consul:1.4.2 agent --bind=192.168.8.129 --server=true --node=consul --bootstrap-expect=1 --client=0.0.0.0 -ui


4、配置开户8500防火墙端口,浏览器即可访问了 #firewall-cmd --zone=public --add-port=8500/tcp --permanent #firewall-cmd --reload http:192.168.8.129:8500 二、传统方式安装部署 1、安装依赖,下载安装包


#yum -y install wget unzip zip #wget -c https://releases.hashicorp.com/consul/1.4.2/consul_1.4.2_linux_amd64.zip #unzip consul_1.4.2_linux_amd64.zip -d /usr/bin


2、创建配置文件目录


#mkaid /software/consul/logs #mkdir /etc/consul.d/ #vi /etc/consul.d/basic.json { "ports": {
"http": 8500 , "dns": 8600, "grpc": 8400, "serf_lan": 8301, "serf_wan": 8302, "server": 8300 } }


备注:consul的默认使用的端口有8500 8600 8400 8301 8302 8300 3、配置consul系统服务


#vi /etc/init.d/consul #!/bin/bash #chkconfig: 2345 89 10 #description: consul Start Stop Restart #processname: consul EXCMD=consul StartDir=/usr/bin/${EXCMD} pid=ps -ef|grep -v grep| grep consul |awk '{print $2}' case $1 in start) nohup ${StartDir} agent -server -ui -advertise=192.168.8.129 -bind=192.168.8.129 -client=0.0.0.0 -data-dir /software/consul/data -bootstrap-expect 1 -log-file /software/consul/logs/ -config-dir /etc/consul.d > /dev/null 2>&1 & ;; stop) kill -9 $pid ;; restart) kill -9 $pid nohup ${StartDir} agent -server -ui -advertise=192.168.8.129 -bind=192.168.8.129 -client=0.0.0.0 -data-dir /software/consul/data -bootstrap-expect 1 -log-file /software/consul/logs/ -config-dir /etc/consul.d > /dev/null 2>&1 & ;; esac exit 0


4、对consul系统服务授权添加自启动


#chmod +x /etc/init.d/consul #chkconfig --add consul #chkconfig --level 2345 consul on #chkconfig --list consul


5、防火墙端口开放 #firewall-cmd --permanent --zone=public --add-port=8500/tcp #firewall-cmd --reload #firewall-cmd --zone=public --add-port=8500/tcp --permanent #firewall-cmd --reload http:192.168.8.129:8500 6、Consul启动参数说明: Consul的启动可以添加如下参数,有些参数是相冲突的,不能同时使用


-advertise:通知展现地址用来改变我们给集群中的其他节点展现的地址,一般情况下-bind地址就是展现地址 -bootstrap:用来控制一个server是否在bootstrap模式,在一个datacenter中只能有一个server处于bootstrap模式,当一个server处于bootstrap模式时,可以自己选举为raft leader。 -bootstrap-expect:在一个datacenter中期望提供的server节点数目,当该值提供的时候,consul一直等到达到指定sever数目的时候才会引导整个集群,该标记不能和bootstrap公用 -bind:该地址用来在集群内部的通讯,集群内的所有节点到地址都必须是可达的,默认是0.0.0.0 -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。 -protocol:consul使用的协议版本 -rejoin:使consul忽略先前的离开,在再次启动后仍旧尝试加入集群中。 -syslog:开启系统日志功能,只在linux/osx上生效 -pid-file:提供一个路径来存放pid文件,可以使用该文件进行SIGINT/SIGHUP(关闭/更新)agent