zoukankan      html  css  js  c++  java
  • consul搭建服务注册和

    docker搭建consul单集群

      1.拉取镜像

    docker pull  consul  
      2.在/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/config
      8.查看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服务注册中间件

     /// <summary>
        /// consul服务注册中间件
        /// </summary>
        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;
            }
        }
     public class ConsulOption
        {
            /// <summary>
            /// consul地址
            /// </summary>
            public string Address { get; set; }
            /// <summary>
            /// 服务名称
            /// </summary>
            public string ServiceName { get; set; }
            /// <summary>
            /// 服务IP
            /// </summary>
            public string ServiceIP { get; set; }
            /// <summary>
            /// 端口
            /// </summary>
            public int ServicePort { get; set; }
            /// <summary>
            /// 健康检查地址
            /// </summary>
            public string ServiceHealthCheck { get; set; }
        }

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

      

  • 相关阅读:
    基于单片机定时器---年月日时分秒的算法
    按位查询算法---基于Perimiter Sensor
    MFC File crc 计算
    二叉树的层次遍历

    动态规划
    贪心算法 动态规划
    爱信息图床测试
    前端小白的个人习惯和笔记(一)
    过年了,是不是应该写点代码祝福别人
  • 原文地址:https://www.cnblogs.com/lostsea/p/13186797.html
Copyright © 2011-2022 走看看