1. 环境准备
10.16.4.59 consul-server-01
10.16.4.60 consul-server-02
10.16.4.61 consul-server-03
2. 下载文件和创建目录(3台机器都执行)
sudo su - bumblebee
mkdir -p /usr/local/consul/bin /usr/local/consul/conf /data/log/consul /usr/local/consul/conf/server /data/consul /usr/local/tools
cd /usr/local/tools
wget https://releases.hashicorp.com/consul/1.2.1/consul_1.2.1_linux_amd64.zip
unzip consul_1.2.1_linux_amd64.zip
mv /usr/local/tools/consul /usr/local/consul/bin/
3. 配置consul-server.conf(3台机器都执行)
用的supervise管理程序的启动
10.16.4.59配置
注意10.164.59多配置了一个 -client=10.16.4.59,是为了访问consul server的管理页面,配置一个就行
cat /usr/local/supervisor/conf/conf.d/consul-server.conf
[program:consul-server]
directory=/usr/local/consul
command=/usr/local/consul/bin/consul agent -server -bootstrap-expect 3 -data-dir /data/consul -bind 0.0.0.0 -node 10.16.4.59 -datacenter test -ui -client=10.16.4.59
user=bumblebee
stopsignal=TERM
stopasgroup=true
autorestart=true
startretries = 3
redirect_stderr=true
stdout_logfile=/data/log/supervisor/consul.log
stdout_logfile_maxbytes=500MB
stdout_logfile_backups=10
loglevel=info
===========================
10.16.4.60
cat /usr/local/supervisor/conf/conf.d/consul-server.conf
[program:consul-server]
directory=/usr/local/consul
command=/usr/local/consul/bin/consul agent -server -bootstrap-expect 3 -data-dir /data/consul -bind 0.0.0.0 -node 10.16.4.60 -datacenter test -ui
user=bumblebee
stopsignal=TERM
stopasgroup=true
autorestart=true
startretries = 3
redirect_stderr=true
stdout_logfile=/data/log/supervisor/consul.log
stdout_logfile_maxbytes=500MB
stdout_logfile_backups=10
loglevel=info
==========================
10.16.4.61
cat /usr/local/supervisor/conf/conf.d/consul-server.conf
[program:consul-server]
directory=/usr/local/consul
command=/usr/local/consul/bin/consul agent -server -bootstrap-expect 3 -data-dir /data/consul -bind 0.0.0.0 -node 10.16.4.61 -datacenter test -ui
user=bumblebee
stopsignal=TERM
stopasgroup=true
autorestart=true
startretries = 3
redirect_stderr=true
stdout_logfile=/data/log/supervisor/consul.log
stdout_logfile_maxbytes=500MB
stdout_logfile_backups=10
loglevel=info
参数说明:
- 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-server(3台机器都执行)
superctl update
5. 配置3台机器组成consul集群
随便指定一台机器,然后在剩余2台机器上执行 consul join IP
consul集群:当一个consul agent启动后,它不知道任何其他节点,要学习到集群中的其他节点,agent必须加入一个已经存在的集群(cluster)。要加入这样的集群,它只需要知道这个集群中的一个节点即可。它加入后,将会和这个member gossip(交谈)并迅速发现集群中的其他节点。一个consul agent可以加入任何类型的其他agent,而不只是那些运行于server mode的agent。
分别登录第2台和第3台服务器上执行如下命令,让consul加入集群
/usr/local/consul/bin/consul join 10.16.4.59
6. 访问consul管理页面
http://10.16.4.59:8050 #建议这里用nginx反向代理下,加个nginx认证