consul集群部署-linux

目录

一.前言

二.Consul单机部署

三.Consul集群部署

四.克隆虚拟机方式添加client


一.前言

  1. Consul架构

    consul是分布式、高可用的系统,下图是单数据中心的部署架构

  2. Consul特性

  • 服务发现:解决在分布式环境中,如何找到可用的服务地址的问题,支持通过DNS和HTTP查询服务地址。
  • 健康检查:定时监控服务是否正常,对于异常的服务会主动下线
  • 键值存储:配置中心解决方案,是一种key/value存储结构,区别就是key是以目录树结构形式组织的,可以用来存储系统配置信息
  • 多数据中心:支持多数据中心部署

二.Consul单机部署

  1.安装Consul,本人比较喜欢用systemctl命令所有用官网的方式

yum install -y yum-utils
yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
yum -y install consul

  2.查看Consul是否安装成功

consul version

  3.创建数据文件夹,修改权限

mkdir /usr/local/consul

cd /usr/local/consul

chmod 777 /usr/local/consul

  4.配置Consul

    vim /etc/consul.d/consul.hcl

# 数据目录
data_dir = "//usr/local/consul"


# 指定客户端访问的IP,0.0.0.0不限制客户端IP
client_addr = "0.0.0.0"


# 开启UI
ui_config{
  enabled = true
}


# Agent以服务端模式启动(注册中心)
server = true


# 监听所有地址,如果纯在多个网卡必须写死ip,否则可以写0.0.0.0
bind_addr = "0.0.0.0"


# 部署1个server节点
bootstrap_expect=1

  5.启动Consul 

systemctl start consul

netstat -lntup

# 排查错误日志

journalctl -u consul

#删除日志 

rm /run/log/journal/* -rf

systemctl restart systemd-journald

systemctl kill --kill-who=main --signal=SIGUSR2 systemd-journald.service

  6.访问Consul

     http://ip:8500

  7.基本命令

#查询集群节点

consul members

#重新加载配置文件

consul reload

#优雅关闭节点

consul leave

#查询所有注册的服务

consul catalog services

#加入集群

consul join 192.168.4.130

#退出集群

consul leave

三.Consul集群部署

  1.集群部署环境准备

序号 IP地址操作系统主机名
1192.168.4.131CentOS 7host-consul1
2192.168.4.132CentOS 7host-consul2
3192.168.4.133CentOS 7host-consul3
4192.168.4.134CentOS 7host-consul4

 #查看集群状态

consul operator raft list-peers

#退出集群

consul operator raft remove-peer -id=192.168.10.16:8500

#查看members状态

consul members

  2.主机名配置(所有节点执行)

[root@localhost ~]# hostnamectl set-hostname host-consul1

[root@localhost ~]# hostnamectl set-hostname host-consul2

[root@localhost ~]# hostnamectl set-hostname host-consul3

  3.安装Consul(所有节点执行)

yum install -y yum-utils
yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
yum -y install consul

  4.查看Consul是否安装成功(所有节点执行)

consul version

  5.配置Consul(所有server节点执行)

    vi /etc/consul.d/consul.hcl

#数据中心名称
datacenter = "consul-cluster"

#数据目录
data_dir = "/uer/local/consul"

#指定客户端访问的IP,0.0.0.0不限制客户端IP
client_addr = "0.0.0.0"

#开启UI
ui_config{
  enabled = true
}

# Agent以服务端模式启动(注册中心)
server = true

#监听所有地址
bind_addr = "0.0.0.0"

#部署3个server节点,主节点是true,两个副节点为false

bootstrap=false
bootstrap_expect=3

  6.启动Consul(所有节点执行)

systemctl start consul

netstat -lntup

  7.指定主节点(所有server节点执行)

consul join 192.168.4.131

  8.如果想离线安装,文件就得手写了

    1) 启动服务文件位置:/usr/lib/systemd/system/consul.service

[Unit]
Description="HashiCorp Consul - A service mesh solution"
Documentation=https://www.consul.io/
Requires=network-online.target
After=network-online.target
ConditionFileNotEmpty=/etc/consul.d/consul.hcl

[Service]
EnvironmentFile=-/etc/consul.d/consul.env
User=consul
Group=consul
ExecStart=/usr/bin/consul agent -config-dir=/etc/consul.d/
ExecReload=/bin/kill --signal HUP $MAINPID
KillMode=process
KillSignal=SIGTERM
Restart=on-failure
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

    2) 单体配置文件: /etc/consul.d/consul.hcl

data_dir = "/usr/local/consul"

client_addr = "0.0.0.0"

ui_config{
  enabled = true
}

server = true
bind_addr = "0.0.0.0"

bootstrap_expect=1

四.克隆虚拟机方式添加client

  1.虚拟机的快照和克隆就不说了,这几主要说要修改的内容

    1) ip, mac

      可以通过nmtui,也可以通过修改ifcfg-ens33

     vi /etc/sysconfig/network-scripts/ifcfg-ens33

IPADDR=192.168.4.134

MACADDR=00:50:56:28:29:AB

    2).hostname:可以通过nmtui,

        也可通过hostnamectl set-hostname host-consul1

    3).uuid

       a.查看 cat /sys/class/net/ens33/address

       b.创建id

uuidgen

     c.vi /etc/sysconfig/network-scripts/ifcfg-ens33

UUID="ab42ff8b-93bf-4958-8858-1318f0f20ae3"

2.更改consol的node-id

    1) 创建id

uuidgen

    2) 切换到数据路径,替换新的uuid

cd /usr/local/consul
vi node-id
reboot

3.Client端配置文件内容:

#datacenter = "my-dc-1"
node_name = "consul-client"
client_addr = "0.0.0.0"
bind_addr = "0.0.0.0"
data_dir = "/usr/local/consul"
enable_script_checks = true
enable_syslog = true
leave_on_terminate = true
log_level = "INFO"
rejoin_after_leave = true
ui_config{
  enabled = true
}
retry_join = ["192.168.4.131", "192.168.4.132", "192.168.4.133"]
start_join = ["192.168.4.131", "192.168.4.132", "192.168.4.133"]

4.由于之前的快照是已经加了集群的consol节点,这里要脱离一下,停止后仅启动单节点

    1) 脱离:consul leave

    2) 改node-id,否则会提示重复,consul数据目录下 /usr/local/consul/raft/ 下, 添加 peers.json ,  

       内容如下:

[
  {
    "id": "1cfaa57e-0676-3008-2423-55eeb7abfc72",
    "address": "10.1.0.1:8300",
    "non_voter": false
  }
]

    3) 内容格式可参考同目录的 peer.info , 其中 id 通过查看 data/node-id 获得,

    4) address 为本机内网通信地址,  基本不用改

    5) non_voter 为是否不参与投票

    6) 配置在初次启动完成后, 可以不再需要,重启后会自动删除

 5.启动:systemctl start consul

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wang_peng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值