consul入门记

 

1.consul的安装

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/

2.使用命令行参数启动

#参数解释:

-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

#不建议开机就建立集群,这是因为其他节点未开启,会报错!

3.使用配置文件启动

新建配置文件

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.配置consul为后台启动

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.为consul配置日志

5.1 创建日志存放目录并赋权

sudo mkdir -p /var/log/consul/
chown -R syslog.syslog /var/log/consul/

5.2 启用系统日志

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.常见问题

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添加此地址。

7.参考资料

1)运维之美

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值