本机建立Consul数据中心

原创
06/10 11:59
阅读数 1K

本机建立Consul数据中心

环境准备

注意:Windows 的路径分隔符是 \,Unix 和 Linux 是 /

  1. Windows10
  2. consul_1.9.6_windows_amd64
  3. 三个目录模拟3台机器:
    • consul\dc1\server1\
    • consul\dc1\server2\
    • consul\dc1\server3\
  4. server 目录中的内容:
    • consul\dc1\server1\config\basic.json (配置文件,即 -config-dir)
    • consul\dc1\server1\data\ (数据目录,即 -data-dir)
    • consul\dc1\server1\consul.exe (Consul 程序文件)
    • consul\dc1\server1\bootstrap.ps1 (引导集群的PowerShell脚本,减少手动输入命令)
    • consul\dc1\server1\join.ps1 (加入集群的PowerShell脚本,减少手动输入命令)
    • consul\dc1\server1\members.ps1 (查看集群中结点信息的PowerShell脚本,减少手动输入命令)
  5. 端口表:
    • server1: 10000 + Consul 默认端口,如默认的 8500 会设置为 18500
    • server2: 20000 + Consul 默认端口,如默认的 8500 会设置为 28500
    • server3: 30000 + Consul 默认端口,如默认的 8500 会设置为 38500

配置文件和脚本内容

(一)consul\dc1\server1

1) .\config\basic.json

{
  "datacenter": "dc1",
  "node_name": "server1",
  "bind_addr": "127.0.0.1",
  "ports": {
    "dns": 18600,        /*默认:8600*/
    "http": 18500,       /*默认:8500*/
    "https": 18501,      /*默认:8501,默认是禁用的*/
    "grpc": 18502,       /*默认:8502,默认是禁用的*/
    "serf_lan": 18301,   /*默认:8301*/
    "serf_wan": 18302,   /*默认:8302*/
    "server": 18300      /*默认:8300*/
  },
  "client_addr": "0.0.0.0"
}

2) .\bootstrap.ps1

.\consul.exe agent -server -bootstrap-expect 3 -config-dir=".\config" -data-dir=".\data" -ui

-server: 表示启动的是 Consul 的服务器
-bootstrap-expect 3: 表示集群最少需要 3 台服务器在运行才算有效
-config-dir=".\config": 表示配置文件的目录为 ".\config"
-data-dir=".\data": 表示 Consul 的数据存储在 ".\data" 目录中 -ui: 表示启用 Consul 的 Web UI ,通过浏览器访问 http://<ip>:8500/ui 可以看到 Web 界面

3) .\join.ps1

我们计划用 server2 和 server3 加入到 server1,所以 server1 不需要 join.ps1 脚本

4) .\members.ps1

.\consul.exe members -http-addr="127.0.0.1:18500"

命令的意思:查看 server1 所在集群的结点信息,默认只有 server1 自身

-http-addr: 表示操作的服务器的HTTP端口地址,这里是 server1,所以是 127.0.0.1:18500

(二)consul\dc1\server2

1) .\config\basic.json

{
  "datacenter": "dc1",
  "node_name": "server2",
  "bind_addr": "127.0.0.1",
  "ports": {
    "dns": 28600,        /*默认:8600*/
    "http": 28500,       /*默认:8500*/
    "https": 28501,      /*默认:8501,默认是禁用的*/
    "grpc": 28502,       /*默认:8502,默认是禁用的*/
    "serf_lan": 28301,   /*默认:8301*/
    "serf_wan": 28302,   /*默认:8302*/
    "server": 28300      /*默认:8300*/
  },
  "client_addr": "0.0.0.0"
}

2) .\bootstrap.ps1

.\consul.exe agent -server -bootstrap-expect 3 -config-dir=".\config" -data-dir=".\data" -ui

-server: 表示启动的是 Consul 的服务器
-bootstrap-expect 3: 表示集群最少需要 3 台服务器在运行才算有效
-config-dir=".\config": 表示配置文件的目录为 ".\config"
-data-dir=".\data": 表示 Consul 的数据存储在 ".\data" 目录中 -ui: 表示启用 Consul 的 Web UI ,通过浏览器访问 http://<ip>:8500/ui 可以看到 Web 界面

