go-micro线上部署,注册服务到etcd

线上部署

在线上部署就不能使用go run main.go命令了,需要打包编译成可执行文件。 linux系统需要这样编译:GOOS=linux go build -o service main.go,就是在windows系统上进行交叉编译,可根据自己服务器情况修改参数。

go build -o service main.go
go build -o api api/api.go

线上的restful api也不能使用micro api了。需要选择适合自己的web服务框架,在web服务中调用api服务。

etcd启动

线上etcd和本地启动有区别,如果etcd是单独的服务器,那么在不加任何参数的情况下直接启动,那基本是调不通的。

$ ./service --registry=etcd --registry_address=xx.xx.xx.xx:2379
2020-03-17 17:04:42 Starting [service] go.micro.srv.user
2020-03-17 17:04:42 Server [grpc] Listening on [::]:48493
2020-03-17 17:04:42 Registry [etcd] Registering node: go.micro.srv.user-f32a2950-8e59-44d4-ac86-f4e1ec103395
{"level":"warn","ts":"2020-03-17T17:04:47.849+0800","caller":"clientv3/retry_interceptor.go:61","msg":"retrying of unary invoker failed","target":"endpoint://client-e45decee-12bf-4a9b-a7ab-f92eece39420/xx.xx.xx.xx:2379","attempt":0,"error":"rpc error: code = DeadlineExceeded desc = latest connection error: connection error: desc = \"transport: Error while dialing dial tcp xx.xx.xx.xx:2379: connect: connection refused\""}
2020-03-17 17:04:47 Server register error: %!(EXTRA context.deadlineExceededError=context deadline exceeded)

这就是错误示例。 为了能顺利看到胜利的结果,需要这样启动etcd:

$ ./etcd --listen-client-urls http://0.0.0.0:2379 --advertise-client-urls http://0.0.0.0:2379 --listen-peer-urls http://0.0.0.0:2380 --initial-advertise-peer-urls http://0.0.0.0:2380  --initial-cluster my-etcd-1=http://0.0.0.0:2380

将ip为0.0.0.0可以理解为不限制连接机器(真正的生产不推荐这样设置)。 服务启动参数--registry_address=xx.xx.xx.xx:2379不能带http://

项目地址:https://github.com/yuedun/micro-service