以server mode运行

前面所有的实验,consul server全部以dev模式运行,本节将以server mode运行


Server mode

server模式下,需要指定一些参数:

- bootstrap-expect:集群期望的节点数,只有节点数量达到这个值才会选举leader。
- server: 运行在server模式
- data-dir:指定数据目录
- node:指定节点的名称。默认consul使用hostname做为名称
- bind:为该节点绑定一个地址
- config-dir:指定配置文件
- datacenter: 数据中心没名称,
- join:加入到已有的集群中
- ui:使用自带的ui
- ui-dir:指定ui的目录,使用自己定义的ui
- client:指定web  ui、的监听地址,默认127.0.0.1只能本机访问。

停止掉上一节cloud 9运行的consul,以server mode运行:

consul agent -server -bootstrap-expect=1 -node=consul-server -bind=[SERVER-IP] -data-dir=/home/ec2-user/consul -client=0.0.0.0 -ui=true -http-port=8080
  • 如果不指定-ui=true,server mode不会提供UI
  • 由于我们目前仅有一个server节点,所以设置-bootstrap-expect=1

image-20211017104931922

将参数文件化

现在启动server时,大概有七八个参数,不容易阅读与维护。

我们使用configuration file方式来传入参数。

新建/home/ec2-user/consul/config/config-file.hcl,内容如下

data_dir =  "/home/ec2-user/consul"
bind_addr = "SERVER-IP"  # replace your ip here
client_addr = "0.0.0.0"
bootstrap_expect = 1
node_name = "consul-server"
ui = true
server = true
ports {
  http = 8080
}

重新启动consul agent:

consul agent -config-dir=/home/ec2-user/consul/config

image-20211017110309481

集群照常可以访问