本文介绍使用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