wget https://releases.hashicorp.com/consul/1.4.4/consul_1.4.4_linux_amd64.zip
unzip consul_1.4.4_linux_amd64.zip
sudo mv consul /usr/local/bin/
#参数解释:
-server : 将agent以server模式启动
-bootstrap :直接将自己设为leader
-ui-dir : UI服务的路径
-data-dir : 数据存储路径
-node : 节点名字
-client : consul服务侦听地址,这个地址提供HTTP,DNS,RPC等服务,默认是127.0.0.0,所以不对外服务,如果要对外提供服务,需要改为0.0.0.0
-bind :在集群内部的通讯地址,需要保证是否可达。
-rejoin :表示退出当前集群后,下次启动仍然加入该集群。
2.1启动leader节点
consul agent -server -bootstrap \
-ui-dir=/etc/consul_ui \
-data-dir /tmp/consul \
-node master1 \
-client=0.0.0.0 \
-rejoin
2.2启动follower节点
consul agent -server -data-dir /tmp/consul -node master2 -bootstrap-expect 2 -rejoin
2.3启动follower节点
consul agent -server -data-dir /tmp/consul -node master3 -bootstrap-expect 2 -rejoin
2.4手动将节点添加到集群
consul join 192.168.108.119 192.168.108.37
#不建议开机就建立集群,这是因为其他节点未开启,会报错!
新建配置文件
sudo vim /opt/consul/conf/server.json
在文件夹中添加以下配置
{
"datacenter": "dc1",
"data_dir": "/opt/consul/data",
"log_level": "INFO",
"node_name": "master1",
"server": true,
"acl_enforce_version_8":false,
"bootstrap_expect": 1,
"client_addr": "0.0.0.0",
"advertise_addr": "192.168.11.55",
"bind_addr": "127.0.0.1",
"ui_dir": "/etc/consul_ui",
"retry_interval": "30s",
"enable_debug": false,
"enable_syslog": true,
"rejoin_after_leave": true,
"enable_syslog": true,
"syslog_facility": "local5"
}
#可以添加以下参数设置开机时自动组件集群,但不建议这么做,因为集群的ip变了的话,可能无法启动,需要每次检查修改。建议启动后再使用consul join 命令手动将节点加入集群。
"start_join": ["192.168.108.117","192.168.108.119","192.168.108.37"],
"retry_join": ["192.168.108.117","192.168.108.119","192.168.108.37"]
#启动当前节点,并设为leader
sudo consul agent -server -bootstrap -config-dir /opt/consul/conf/ \
-pid-file=/opt/consul/run/consul.pid \
-disable-host-node-id
#说明:
1)bootstrap_expect=1参数和-bootstrap命令参数无法同时使用。
2)注意这里的advertise_addr并不能设置为127.0.0.1,这样其他节点无法加入,因为它会直接广播此地址。
#在文件夹下新建配置文件:
请分别在其他节点上也建立配置文件,方法同上,注意将其中的node_name,advertise_addr(
当前主机ip),bind_addr(当前主机ip)修改,不要重复。
#设置服务节点(不设为leader):
sudo consul agent -server -config-dir /opt/consul/conf/ \
-pid-file=/opt/consul/run/consul.pid \
-disable-host-node-id
#说明:
client_addr需要设置为:0.0.0.0,否则其他主机无法直接访问8500端口,当然你也可以设置为特定ip,生产环境下并不建议全开放ip。
4.1编辑service启动文件
#新建文件
sudo vim /etc/systemd/system/consul.service
#添加以下配置
[Unit]
Description=Consul service discovery agent
Requires=network-online.target
After=network-online.target
[Service]
Environment=GOMAXPROCS=2
Restart=on-failure
ExecStartPre=[ -f "/opt/consul/run/consul.pid" ] && /usr/bin/rm -f /opt/consul/run/consul.pid
ExecStart=/usr/local/bin/consul agent -config-file /opt/consul/conf/server.json
ExecReload=/bin/kill -HUP $MAINPID
KillSignal=SIGTERM
TimeoutStopSec=5
[Install]
WantedBy=multi-user.target
#注意:以上指定的-config-file路径的文件在之前已经编辑好,如果没有编辑好,请提前编辑好,参加3配置文件启动。
4.2启动服务
sudo systemctl start consul
4.3查看服务是否启动成功
sudo service consul status
5.1 创建日志存放目录并赋权
sudo mkdir -p /var/log/consul/
chown -R syslog.syslog /var/log/consul/
5.2.1 创建系统配置文件
sudo vim /etc/rsyslog.d/consul.conf
#添加以下内容
local5.* /var/log/consul/consul.log
5.2.2 修改系统配置文件
sudo vim /etc/rsyslog.d/50-default.conf
5.2.3 重启rsyslog让配置生效
sudo systemctl restart rsyslog
5.2.4 创建日志轮询规则
sudo vim /etc/logrotate.d/consul
#添加以下内容
/var/log/consul/*log {
missingok
compress
notifempty
daily
rotate 5
create 0600 root root
}
5.2.5 注意在consul启动项中配置syslog_enable=ture或者-syslog
5.2.6 确认syslog日志生效
sudo tail -f /var/log/consul/consul.log
6.1能访问5600端口但没法显示正确数据
错误原因:集群中没有leader或者通讯存在问题。
6.2无法访问5600端口
错误原因:没将将-client设为0.0.0.0
6.3 无法使用sudo systemctl start consul启动服务
启动文件有问题,如果没有,重启试试。
6.4 [/etc/systemd/system/consul.service:9] Executable path is not absolute, ignoring: [ -f "/opt/consul/run/consul.pid" ] && /usr/bin/rm -f /opt/
解决办法:
可能还是配置文件问题仔细检查拼写是不是有问题,如果确定没问题,那就是非语法错误,而是配置导致启动异常。
可以用consul agent -config-dir /opt/consul/conf/,如果配置文件有问题,则会报错。
consul agent -config-dir /opt/consul/conf/
6.5 无法使用consul join命令添加节点
该地址没有被广播,在配置文件中的advertise_addr添加此地址。
1)运维之美