我已经使用以下命令创建了一个主令牌:
$ 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时,我仍然可以看到所有的I,这意味着即使使用不同的加密密钥,服务器仍然能够通信。八卦加密似乎不能很好地工作。
发布于 2016-05-07 02:48:09
Consul实例将缓存初始密钥并重用它。它存储在local.keyring文件中的serf文件夹中。
这是违反直觉的,但它是documented at least in one place together with the encrypt option。
您需要删除此文件并重新启动Consul才能获得预期的行为。
https://stackoverflow.com/questions/37055546
复制相似问题