macos搭建consul 11 days ago
博客大纲
在 macOS 上搭建 Consul(用于服务发现和配置管理)可以通过以下步骤完成,支持 开发测试 或 生产环境 部署。
1. 安装 Consul
方法 1:使用 Homebrew(推荐)
# 安装 Consul
brew install consul
# 验证安装
consul --version
方法 2:手动下载二进制文件
- 从 Consul 官方下载页 选择 macOS 版本。
- 解压并移动到 PATH:
bash unzip consul_<version>_darwin_amd64.zip sudo mv consul /usr/local/bin/
— ## 2. 启动 Consul 开发模式 ### 单节点模式(开发测试)bash # 启动单节点 Consul(-dev 表示开发模式) consul agent -dev -client=0.0.0.0 # 访问 Web UI(默认端口 8500) open http://localhost:8500
- 参数说明:
-dev
:开发模式(无持久化数据)。-client=0.0.0.0
:允许所有 IP 访问(默认只允许本地)。
3. 生产环境多节点集群
步骤 1:准备配置文件
创建配置文件 config.json
:
{
"datacenter": "dc1",
"bind_addr": "0.0.0.0",
"client_addr": "0.0.0.0",
"data_dir": "/tmp/consul",
"log_level": "INFO",
"server": true,
"bootstrap_expect": 3, // 预期集群节点数
"ui": true, // 启用 Web UI
"retry_join": ["<NODE1_IP>", "<NODE2_IP>", "<NODE3_IP>"]
}
步骤 2:启动集群
在每个节点运行(替换 -node
名称和 -bind
IP):
consul agent \
-config-file=config.json \
-node=consul-server-1 \
-bind=<NODE1_IP> \
-advertise=<NODE1_IP>
步骤 3:验证集群状态
consul members
输出示例:
Node Address Status Type Build Protocol
consul-server-1 192.168.1.100:8301 alive server 1.11.2 2
consul-server-2 192.168.1.101:8301 alive server 1.11.2 2
4. 与 Kratos 集成
Kratos 服务注册到 Consul
在 Kratos 的 main.go
中:
import (
"github.com/go-kratos/kratos/contrib/registry/consul/v2"
"github.com/hashicorp/consul/api"
)
func main() {
// 创建 Consul 客户端
consulClient, err := api.NewClient(api.DefaultConfig())
if err != nil {
panic(err)
}
// 注册到 Consul
reg := consul.New(consulClient)
app := kratos.New(
kratos.Name("user-service"),
kratos.Server(httpSrv, grpcSrv),
kratos.Registrar(reg), // 注册服务
)
}
服务发现(商品服务调用用户服务)
import "github.com/go-kratos/kratos/contrib/registry/consul/v2"
// 通过 Consul 发现用户服务
discover := consul.New(consulClient)
conn, err := grpc.Dial(
"discovery:///user-service",
grpc.WithTransportCredentials(insecure.NewCredentials()),
grpc.WithResolvers(discovery.NewBuilder(discover)),
)
5. 常用命令
命令 | 用途 |
---|---|
consul agent -dev |
启动开发模式 |
consul members |
查看集群成员 |
consul kv put foo bar |
存储键值对 |
consul kv get foo |
读取键值对 |
consul leave |
优雅退出节点 |
6. 注意事项
- 生产环境:
- 至少部署 3 个 Server 节点 避免脑裂。
- 启用 ACL(访问控制)和 TLS 加密。
- 数据持久化:
- 指定
data_dir
(如/var/lib/consul
)。
- 指定
- 多数据中心:
- 通过
-join
或-retry-join
跨数据中心组网。
- 通过
7. 卸载 Consul
# 停止所有 Consul 进程
pkill consul
# 删除数据(开发模式)
rm -rf /tmp/consul
# 卸载 Homebrew 版本
brew uninstall consul
通过以上步骤,你可以在 macOS 上快速搭建 Consul,并集成到 Kratos 微服务架构中!