服务注册与发现:一起学Consul——之安装与启动

今天开始,本人打算梳理一下微服务的内容,写在这里做个归档,便于日后翻阅,同时也希望能给感兴趣的同学一点点参考(欢迎留言),让我们来一起学吧~~

服务注册与发现是微服务中不可或缺的组件,如果没有的话,需要人工维护各个服务的注册,也无法自动发现服务的上线下线,如果服务多起来的话,会让你疯掉的。服务注册和发现有多种方案:consul 、zookeeper、eureka 、etcd 等,我们先从consul开始吧~~

Consul的主要吸引人的特性是:

服务发现:服务启动后可以自动发现

健康监测:能够实时监测各个服务的状态

健值对存储:用来存储动态配置,提供HTTP接口,可以在任何地方操作。

多数据中心:支持任意数量的数据中心

一、官网方式

  1. 安装:从官网下载二进制安装包,解压后是一个可执行文件,直接将这个文件加到系统path中即可

1.1)解压:tar -zxvf consul_1.4.4_linux_amd64.zip

1.2)移动到/usr/bin中,这样就不用添加到path了,/usr/bin默认在path中:mv consul /usr/bin。当然也可以放在其他地方,然后添加到path中即可(export PATH=$PATH:)

  1. 启动:consul agent -dev

  2. 验证:输入consul,显示如下如说明已经安装完毕
    在这里插入图片描述

  3. 关闭:

4.1) 可以使用Ctrl+C优雅地关闭

4.2) 如果是关闭server模式的consul,可以使用consul leave命令,也会优雅地关闭

4.3) 何为不优雅地关闭?直接杀进程就是不优雅的。这样集群会将这个节点标记为critical,会尝试重连此节点来进行恢复。

二、使用docker部署consul集群

如果是本机测试,没有那么多机器,可以用docker来演示

  1. docker的安装与启动

1.1) yum -y install docker

1.2) service docker start

  1. 拉取consul

2.1) 查找可用的镜像:docker search consul
在这里插入图片描述
2.2) 拉取官网镜像:docker pull consul

2.3) 经测试,不能启动后不能通过nsenter进入容器,版本基本是最新的

2.4) 拉取排第二的镜像:docker pull docker.io/progrium/consul。

     这个镜像启动consul后,是可以进入容器的,亲测可以。但是版本比较旧
  1. 启动consul

3.1) consul 可以有两种模式启动:server模式和client模式

3.2) 启动节点1(server模式)

docker run -d --name node1 -h node1 progrium/consul -server -bootstrap-expect 3

–name:容器的名字

-h:容器的主机名称

-server:这个就是表示这个节点是SERVER模式

-bootstrap-expect:这个就是表示期望提供的SERVER节点数目,数目一达到,它就会被激活,这个节点就会被选为leader

3.3) 查看容器ip

JOIN_IP="$(docker inspect -f ‘{{.NetworkSettings.IPAddress}}’ node1)"
3.4) 启动节点2和3(server模式)

docker run -d --name node2 -h node2 progrium/consul -server -join $JOIN_IP
docker run -d --name node3 -h node3 progrium/consul -server -join $JOIN_IP

-join:这个表示启动的时候,要加入到哪个集群内,这里就是说要加入到节点1的集群。

3.5) 启动节点4(client模式)

docker run -d -p 8400:8400 -p 8500:8500 -p 8600:53/udp --name node4 -h node4 progrium/consul -join $JOIN_IP
不带-server参数,默认就是client模式。

  1. 查看下集群的状态

4.1) 查看所有容器:docker ps -a

4.2) 某些时候需要进入容器进行操作,有很多种方法:使用ssh,docker attach命令或 nsenter工具。docker attach 多个窗口相互阻塞,不适合生产环境。

4.3) 使用nsenter进入docker容器,安装nsenter

curl https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz
tar zxf util-linux-2.24.tar.gz
cd util-linux-2.24
./configure --without-ncurses
make nsenter
cp nsenter /usr/local/bin
4.4) 使用nsenter进入容器node1

nsenter --target docker inspect --format "{{ .State.Pid }}" node1 --mount --uts --ipc --net --pid
4.5) 进入容器后,可以尝试执行以下命令:

node1:/# consul members
node1:/# consul info
curl localhost:8500/v1/catalog/nodes
4.6) 管理页面:http://ip:8500/ui

效果如下图:
在这里插入图片描述

这只是开始,对服务发现组件Consul感兴趣的同学,欢迎关注交流~

欢迎关注微信号:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42090746/article/details/90206653