mirror of https://github.com/status-im/consul.git
agent: Support protocol version setting
This commit is contained in:
parent
1f8f875b12
commit
ffca4f5544
|
@ -165,6 +165,9 @@ func (a *Agent) consulConfig() *consul.Config {
|
||||||
if a.config.Bootstrap {
|
if a.config.Bootstrap {
|
||||||
base.Bootstrap = true
|
base.Bootstrap = true
|
||||||
}
|
}
|
||||||
|
if a.config.Protocol > 0 {
|
||||||
|
base.ProtocolVersion = uint8(a.config.Protocol)
|
||||||
|
}
|
||||||
|
|
||||||
// Setup the ServerUp callback
|
// Setup the ServerUp callback
|
||||||
base.ServerUp = a.state.ConsulServerUp
|
base.ServerUp = a.state.ConsulServerUp
|
||||||
|
|
|
@ -61,6 +61,7 @@ func (c *Command) readConfig() *Config {
|
||||||
cmdFlags.BoolVar(&cmdConfig.Server, "server", false, "run agent as server")
|
cmdFlags.BoolVar(&cmdConfig.Server, "server", false, "run agent as server")
|
||||||
cmdFlags.BoolVar(&cmdConfig.Bootstrap, "bootstrap", false, "enable server bootstrap mode")
|
cmdFlags.BoolVar(&cmdConfig.Bootstrap, "bootstrap", false, "enable server bootstrap mode")
|
||||||
cmdFlags.StringVar(&cmdConfig.StatsiteAddr, "statsite", "", "address of statsite instance")
|
cmdFlags.StringVar(&cmdConfig.StatsiteAddr, "statsite", "", "address of statsite instance")
|
||||||
|
cmdFlags.IntVar(&cmdConfig.Protocol, "protocol", -1, "protocol version")
|
||||||
if err := cmdFlags.Parse(c.args); err != nil {
|
if err := cmdFlags.Parse(c.args); err != nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -97,6 +97,9 @@ type Config struct {
|
||||||
// metrics will be streamed to that instance.
|
// metrics will be streamed to that instance.
|
||||||
StatsiteAddr string `mapstructure:"statsite_addr"`
|
StatsiteAddr string `mapstructure:"statsite_addr"`
|
||||||
|
|
||||||
|
// Protocol is the Consul protocol version to use.
|
||||||
|
Protocol int `mapstructure:"protocol"`
|
||||||
|
|
||||||
// Checks holds the provided check definitions
|
// Checks holds the provided check definitions
|
||||||
Checks []*CheckDefinition `mapstructure:"-"`
|
Checks []*CheckDefinition `mapstructure:"-"`
|
||||||
|
|
||||||
|
@ -122,6 +125,7 @@ func DefaultConfig() *Config {
|
||||||
SerfLanPort: consul.DefaultLANSerfPort,
|
SerfLanPort: consul.DefaultLANSerfPort,
|
||||||
SerfWanPort: consul.DefaultWANSerfPort,
|
SerfWanPort: consul.DefaultWANSerfPort,
|
||||||
Server: false,
|
Server: false,
|
||||||
|
Protocol: consul.ProtocolVersionMax,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -284,6 +288,9 @@ func MergeConfig(a, b *Config) *Config {
|
||||||
if b.LogLevel != "" {
|
if b.LogLevel != "" {
|
||||||
result.LogLevel = b.LogLevel
|
result.LogLevel = b.LogLevel
|
||||||
}
|
}
|
||||||
|
if b.Protocol > 0 {
|
||||||
|
result.Protocol = b.Protocol
|
||||||
|
}
|
||||||
if b.NodeName != "" {
|
if b.NodeName != "" {
|
||||||
result.NodeName = b.NodeName
|
result.NodeName = b.NodeName
|
||||||
}
|
}
|
||||||
|
|
|
@ -118,6 +118,10 @@ The options below are all specified on the command-line.
|
||||||
various telemetry information to that instance for aggregation. This can be used to capture various
|
various telemetry information to that instance for aggregation. This can be used to capture various
|
||||||
runtime information.
|
runtime information.
|
||||||
|
|
||||||
|
* `-protocol` - The Consul protocol version to use. This defaults to the latest
|
||||||
|
version. This should be set only when [upgrading](/docs/upgrading.html).
|
||||||
|
You can view the protocol versions supported by Consul by running `serf -v`.
|
||||||
|
|
||||||
## Configuration Files
|
## Configuration Files
|
||||||
|
|
||||||
In addition to the command-line options, configuration can be put into
|
In addition to the command-line options, configuration can be put into
|
||||||
|
|
|
@ -34,7 +34,7 @@ upgrading, see the [upgrading page](/docs/upgrading.html).
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>0.1</td>
|
<td>0.1</td>
|
||||||
<td>0</td>
|
<td>1</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
|
|
@ -22,13 +22,13 @@ below, assume you're running version A of Consul, and then version B comes out.
|
||||||
|
|
||||||
2. Shut down version A, and start version B with the `-protocol=PREVIOUS`
|
2. Shut down version A, and start version B with the `-protocol=PREVIOUS`
|
||||||
flag, where "PREVIOUS" is the protocol version of version A (which can
|
flag, where "PREVIOUS" is the protocol version of version A (which can
|
||||||
be discovered by running `consul -v` or `consul members -detailed`).
|
be discovered by running `consul -v` or `consul members`).
|
||||||
|
|
||||||
3. Once all nodes are running version B, go through every node and restart
|
3. Once all nodes are running version B, go through every node and restart
|
||||||
the version B agent _without_ the `-protocol` flag.
|
the version B agent _without_ the `-protocol` flag.
|
||||||
|
|
||||||
4. Done! You're now running the latest Consul agent speaking the latest protocol.
|
4. Done! You're now running the latest Consul agent speaking the latest protocol.
|
||||||
You can verify this is the case by running `consul members -detailed` to
|
You can verify this is the case by running `consul members` to
|
||||||
make sure all members are speaking the same, latest protocol version.
|
make sure all members are speaking the same, latest protocol version.
|
||||||
|
|
||||||
The key to making this work is the [protocol compatibility](/docs/compatibility.html)
|
The key to making this work is the [protocol compatibility](/docs/compatibility.html)
|
||||||
|
@ -46,7 +46,7 @@ running `consul -v`. You'll see output similar to that below:
|
||||||
```
|
```
|
||||||
$ consul -v
|
$ consul -v
|
||||||
Consul v0.1.0
|
Consul v0.1.0
|
||||||
Agent Protocol: 1 (Understands back to: 0)
|
Consul Protocol: 1 (Understands back to: 1)
|
||||||
```
|
```
|
||||||
|
|
||||||
This says the version of Consul as well as the latest protocol version (1,
|
This says the version of Consul as well as the latest protocol version (1,
|
||||||
|
|
Loading…
Reference in New Issue