搭建环境:linux + centos 7 + consul 1.8.6
一、在三台linux主机上分别上传并解压consul安装包
下载地址:https://www.consul.io/downloads
consul_1.8.6_linux_amd64.zip 为安装包,使用unzip consul_1.8.6_linux_amd64.zip 命令进行解压,consul 为解压后的文件。
192.168.17.128主机:
192.168.17.130 主机:
192.168.17.131 主机:
二、以server 命令参数方式分别启动三台consul server节点(这里需要主机linux主机的防火墙问题,本测试直接关闭防火墙)
192.168.17.128主机:./consul agent -server -bootstrap-expect 2 -data-dir /etc/consul.d -node=server-1 -bind=192.168.17.128 -datacenter=wuhan -ui -client=0.0.0.0 &
192.168.17.130主机:./consul agent -server -bootstrap-expect 2 -data-dir /etc/consul.d -node=server-2 -bind=192.168.17.130 -datacenter=wuhan -ui -client=0.0.0.0 &
192.168.17.131主机:./consul agent -server -bootstrap-expect 2 -data-dir /etc/consul.d -node=server-3 -bind=192.168.17.131 -datacenter=wuhan -ui -client=0.0.0.0 &
并在 130、131 主机上执行命令 ./consul join 192.168.17.128 ,将该两台节点和128主机组成集群服务。
组成集群后可以使用命令 consul members 查集群成员信息
三、启动本地consul client 服务
本测试client端在 win7环境下搭建 ,windows 执行文件 下载地址:https://www.consul.io/downloads
使用命令进行启动:consul agent -client=0.0.0.0 -data-dir /etc/consul.d -datacenter=wuhan -bind=192.168.17.1 -node=client-1
这里要注意这个本地ip 我是在我电脑上启动的服务,server端都是在虚拟机上启动的服务,这里不能用本地的ip,需要用linux机器的 ip最后一位为1。不然本地客户端无法链接到server端的8300端口。
将该client加入到集群当中
四、通过控制台页面查看集群状态,访问地址:http://192.168.17.128:8500/ui/
访问其他两台consul server 节点控制台,同样展示三台server 节点和一台 client代理节点
五、将上一章节中的消费者和生产者工程接入到集群的consul环境中测试是否可用
下面测试用例工程全部代码为《SpringCloud Consul注册中心介绍及配置使用》文章中搭建的工程。
生产者application.yml 信息改造:
server:
port: 9001
spring:
application:
name: service-product
#consul 信息配置
cloud:
consul:
host: 172.18.58.92 #consul注册中心的ip地址
port: 8500 #consul注册中心端口
discovery:
register: true #是否需要注册
instance-id: ${spring.application.name}-1 #实例id(唯一标志)
service-name: ${spring.application.name} #服务的名称
prefer-ip-address: true #开启ip地址注册
ip-address: ${spring.cloud.client.ip-address} #当前服务的请求ip
port: ${server.port} #服务的请求端口
消费者application.yml信息:
server:
port: 8001
spring:
application:
name: order-service
cloud:
#consul 注册中心信息配置
consul:
host: 172.18.58.92 #consul注册中心的ip地址
port: 8500 #consul注册中心端口
discovery:
register: true #是否需要注册
instance-id: ${spring.application.name}-1 #实例id(唯一标志)
service-name: ${spring.application.name} #服务的名称
prefer-ip-address: true #开启ip地址注册
ip-address: ${spring.cloud.client.ip-address} #当前服务的请求ip
port: ${server.port} #服务的请求端口
分别启动两个工程后,通过consul server 控制台页面看下注册情况,通过不同的节点的页面可以看到两个服务都注册到了注册中心来。
访问消费者工程的调用接口,可以看到两个节点之间在consul集群下仍可以正常使用。当我们停掉一台server 节点在测试调用 仍可以正常访问。
杀掉一个server
访问服务不受影响