consul集群配置
由于环境受限,在一台机器上启动多个consul server
1 server1.json
{
"datacenter": "dc1",
"data_dir": "./data1",
"log_level": "INFO",
"server": true,
"node_name": "server1",
"ui": true,
"bind_addr": "127.0.0.1",
"client_addr": "127.0.0.1",
"advertise_addr": "127.0.0.1",
"bootstrap_expect": 2,
"ports":{
"http": 8500,
"dns": 8600,
"server": 8300,
"serf_lan": 8301,
"serf_wan": 8302
}
}
启动命令:
consul agent -config-file=./server1.json
2 server2.json
{
"datacenter": "dc1",
"data_dir": "./data2",
"log_level": "INFO",
"server": true,
"node_name": "server2",
"ui": true,
"bind_addr": "127.0.0.1",
"client_addr": "127.0.0.1",
"advertise_addr": "127.0.0.1",
"bootstrap_expect": 2,
"ports":{
"http": 8510,
"dns": 8610,
"server": 8310,
"serf_lan": 8311,
"serf_wan": 8312
}
}
启动命令:
consul agent -config-file=./server2.json -retry-join=127.0.0.1:8301
3 server3.json
{
"datacenter": "dc1",
"data_dir": "./data3",
"log_level": "INFO",
"server": true,
"node_name": "server3",
"ui": true,
"bind_addr": "127.0.0.1",
"client_addr": "127.0.0.1",
"advertise_addr": "127.0.0.1",
"bootstrap_expect": 2,
"ports":{
"http": 8520,
"dns": 8620,
"server": 8320,
"serf_lan": 8321,
"serf_wan": 8322
}
}
启动命令:
consul agent -config-file=./server3.json -retry-join=127.0.0.1:8301
4 打开浏览器测试
http://127.0.0.1:8500/ui
http://127.0.0.1:8510/ui
http://127.0.0.1:8520/ui
5 配置说明
“bootstrap_expect”: 2 表示至少启动两个节点,才会完成集群构建,否则不予提供注册服务
6 consul高可用配置 application.properties
springboot的application.properties增加下面配置
spring.cloud.consul.discovery.enabled=true
#设置注册的服务实例名称,避免实例名冲突
spring.cloud.consul.discovery.instance-id=${spring.application.name}:${spring.cloud.client.ip-address}:${server.port}
#采用ip的方式注册,并指定使用的网卡
spring.cloud.consul.discovery.prefer-ip-address=true
spring.cloud.inetutils.preferred-networks=192.168.31.
启动springboot各producer和consumer方,停止某个consul服务,仍然不影响FeignClient服务调用