3) .\join.ps1

# 命令格式:consul join [options] address ...

.\consul.exe join -http-addr="127.0.0.1:28500" 127.0.0.1:18301 

命令的意思:server2 加入到 server1 中

-http-addr : 表示操作的服务器的HTTP端口地址,这里是 server2,所以是 127.0.0.1:28500
address : 表示当前被操作的服务器,想要加入到其中的服务器的地址,LAN或者WAN,比如 server2 加入到 server1,可以通过 consul members 命令查看 server 的地址,咱们这里是在本机上操作的,所以是 LAN(局域网)
... : 省略号的意思是可以同时加入多个集群

4) .\members.ps1

.\consul.exe members -http-addr="127.0.0.1:28500"

命令的意思:查看 server2 所在集群的结点信息,默认只有 server2 自身

-http-addr: 表示操作的服务器的HTTP端口地址,这里是 server2,所以是 127.0.0.1:28500

(三)consul\dc1\server2

1) .\config\basic.json

{
  "datacenter": "dc1",
  "node_name": "server2",
  "bind_addr": "127.0.0.1",
  "ports": {
    "dns": 38600,        /*默认:8600*/
    "http": 38500,       /*默认:8500*/
    "https": 38501,      /*默认:8501,默认是禁用的*/
    "grpc": 38502,       /*默认:8502,默认是禁用的*/
    "serf_lan": 38301,   /*默认:8301*/
    "serf_wan": 38302,   /*默认:8302*/
    "server": 38300      /*默认:8300*/
  },
  "client_addr": "0.0.0.0"
}

2) .\bootstrap.ps1

.\consul.exe agent -server -bootstrap-expect 3 -config-dir=".\config" -data-dir=".\data" -ui

-server: 表示启动的是 Consul 的服务器
-bootstrap-expect 3: 表示集群最少需要 3 台服务器在运行才算有效
-config-dir=".\config": 表示配置文件的目录为 ".\config"
-data-dir=".\data": 表示 Consul 的数据存储在 ".\data" 目录中 -ui: 表示启用 Consul 的 Web UI ,通过浏览器访问 http://<ip>:8500/ui 可以看到 Web 界面

3) .\join.ps1

# 命令格式:consul join [options] address ...

.\consul.exe join -http-addr="127.0.0.1:38500" 127.0.0.1:18301 

命令的意思:server3 加入到 server1 中

-http-addr : 表示操作的服务器的HTTP端口地址,这里是 server3,所以是 127.0.0.1:38500
address : 表示当前被操作的服务器,想要加入到其中的服务器的地址,LAN或者WAN,比如 server3 加入到 server1,可以通过 consul members 命令查看 server 的地址,咱们这里是在本机上操作的,所以是 LAN(局域网)
... : 省略号的意思是可以同时加入多个集群

4) .\members.ps1

.\consul.exe members -http-addr="127.0.0.1:38500"

命令的意思:查看 server3 所在集群的结点信息,默认只有 server3 自身

-http-addr: 表示操作的服务器的HTTP端口地址,这里是 server3,所以是 127.0.0.1:38500

实验步骤

步骤1 - 分别启动 server1 、server2、server3

打开 3 个 PowerShell 终端,每个终端进入 1 个server目录,逐个运行目录中的 bootstrap.ps1 脚本。
启动后不要关闭终端。

步骤2 - 建立集群

打开 2 个新的 PowerShell 终端,分别进入 server2 和 server3 目录,并运行目录中的 join.ps1 脚本。

步骤3 - 验证集群

打开 1 个新的 PowerShell 终端,在任意一个 server 的目录中,运行 members.ps1 脚本,查看集群结点,如果有3个结点,那么就是建立成功了。

展开阅读全文
打赏
0
3 收藏
分享
加载中
更多评论
打赏
0 评论
3 收藏
0
分享
返回顶部
顶部