要想利用consul提供的服务实现服务的注册与发现,我们需要建立consul cluster。
在consul方案中,每个提供服务的节点上都要部署和运行consul的agent,所有运行consul agent节点的集合构成consul cluster。
consul agent有两种运行模式:server和client。这里的server和client只是consul集群层面的区分,与搭建在cluster之上的应用服务无关。
以server模式运行的consul agent节点用于维护consul集群的状态,
官方建议每个consul cluster至少有3个或以上的运行在server mode的agent,client节点不限。
我们这里以安装三个节点为例,环境配置如下
Centos 下:
两台主机:s1:192.168.204.4 s2:192.168.204.5
准备工作
分别下载consul的webui包和consul包。
下载:
wget https://releases.hashicorp.com/consul/0.7.5/consul_0.7.5_web_ui.zip
wget https://releases.hashicorp.com/consul/0.7.5/consul_0.7.5_linux_amd64.zip
下载到目录usr\local下。在usr\local\bin下创建文件夹webui,
在usr\local\bin下进行操作
解压:unzip consul_0.7.5_web_ui.zip 并把解压出来的文件移到webui中。
1. mv index.html webui 2. mvstatic webui
解压: unzipconsul_0.7.5_linux_amd64.zip
firewall-cmd --query-port=8300/tcp 查询端口是开启firewall-cmd --add-port=8300/tcp 打开端口
firewall-cmd --add-port=8500/tcp
firewall-cmd --add-port=8301/tcp
启动consul
1. S1上:
co nsulagent -server -bootstrap-expect 2 -data-dir data -node=n1 -bind=192.168.204.4-ui-dir=webui -dc=dc1
2. S2上:
consul agent -server -bootstrap-expect 2 -data-dir data -node=n2 -bind=192.168.204.5-ui-dir=webui ./dist -dc=dc1
3. S2上:
consul join 192.168.204.5
4. 访问端口
如果遇到不能访问的情况,第一检测8500端口是否开了。要是还是不行的话,就重新对webui重新解压,重新开启服务。
Windows下:
一台主机,一台客户机
S1:10.114.73.24 S2:10.114.72.25
1. 下载consul包
https://releases.hashicorp.com/consul/0.7.5/consul_0.7.5_windows_amd64.zip
2. 在s1上解压到一个目录 如:E:\SpringCloud\consul,s2上解压到:c:\consul
3. 在s1上的E:\SpringCloud\consul目录下建立文件夹data ,在s2上的c:\consul下建立文件夹data
4. 在s1上执行consul agent -server -bootstrap -bind=10.114.73.24 -client=10.114.73.24-data-dir=data -ui -node=10.114.73.24
5. 在s2上执行consul agent -bind=0.0.0.0 -client=10.114.72.25 -data-dir=data -node=10.114.72.25 -join=10.114.73.24
6. 在s1打开浏览器访问:http://localhost:8500
Springcloud consul 与consul集成
1.准备:主机:10.114.73.24以agent方式启动 consul
2.eclipse中新建springboot工程,pom.xml中引入:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
3.主文件:
package com.example;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@EnableDiscoveryClient
@RestController
public class ConsulServerAApplication {
@RequestMapping("/home")
public Object home() {
System.out.println("1111111111111");
return"OK11";
}
public static void main(String[] args) {
SpringApplication.run(ConsulServerAApplication.class,args);
}
}
4.新建application.yml文件
内容为:
spring:
cloud:
consul:
host: 10.114.72.25
port: 8500
discovery:
enabled: true
instance-id: Users
service-name: getUsers
hostname: 10.114.73.24
application:
name: zwc-service1
5. 最后工程文件类似于:
6. 启动 alt+shift+x,b
7. 访问http://10.114.73.24:8500/v1/catalog/service/getUsers http://10.114.73.24:8080/home