我使用以下命令创建了一个主令牌:
$ consul keygen
G74SM8N9NUc4meaHfA7CFg==
然后,我使用以下config.json
:
{
"server": true,
"datacenter": "consul",
"data_dir": "/var/consul",
"log_level": "INFO",
"enable_syslog": true,
"disable_update_check": true,
"client_addr": "0.0.0.0",
"bootstrap": true,
"leave_on_terminate": true,
"encrypt": "G74SM8N9NUc4meaHfA7CFg=="
}
引导服务器的输出如下:
Node name: 'abcd'
Datacenter: 'consul'
Server: true (bootstrap: true)
Client Addr: 0.0.0.0 (HTTP: 8500, HTTPS: -1, DNS: 8600, RPC: 8400)
Cluster Addr: x.x.x.x (LAN: 8301, WAN: 8302)
Gossip encrypt: true, RPC-TLS: false, TLS-Incoming: false
Atlas: <disabled>
然后,我添加了一个新服务器作为常规的consul服务器,其中包含以下config.json
:
{
"server": true,
"datacenter": "consul",
"data_dir": "/var/consul",
"log_level": "INFO",
"enable_syslog": true,
"disable_update_check": true,
"client_addr": "0.0.0.0",
"bootstrap": false,
"leave_on_terminate": true,
"ui_dir": "/usr/local/bin/consul_ui",
"check_update_interval": "0s",
"ports": {
"dns": 8600,
"http": 8500,
"https": 8700,
"rpc": 8400,
"serf_lan": 8301,
"serf_wan": 8302,
"server": 8300
},
"dns_config": {
"allow_stale": true,
"enable_truncate": true,
"only_passing": true,
"max_stale": "02s",
"node_ttl": "30s",
"service_ttl": {
"*": "10s"
}
},
"advertise_addr": "y.y.y.y",
"encrypt": "G74SM8N9NUc4meaHfA7CFg==",
"retry_join": [
"x.x.x.x",
"y.y.y.y"
]
}
注意:此处,x.x.x.x
是引导服务器的IP地址,y.y.y.y
是常规服务器的IP地址。
出于测试目的,我更改了其中一台服务器上的加密密钥。而且,当我consul members
时,我仍然可以看到所有IP,这意味着即使使用不同的加密密钥,服务器仍然能够进行通信。似乎八卦加密工作不正常。
答案 0 :(得分:1)
Consul实例将缓存初始密钥并重新使用它。它存储在文件serf
中的local.keyring
文件夹中。
这是违反直觉的,但它是documented at least in one place together with the encrypt option。
您需要删除此文件并重新启动Consul才能获得预期的行为。