Scott

macos搭建consul 11 days ago

微服务
3090个字符
共有9人围观

macOS 上搭建 Consul(用于服务发现和配置管理)可以通过以下步骤完成,支持 开发测试生产环境 部署。


1. 安装 Consul

方法 1:使用 Homebrew(推荐)

# 安装 Consul
brew install consul

# 验证安装
consul --version

方法 2:手动下载二进制文件

  1. Consul 官方下载页 选择 macOS 版本。
  2. 解压并移动到 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. 注意事项

  1. 生产环境
    • 至少部署 3 个 Server 节点 避免脑裂。
    • 启用 ACL(访问控制)和 TLS 加密。
  2. 数据持久化
    • 指定 data_dir(如 /var/lib/consul)。
  3. 多数据中心
    • 通过 -join-retry-join 跨数据中心组网。

7. 卸载 Consul

# 停止所有 Consul 进程
pkill consul

# 删除数据(开发模式)
rm -rf /tmp/consul

# 卸载 Homebrew 版本
brew uninstall consul

通过以上步骤,你可以在 macOS 上快速搭建 Consul,并集成到 Kratos 微服务架构中!