consul搭建服务注册和
docker搭建consul单集群
1.拉取镜像
docker pull consul2.在/home/docker/comsul 创建映射文件夹 consulserver1data consulserver1conf consulserver2data consulserver2conf consulserver3conf consulserver3data consulclientdata consulclientconf 3.在 consulserver1conf 中添加配置文件
{
    "datacenter": "DC1",
    "data_dir": "/consul/data",
    "log_level": "INFO",
    "node_name": "consulserver1",
    "server": true,
    "bootstrap_expect": 1,
    "retry_join": ["172.18.0.6","172.18.0.7","172.18.0.8"],
    "retry_interval": "3s",
    "enable_debug": false,
    "rejoin_after_leave": true,
    "enable_syslog": false
}
  4.在 consulserver2conf 中添加配置文件 
{
    "datacenter": "DC1",
    "data_dir": "/consul/data",
    "log_level": "INFO",
    "node_name": "consulserver2",
    "server": true,
    "bootstrap_expect": 2,
    "retry_join": ["172.18.0.6","172.18.0.7","172.18.0.8"],
    "retry_interval": "3s",
    "enable_debug": false,
    "rejoin_after_leave": true,
    "enable_syslog": false
}
 
  5.在 consulserver3conf 中添加配置文件 
{
    "datacenter": "DC1",
    "data_dir": "/consul/data",
    "log_level": "INFO",
    "node_name": "consulserver3",
    "server": true,
    "bootstrap_expect": 3,
    "retry_join": ["172.18.0.6","172.18.0.7","172.18.0.8"],
    "retry_interval": "3s",
    "enable_debug": false,
    "rejoin_after_leave": true,
    "enable_syslog": false
}
  6.在 consulclientconf中添加配置文件 
{ "datacenter": "DC1", "data_dir": "/consul/data", "log_level": "INFO", "node_name": "consulclient", "server": false, "ui": true, "bootstrap_expect": 0, "bind_addr": "172.17.16.4", "client_addr": "0.0.0.0", "retry_join": ["172.18.0.6","172.18.0.7","172.18.0.8"], "retry_interval": "3s", "enable_debug": false, "rejoin_after_leave": true, "enable_syslog": false }7.创建服务容器
docker run -d --name consulserver1 --restart=always -v /home/docker/consul/consulserver1data:/consul/data -v /home/docker/consul/consulserver1conf:/consul/config consul agent -data-dir /consul/data -config-dir /consul/config docker run -d --name consulserver2 --restart=always -v /home/docker/consul/consulserver2data:/consul/data -v /home/docker/consul/consulserver2conf:/consul/config consul agent -data-dir /consul/data -config-dir /consul/config docker run -d --name consulserver3 --restart=always -v /home/docker/consul/consulserver3data:/consul/data -v /home/docker/consul/consulserver3conf:/consul/config consul agent -data-dir /consul/data -config-dir /consul/config docker run -d --net=host --name consul-client --restart=always -p 8400:8400 -p 8500:8500 -p 8600:53/udp -v /home/docker/consul/consulclientdata:/consul/data -v /home/docker/consul/consulclientconf:/consul/config consul agent -data-dir /consul/data -config-dir /consul/config8.查看consul服务IP地址
docker inspect -f '{{.NetworkSettings.IPAddress}}' $(docker ps -q)
  9.修改配置文件的服务器IP地址
  10.重启4个容器
  11.进入服务容器查看节点信息
docker exec -it consulserver1 /bin/sh consul members consul operator raft list-peers
consul在core的使用
1.添加Consul nuget包
2.添加consul服务注册中间件
///public class ConsulOption { ////// consul服务注册中间件 /// public static class ConsulBuilderExtensions { public static IApplicationBuilder UserConsul(this IApplicationBuilder builder, IHostApplicationLifetime lifetime, IConfiguration configuration) { ConsulOption consulOption = new ConsulOption(); configuration.Bind("Consul", consulOption); var consulClient = new ConsulClient(c => { c.Address = new Uri(consulOption.Address); }); var registration = new AgentServiceRegistration() { ID = $"{consulOption.ServiceName}_{consulOption.ServiceIP}_{consulOption.ServicePort}", Name = consulOption.ServiceName, Port = consulOption.ServicePort, Tags = new string[] { "FindFresh" }, Check = new AgentServiceCheck() { DeregisterCriticalServiceAfter = TimeSpan.FromMinutes(1),//失败后多级移除 Interval = TimeSpan.FromSeconds(10),//健康检查时间间隔 HTTP = consulOption.ServiceHealthCheck,//健康检查地址 Timeout = TimeSpan.FromSeconds(10),//检查间隔 }, }; consulClient.Agent.ServiceRegister(registration).Wait();//服务注册 lifetime.ApplicationStopped.Register(() => { consulClient.Agent.ServiceDeregister(registration.ID).Wait(); }); return builder; } }
3.配置json信息
 "Consul": { //Consul配置
    "ServiceName": "FindFreshCmsService",
    "ServiceIP": "111.231.113.223",
    "ServicePort": 8202,
    "ServiceHealthCheck": "http://111.231.113.223:8202/api/system/health",
    "Address": "http://111.231.113.223:8500" //ConsulAddress
  }
4.在Startup的Configure中添加
app.UserConsul(lifetime, Configuration);