公司测试环境consul集群部署
环境
系统版本:centos7
节点信息:
节点1:192.168.7.154
节点2:192.168.7.155
节点3:192.168.7.156
部署过程
在192.168.7.154 上执行
创建consul的目录
mkdir /data/consul/{bin,conf,data,logs}
在conf下创建配置文件
acl.json
{ "primary_datacenter": "TEST-01", "acl": { "enabled": true, "default_policy": "deny", "down_policy": "extend-cache" } }
dns.json
{ "dns_config":{ "allow_stale":true }, "domain":"test.com" # 这里注意,consul 的dns功能可以把服务解析到对应的解析,域名规则为:服务名字.service.test.com。如果不设置,默认为服务名字.service.consul。例如服务为web-msc,那么域名就是web-msc.service.test.com }
retry_join.json
{ "retry_join": [ "192.168.7.155", "192.168.7.156" ] }
server.json
{ "addresses": { "http": "0.0.0.0", # Consul的HTTP接口将监听所有网络接口
"dns": "0.0.0.0" # Consul的DNS接口将监听所有网络接口 }, "bind_addr": "0.0.0.0", # 这是Consul agent绑定的IP地址。设置为 "0.0.0.0" 意味着它将绑定到所有可用的网络接口。 "bootstrap_expect": 3, # 通常用于初始化Consul集群。它表示在集群中期望有多少个server节点,以便自动bootstrap(即选举一个leader)。在这个例子中,至少需要3个server节点在线并达到一致性状态,集群才会开始提供服务 "datacenter": "TEST-01", # 该Consul节点所属的数据中心名称。 "data_dir": "/data/consul/data", # 是Consul存储状态和其他数据的目录 "enable_syslog": false, # 表示不将日志输出到syslog "leave_on_terminate": false, # false,表示当agent终止时,它不会优雅地离开集群 "log_level": "warn", # 只记录警告及以上的日志信息 "node_name": "SERVER-01", # 这是该Consul节点的名称 "retry_interval": "10s", # Consul在重试某些操作(如连接其他节点)之前的等待时间 "server": true, # 作为Consul集群的server节点运行的 "skip_leave_on_interrupt": false, # 这通常与 leave_on_terminate 相关,用于控制当接收到中断信号时是否离开集群 "ui": true, # 表示启用Consul的Web UI "reconnect_timeout": "72h", # 表示如果连接断开,agent将尝试在72小时内重新连接 "log_file": "/data/consul/logs/", # Consul的日志文件将被写入这个目录 "log_rotate_duration": "24h", # 表示日志文件的轮换周期为24小时 "disable_update_check": true, # 禁用Consul的版本更新检查 "node_meta": { "location": "beijing" }, "performance": { "raft_multiplier": 1 }, "ports": { "http": 8500, # 设置为 8500,这是Consul的HTTP API和Web UI的默认端口 "dns": -1, # -1,表示不启用DNS服务器;如果需要用服务器,则改为对应的端口号,通常为8600 注意:防火墙规则一定要同时开启tcp和udp的8600端口 "https": -1, # -1,表示不启用HTTPS "grpc": -1, # -1,表示不启用gRPC "serf_wan": -1 # -1,表示不启用WAN(广域网)上的Serf通信 } }
在192.168.7.155 上执行
创建consul的目录
mkdir /data/consul/{bin,conf,data,logs}
在conf下创建配置文件
acl.json
{ "primary_datacenter": "TEST-01", "acl": { "enabled": true, "default_policy": "deny", "down_policy": "extend-cache" } }
dns.json
{ "dns_config":{ "allow_stale":true }, "domain":"xxxxxx.com" }
retry_join.json
{ "retry_join": [ "192.168.7.154", "192.168.7.156" ] }
server.json
{ "addresses": { "http": "0.0.0.0" }, "bind_addr": "0.0.0.0", "bootstrap_expect": 3, "datacenter": "TEST-01", "data_dir": "/data/consul/data", "enable_syslog": false, "leave_on_terminate": false, "log_level": "warn", "node_name": "SERVER-02", "retry_interval": "10s", "server": true, "skip_leave_on_interrupt": false, "ui": true, "reconnect_timeout": "72h", "log_file": "/data/consul/logs/", "log_rotate_duration": "24h", "disable_update_check": true, "node_meta": { "location": "beijing" }, "performance": { "raft_multiplier": 1 }, "ports": { "http": 8500, "dns": -1, "https": -1, "grpc": -1, "serf_wan": -1 } }
在192.168.7.156 上执行
创建consul的目录
mkdir /data/consul/{bin,conf,data,logs}
在conf下创建配置文件
acl.json
{ "primary_datacenter": "TEST-01", "acl": { "enabled": true, "default_policy": "deny", "down_policy": "extend-cache" } }
dns.json
{ "dns_config":{ "allow_stale":true }, "domain":"xxxxx.com" }
retry_join.json
{ "retry_join": [ "192.168.7.155", "192.168.7.154" ] }
server.json
{ "addresses": { "http": "0.0.0.0" }, "bind_addr": "0.0.0.0", "bootstrap_expect": 3, "datacenter": "TEST-01", "data_dir": "/data/consul/data", "enable_syslog": false, "leave_on_terminate": false, "log_level": "warn", "node_name": "SERVER-03", "retry_interval": "10s", "server": true, "skip_leave_on_interrupt": false, "ui": true, "reconnect_timeout": "72h", "log_file": "/data/consul/logs/", "log_rotate_duration": "24h", "disable_update_check": true, "node_meta": { "location": "beijing" }, "performance": { "raft_multiplier": 1 }, "ports": { "http": 8500, "dns": -1, "https": -1, "grpc": -1, "serf_wan": -1 } }
启动
此模式是以server模式启动
在所有节点上,进入 /data/consul/bin
执行命令
nohup consul agent -config-dir=/data/consul/conf &
解释这个启动命令
consul agent -config-dir=/data/consul/conf 这个命令用于启动Consul agent,并指定一个目录来加载配置文件。这里的 -config-dir 参数告诉Consul从这个目录读取配置文件。 至于这个命令具体启动的是哪种模式(开发模式、服务器模式等),实际上并不直接由 -config-dir 参数决定。Consul agent的模式通常是通过其他参数来设定的,比如 -dev 用于开发模式,而 -server 用于服务器模式。 在这个命令中,并没有明确指定是开发模式还是服务器模式,Consul agent会根据配置文件中定义的配置以及可能的其他命令行参数来确定其运行模式。 总的来说,consul agent -config-dir=/data/consul/conf 这个命令本身并不直接指定Consul agent的运行模式,而是指定了配置文件所在的目录。Consul agent的具体运行模式需要通过配置文件中的设置和/或其他命令行参数来确定。
常用的启动参数说明:
Consul作为一个分布式服务发现和配置工具,提供了多种启动参数以支持不同的配置和使用场景。以下是一些常用的Consul启动参数: 1. -bind=<address>: 指定Consul节点绑定的IP地址或网络接口。例如:-bind=192.168.0.1。 2. -client=<address>: 指定Consul节点监听客户端请求的IP地址或网络接口。例如:`-client=127.0.0.1。 3. -data-dir=<path>: 指定Consul节点的数据存储目录。例如:`-data-dir=/opt/consul/data。 4. -config-file=<file>: 指定Consul的配置文件路径。例如:`-config-file=/etc/consul/config.json。 5. -server: 标记当前节点作为Consul集群中的服务器节点。通常在集群中的多个节点中的少数几个节点上使用。 6. -bootstrap: 将当前节点配置为引导节点,用于引导其他节点加入集群。 7. -join=<address>: 指定要加入的Consul集群中的已知节点的IP地址。可以使用该参数多次添加多个节点。例如:-join=192.168.0.1 -join=192.168.0.2。 8. -dns-port=<port>: 指定Consul DNS服务器监听的端口号。默认为53。 9. -http-port=<port>: 指定Consul HTTP API监听的端口号。默认为8500。 10. -ui: 启动Consul Web UI,提供可视化管理和监控界面。 11. -log-level=<level>: 设置Consul节点的日志级别。可选值包括"trace"、"debug"、"info"、"warn"和"err"。 这只是一些常见的Consul启动参数,您可以根据具体的需求和场景选择适合您的参数组合。使用-h或--help参数可以查看更多的启动参数和说明。 请注意,在使用Consul启动参数时,根据您的操作系统和部署方式,可能需要在命令行或配置文件中指定相应的参数。建议参考Consul的官方文档以了解更多的启动参数和详细配置。
bootstrap重点说明一下
在Consul中,"bootstrap"是一个特殊的配置选项,用于指定一个Consul集群中的初始引导节点。在Consul集群启动时,如果没有已知的节点,或者集群中没有其他运行的节点,那么一个节点可以被配置为"bootstrap"节点,即引导节点。 引导节点具有特殊的作用,它会扮演起始点的角色,用于引导其他节点加入集群。当一个节点被配置为引导节点时,它将负责初始化集群的状态,并接受其他节点的加入请求。 请注意,只有在创建全新的集群或者需要添加一个新的节点时,才需要使用引导节点。一旦集群中已经存在运行的节点,那么新节点可以通过加入现有的节点来加入集群,而不需要再使用引导节点。 当引导节点启动时,它会生成一个唯一的集群标识(集群ID),并将该标识分发给其他节点。这有助于确保集群中所有节点都具有相同的标识,以保持集群的一致性。 为了配置一个引导节点,您可以在Consul的配置文件(如config.json)中添加以下配置项: ```json { "bootstrap": true } ``` 示例配置文件中的其他配置选项可能包括节点的名称、数据目录、监听地址等等。根据您的需求,您可以根据Consul的官方文档进行更详细的配置。 需要注意的是,将节点配置为引导节点时,要小心确保仅有一个节点被配置为引导节点。同时,在将节点配置为引导节点之前,请确保您了解引导节点的职责和影响,并充分理解您的集群环境和需求。
以client模式启动
要以客户端模式启动Consul,请按照以下步骤进行操作:
1. 安装Consul:根据您的操作系统,从Consul官方网站(https://www.consul.io/downloads)下载Consul的二进制文件,并按照官方文档进行安装。
2. 创建配置文件:创建一个Consul客户端的配置文件,通常命名为"config.json"或"consul.json"。可以根据需要进行配置,下面是一个示例配置文件的基本结构:
{ "datacenter": "my-datacenter", "data_dir": "/path/to/data/directory", "log_level": "INFO", "retry_join": ["server1", "server2", "server3"] }
请根据你的需求进行相应的配置,确保适应你的环境和集群设置。重要的配置项包括"datacenter"(指定数据中心名称)和"retry_join"(指定Consul服务器的地址列表)。
3. 启动Consul客户端:使用以下命令启动Consul客户端:
consul agent -client -config-file=config.json
其中,"-client"选项指示Consul以客户端模式启动。"config.json"是您在上一步创建的配置文件的路径。
Consul客户端将以客户端模式启动,并连接到指定的Consul服务器。它将通过与Consul服务器通信来执行服务发现、健康检查和配置管理等操作。
请注意,Consul客户端通常与应用程序一起部署在各个节点上,并在应用程序启动时自动运行。您可以根据需要在应用程序的启动脚本或配置文件中添加启动Consul客户端的命令。
这只是Consul客户端的基本启动方式。根据您的需求和环境,您可能需要配置更多选项,例如注册服务、执行健康检查等。有关更详细的使用方法,请参阅Consul的官方文档。