本机建立Consul数据中心
环境准备
注意:Windows 的路径分隔符是 \
,Unix 和 Linux 是 /
- Windows10
- consul_1.9.6_windows_amd64
- 三个目录模拟3台机器:
- consul\dc1\server1\
- consul\dc1\server2\
- consul\dc1\server3\
- 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脚本,减少手动输入命令)
- 端口表:
- 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: www.rsxedu.com表示启用 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(wwwmeimeitu8.com局域网)
... : 省略号的意思是可以同时加入多个集群
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个结点,那么就是建立成功了。