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);