官网下载地址https://www.consul.io/downloads.html
添加系统变量 Path
consul agent -server -ui -bootstrap-expect=1 -data-dir=/tmp/consul -node=consul-1 -client=0.0.0.0 -bind=192.168.1.111 -datacenter=dc1
命令解释如下:
其实consul命令大家是可以在网络上搜到它们的定义的,不过我觉得解释的还是太官方,所以,我在这里提供了一份我认为更好的解释。
consul agent:命令头,必须要有。
-server:表面我们现在要启动服务器代理(agent)是服务模式的。Consul Agent的运行模式有两种,Server模式和Client模式。其区别简单来说就是Server模式的Agent可以被选举为Leader,而Client模式的不可以,当然还有其他区别,有兴趣大家可以自行了解。
-ui:consul运行后,会提供一个http://127.0.0.1:8500/ui/的网站,里面存储了Consul Agent各个节点以及注册的服务等相关信息,即数据中心的网页形式体现。这个参数代表是否创建这个网站,这个参数与这个数据中心网站有关。
bind:本机的ip地址,集群内其他代理服务器可以通过这个ip来访问这台电脑的consul代理服务器。
bootstrap-expect:是集群启动条件,指当服务器端模式(Server模式)的代理达到这个数目后,才开始运行。
data-dir:是存放数据中心数据的,该目录必须是稳定的,系统重启后也继续存在的。
datacenter:当前agent的中心数据的名称,默认是dc1。
node:节点在集群中的名称,在一个集群中必须是唯一的,默认是该节点的主机名(代表一个机器)。
client:本地ip地址,这里使用 0.0.0.0 ,就表示这个服务器所有IP都可以,即当这台电脑有俩ip,192.168.1.111和192.168.1.112,那么通过这俩IP都可以访问到这台机器的consul代理服务器。
public static void RegisterConsul()
{
var consulClient = new ConsulClient( p => { p.Address = new Uri($"http://127.0.0.1:8500"); }); //请求注册的 Consul 地址
//这里的这个ip 就是本机的ip,这个端口8500 这个是默认注册服务端口
var httpCheck = new AgentServiceCheck()
{
DeregisterCriticalServiceAfter = TimeSpan.FromSeconds(5),//服务启动多久后注册
Interval = TimeSpan.FromSeconds(10),
HTTP = $"http://localhost:6005/api/Health",
Timeout = TimeSpan.FromSeconds(5)
};
var registration = new AgentServiceRegistration()
{
Checks = new[] { httpCheck },
ID = Guid.NewGuid().ToString(),
Name = "PayService",
Address = "http://localhost/",
Port = 6005,
};
consulClient.Agent.ServiceRegister(registration).Wait();//注册服务
}